class ThreeScaleToolbox::Commands::ProductCommand::CopySubcommand
Public Class Methods
command()
click to toggle source
# File lib/3scale_toolbox/commands/product_command/copy_command.rb, line 10 def self.command Cri::Command.define do name 'copy' usage 'copy [opts] -s <source-remote> -d <target-remote> <source-product>' summary 'Copy product' description <<-HEREDOC This command makes a copy of the referenced product. Target product will be searched by source product system name. System name can be overriden with `--target-system-name` option. If a product with the selected `system_name` is not found, it will be created. \n Components of the product being copied: \nproduct configuration \nproduct settings \nproduct methods&metrics: Only missing metrics&methods will be created. \nproduct mapping rules: Only missing mapping rules will be created. \nproduct application plans & pricing rules & limits: Only missing application plans & pricing rules & limits will be created. \nproduct application usage rules \nproduct policies \nproduct backends: Only missing backends will be created. \nproduct activedocs: Only missing activedocs will be created. HEREDOC option :s, :source, '3scale source instance. Url or remote name', argument: :required option :d, :destination, '3scale target instance. Url or remote name', argument: :required option :t, 'target-system-name', 'Target system name. Default to source system name', argument: :required param :source_product runner CopySubcommand end end
workflow(context)
click to toggle source
# File lib/3scale_toolbox/commands/product_command/copy_command.rb, line 40 def self.workflow(context) tasks = [] tasks << ThreeScaleToolbox::Commands::ServiceCommand::CopyCommand::CreateOrUpdateTargetServiceTask.new(context) tasks << CopyCommand::DeleteExistingTargetBackendUsagesTask.new(context) tasks << CopyCommand::CopyBackendsTask.new(context) tasks << ThreeScaleToolbox::Commands::ServiceCommand::CopyCommand::CopyServiceProxyTask.new(context) tasks << ThreeScaleToolbox::Commands::ServiceCommand::CopyCommand::CopyMethodsTask.new(context) tasks << ThreeScaleToolbox::Commands::ServiceCommand::CopyCommand::CopyMetricsTask.new(context) tasks << ThreeScaleToolbox::Commands::ServiceCommand::CopyCommand::DestroyMappingRulesTask.new(context) tasks << ThreeScaleToolbox::Commands::ServiceCommand::CopyCommand::CopyMappingRulesTask.new(context) tasks << ThreeScaleToolbox::Commands::ServiceCommand::CopyCommand::CopyApplicationPlansTask.new(context) tasks << ThreeScaleToolbox::Commands::ServiceCommand::CopyCommand::CopyLimitsTask.new(context) tasks << ThreeScaleToolbox::Commands::ServiceCommand::CopyCommand::CopyPoliciesTask.new(context) tasks << ThreeScaleToolbox::Commands::ServiceCommand::CopyCommand::CopyPricingRulesTask.new(context) tasks << ThreeScaleToolbox::Commands::ServiceCommand::CopyCommand::CopyActiveDocsTask.new(context) tasks.each(&:call) # This should be the last step ThreeScaleToolbox::Commands::ServiceCommand::CopyCommand::BumpProxyVersionTask.new(service: context[:target]).call end
Public Instance Methods
run()
click to toggle source
# File lib/3scale_toolbox/commands/product_command/copy_command.rb, line 61 def run self.class.workflow(context) end
Private Instance Methods
context()
click to toggle source
# File lib/3scale_toolbox/commands/product_command/copy_command.rb, line 67 def context @context ||= create_context end
create_context()
click to toggle source
# File lib/3scale_toolbox/commands/product_command/copy_command.rb, line 71 def create_context { source_remote: threescale_client(fetch_required_option(:source)), target_remote: threescale_client(fetch_required_option(:destination)), source_service_ref: arguments[:source_product], delete_mapping_rules: true, option_target_system_name: options[:'target-system-name'] } end