class ThreeScaleToolbox::Commands::ServiceCommand::CopyCommand::CopyPricingRulesTask

Public Instance Methods

call() click to toggle source
# File lib/3scale_toolbox/commands/service_command/copy_command/copy_pricingrules_task.rb, line 8
def call
  plan_mapping = Helper.application_plan_mapping(source.plans, target.plans)
  plan_mapping.each do |source_plan, target_plan|
    missing_pricing_rules = compute_missing_pricing_rules(source_plan.pricing_rules, target_plan.pricing_rules)
    missing_pricing_rules.each do |pricing_rule|
      target_plan.create_pricing_rule(metrics_map.fetch(pricing_rule.metric_id), pricing_rule.attrs)
    end
    logger.info "Missing #{missing_pricing_rules.size} pricing rules from target application plan " \
      "#{target_plan.id}. Source plan #{source_plan.id}"

    plans_report[target_plan.system_name] = {'application_plan_id' => target_plan.id} unless plans_report.has_key? target_plan.system_name
    plans_report[target_plan.system_name].merge!({'missing_pricing_rules_created' => missing_pricing_rules.size})
  end
end

Private Instance Methods

compute_missing_pricing_rules(source_pricing_rules, target_pricing_rules) click to toggle source
# File lib/3scale_toolbox/commands/service_command/copy_command/copy_pricingrules_task.rb, line 29
def compute_missing_pricing_rules(source_pricing_rules, target_pricing_rules)
  ThreeScaleToolbox::Helper.array_difference(source_pricing_rules, target_pricing_rules) do |src, target_pr|
    src.cost_per_unit == target_pr.cost_per_unit &&
      src.min == target_pr.min &&
      src.max == target_pr.max &&
      metrics_map.fetch(src.metric_id) == target_pr.metric_id
  end
end
metrics_map() click to toggle source
# File lib/3scale_toolbox/commands/service_command/copy_command/copy_pricingrules_task.rb, line 25
def metrics_map
  @metrics_map ||= source.metrics_mapping(target)
end