3scale_toolbox 0.15.0 → 0.16.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (97) hide show
  1. checksums.yaml +4 -4
  2. data/3scale_toolbox.gemspec +1 -1
  3. data/README.md +4 -1
  4. data/lib/3scale_toolbox.rb +0 -1
  5. data/lib/3scale_toolbox/cli.rb +4 -0
  6. data/lib/3scale_toolbox/cli/custom_table_printer.rb +32 -0
  7. data/lib/3scale_toolbox/cli/json_printer.rb +13 -0
  8. data/lib/3scale_toolbox/cli/output_flag.rb +20 -0
  9. data/lib/3scale_toolbox/cli/yaml_printer.rb +13 -0
  10. data/lib/3scale_toolbox/commands.rb +5 -1
  11. data/lib/3scale_toolbox/commands/activedocs_command/apply_command.rb +33 -10
  12. data/lib/3scale_toolbox/commands/activedocs_command/create_command.rb +22 -7
  13. data/lib/3scale_toolbox/commands/activedocs_command/list_command.rb +10 -17
  14. data/lib/3scale_toolbox/commands/application_command/apply_command.rb +27 -4
  15. data/lib/3scale_toolbox/commands/application_command/create_command.rb +16 -1
  16. data/lib/3scale_toolbox/commands/application_command/list_command.rb +10 -13
  17. data/lib/3scale_toolbox/commands/application_command/show_command.rb +8 -14
  18. data/lib/3scale_toolbox/commands/backend_command.rb +22 -0
  19. data/lib/3scale_toolbox/commands/backend_command/copy_command.rb +65 -0
  20. data/lib/3scale_toolbox/commands/backend_command/copy_command/copy_mapping_rules_task.rb +52 -0
  21. data/lib/3scale_toolbox/commands/backend_command/copy_command/copy_methods_task.rb +40 -0
  22. data/lib/3scale_toolbox/commands/backend_command/copy_command/copy_metrics_task.rb +30 -0
  23. data/lib/3scale_toolbox/commands/backend_command/copy_command/create_or_update_target_backend_task.rb +45 -0
  24. data/lib/3scale_toolbox/commands/backend_command/copy_command/task.rb +89 -0
  25. data/lib/3scale_toolbox/commands/copy_command.rb +2 -2
  26. data/lib/3scale_toolbox/commands/copy_command/service_command.rb +40 -0
  27. data/lib/3scale_toolbox/commands/import_command/openapi.rb +3 -2
  28. data/lib/3scale_toolbox/commands/methods_command/apply_command.rb +26 -4
  29. data/lib/3scale_toolbox/commands/methods_command/create_command.rb +23 -1
  30. data/lib/3scale_toolbox/commands/methods_command/list_command.rb +11 -9
  31. data/lib/3scale_toolbox/commands/metrics_command/apply_command.rb +26 -4
  32. data/lib/3scale_toolbox/commands/metrics_command/create_command.rb +23 -1
  33. data/lib/3scale_toolbox/commands/metrics_command/list_command.rb +7 -12
  34. data/lib/3scale_toolbox/commands/plans_command/apply_command.rb +36 -7
  35. data/lib/3scale_toolbox/commands/plans_command/create_command.rb +23 -1
  36. data/lib/3scale_toolbox/commands/plans_command/list_command.rb +8 -13
  37. data/lib/3scale_toolbox/commands/plans_command/show_command.rb +6 -14
  38. data/lib/3scale_toolbox/commands/product_command.rb +22 -0
  39. data/lib/3scale_toolbox/commands/product_command/copy_command.rb +78 -0
  40. data/lib/3scale_toolbox/commands/product_command/copy_command/copy_backends_task.rb +71 -0
  41. data/lib/3scale_toolbox/commands/product_command/copy_command/delete_target_backend_usages_task.rb +48 -0
  42. data/lib/3scale_toolbox/commands/proxy_config_command/list_command.rb +13 -29
  43. data/lib/3scale_toolbox/commands/proxy_config_command/show_command.rb +20 -23
  44. data/lib/3scale_toolbox/commands/service_command.rb +7 -5
  45. data/lib/3scale_toolbox/commands/service_command/apply_command.rb +69 -58
  46. data/lib/3scale_toolbox/commands/service_command/copy_command.rb +95 -0
  47. data/lib/3scale_toolbox/commands/service_command/copy_command/bump_proxy_version_task.rb +36 -0
  48. data/lib/3scale_toolbox/commands/service_command/copy_command/copy_activedocs_task.rb +46 -0
  49. data/lib/3scale_toolbox/commands/service_command/copy_command/copy_app_plans_task.rb +35 -0
  50. data/lib/3scale_toolbox/commands/service_command/copy_command/copy_limits_task.rb +39 -0
  51. data/lib/3scale_toolbox/commands/service_command/copy_command/copy_mapping_rules_task.rb +35 -0
  52. data/lib/3scale_toolbox/commands/service_command/copy_command/copy_methods_task.rb +40 -0
  53. data/lib/3scale_toolbox/commands/service_command/copy_command/copy_metrics_task.rb +37 -0
  54. data/lib/3scale_toolbox/commands/service_command/copy_command/copy_policies_task.rb +17 -0
  55. data/lib/3scale_toolbox/commands/service_command/copy_command/copy_pricingrules_task.rb +44 -0
  56. data/lib/3scale_toolbox/commands/service_command/copy_command/copy_service_proxy_task.rb +17 -0
  57. data/lib/3scale_toolbox/commands/service_command/copy_command/create_or_update_service_task.rb +48 -0
  58. data/lib/3scale_toolbox/commands/service_command/copy_command/destroy_mapping_rules_task.rb +34 -0
  59. data/lib/3scale_toolbox/commands/service_command/copy_command/task.rb +99 -0
  60. data/lib/3scale_toolbox/commands/service_command/create_command.rb +58 -44
  61. data/lib/3scale_toolbox/commands/service_command/delete_command.rb +31 -33
  62. data/lib/3scale_toolbox/commands/service_command/list_command.rb +24 -34
  63. data/lib/3scale_toolbox/commands/service_command/show_command.rb +39 -44
  64. data/lib/3scale_toolbox/commands/update_command.rb +2 -2
  65. data/lib/3scale_toolbox/commands/update_command/{update_service.rb → service_command.rb} +19 -16
  66. data/lib/3scale_toolbox/commands/update_command/service_command/copy_service_settings_task.rb +35 -0
  67. data/lib/3scale_toolbox/commands/update_command/service_command/delete_activedocs_task.rb +26 -0
  68. data/lib/3scale_toolbox/entities.rb +5 -0
  69. data/lib/3scale_toolbox/entities/backend.rb +152 -0
  70. data/lib/3scale_toolbox/entities/backend_mapping_rule.rb +76 -0
  71. data/lib/3scale_toolbox/entities/backend_method.rb +90 -0
  72. data/lib/3scale_toolbox/entities/backend_metric.rb +88 -0
  73. data/lib/3scale_toolbox/entities/backend_usage.rb +99 -0
  74. data/lib/3scale_toolbox/entities/service.rb +18 -3
  75. data/lib/3scale_toolbox/error.rb +3 -0
  76. data/lib/3scale_toolbox/helper.rb +20 -0
  77. data/lib/3scale_toolbox/proxy_logger.rb +1 -1
  78. data/lib/3scale_toolbox/version.rb +1 -1
  79. data/licenses.xml +3 -3
  80. metadata +42 -22
  81. data/lib/3scale_toolbox/commands/copy_command/copy_service.rb +0 -144
  82. data/lib/3scale_toolbox/tasks.rb +0 -15
  83. data/lib/3scale_toolbox/tasks/bump_proxy_version_task.rb +0 -32
  84. data/lib/3scale_toolbox/tasks/copy_activedocs_task.rb +0 -42
  85. data/lib/3scale_toolbox/tasks/copy_app_plans_task.rb +0 -31
  86. data/lib/3scale_toolbox/tasks/copy_limits_task.rb +0 -36
  87. data/lib/3scale_toolbox/tasks/copy_mapping_rules_task.rb +0 -32
  88. data/lib/3scale_toolbox/tasks/copy_methods_task.rb +0 -36
  89. data/lib/3scale_toolbox/tasks/copy_metrics_task.rb +0 -33
  90. data/lib/3scale_toolbox/tasks/copy_policies_task.rb +0 -13
  91. data/lib/3scale_toolbox/tasks/copy_pricingrules_task.rb +0 -41
  92. data/lib/3scale_toolbox/tasks/copy_service_proxy_task.rb +0 -13
  93. data/lib/3scale_toolbox/tasks/copy_service_settings_task.rb +0 -38
  94. data/lib/3scale_toolbox/tasks/copy_task.rb +0 -66
  95. data/lib/3scale_toolbox/tasks/delete_activedocs_task.rb +0 -22
  96. data/lib/3scale_toolbox/tasks/destroy_mapping_rules_task.rb +0 -22
  97. data/lib/3scale_toolbox/tasks/helper_task.rb +0 -25
@@ -1,4 +1,4 @@
1
- require '3scale_toolbox/commands/copy_command/copy_service'
1
+ require '3scale_toolbox/commands/copy_command/service_command'
2
2
 
3
3
  module ThreeScaleToolbox
4
4
  module Commands
@@ -16,7 +16,7 @@ module ThreeScaleToolbox
16
16
  end
17
17
  end
18
18
  end
19
- add_subcommand(CopyServiceSubcommand)
19
+ add_subcommand(ServiceSubcommand)
20
20
  end
21
21
  end
22
22
  end
@@ -0,0 +1,40 @@
1
+ module ThreeScaleToolbox
2
+ module Commands
3
+ module CopyCommand
4
+ class ServiceSubcommand < Cri::CommandRunner
5
+ include ThreeScaleToolbox::Command
6
+
7
+ def self.command
8
+ Cri::Command.define do
9
+ name 'service'
10
+ usage 'service [opts] -s <src> -d <dst> <source-service>'
11
+ summary 'copy service'
12
+ description <<-HEREDOC
13
+ This command makes a copy of the referenced service.
14
+ Target service will be searched by source service system name. System name can be overriden with `--target_system_name` option.
15
+ If a service with the selected `system_name` is not found, it will be created.
16
+ \n Components of the service being copied:
17
+ \nservice settings
18
+ \nproxy settings
19
+ \npricing rules
20
+ \nactivedocs
21
+ \nmetrics
22
+ \nmethods
23
+ \napplication plans
24
+ \nmapping rules
25
+ HEREDOC
26
+
27
+ option :s, :source, '3scale source instance. Url or remote name', argument: :required
28
+ option :d, :destination, '3scale target instance. Url or remote name', argument: :required
29
+ option :t, 'target_system_name', 'Target system name. Default to source system name', argument: :required
30
+ flag :f, :force, 'Overwrites the mapping rules by deleting all rules from target service first'
31
+ flag :r, 'rules-only', 'Only mapping rules are copied'
32
+ param :source_service
33
+
34
+ runner Commands::ServiceCommand::CopySubcommand
35
+ end
36
+ end
37
+ end
38
+ end
39
+ end
40
+ end
@@ -51,7 +51,7 @@ module ThreeScaleToolbox
51
51
  # other tasks might read proxy settings (CreateActiveDocsStep does)
52
52
  tasks << UpdateServiceProxyStep.new(context)
53
53
  tasks << CreateMethodsStep.new(context)
54
- tasks << Tasks::DestroyMappingRulesTask.new(context)
54
+ tasks << ThreeScaleToolbox::Commands::ServiceCommand::CopyCommand::DestroyMappingRulesTask.new(context)
55
55
  tasks << CreateMappingRulesStep.new(context)
56
56
  tasks << CreateActiveDocsStep.new(context)
57
57
  tasks << UpdateServiceOidcConfStep.new(context)
@@ -61,7 +61,7 @@ module ThreeScaleToolbox
61
61
  tasks.each(&:call)
62
62
 
63
63
  # This should be the last step
64
- Tasks::BumpProxyVersionTask.new(service: context[:target]).call
64
+ ThreeScaleToolbox::Commands::ServiceCommand::CopyCommand::BumpProxyVersionTask.new(service: context[:target]).call
65
65
  end
66
66
 
67
67
  private
@@ -88,6 +88,7 @@ module ThreeScaleToolbox
88
88
  backend_api_secret_token: options[:'backend-api-secret-token'],
89
89
  backend_api_host_header: options[:'backend-api-host-header'],
90
90
  prefix_matching: options[:'prefix-matching'],
91
+ delete_mapping_rules: true,
91
92
  }
92
93
  end
93
94
 
@@ -2,6 +2,24 @@ module ThreeScaleToolbox
2
2
  module Commands
3
3
  module MethodsCommand
4
4
  module Apply
5
+ class CustomPrinter
6
+ attr_reader :option_disabled, :option_enabled
7
+
8
+ def initialize(options)
9
+ @option_disabled = options[:disabled]
10
+ @option_enabled = options[:enabled]
11
+ end
12
+
13
+ def print_record(method)
14
+ output_msg_array = ["Applied method id: #{method['id']}"]
15
+ output_msg_array << 'Disabled' if option_disabled
16
+ output_msg_array << 'Enabled' if option_enabled
17
+ puts output_msg_array.join('; ')
18
+ end
19
+
20
+ def print_collection(collection) end
21
+ end
22
+
5
23
  class ApplySubcommand < Cri::CommandRunner
6
24
  include ThreeScaleToolbox::Command
7
25
 
@@ -16,6 +34,8 @@ module ThreeScaleToolbox
16
34
  flag nil, :disabled, 'Disables this method in all application plans'
17
35
  flag nil, :enabled, 'Enables this method in all application plans'
18
36
  option nil, :description, 'Method description', argument: :required
37
+ ThreeScaleToolbox::CLI.output_flag(self)
38
+
19
39
  param :remote
20
40
  param :service_ref
21
41
  param :method_ref
@@ -39,10 +59,7 @@ module ThreeScaleToolbox
39
59
  method.disable if option_disabled
40
60
  method.enable if option_enabled
41
61
 
42
- output_msg_array = ["Applied method id: #{method.id}"]
43
- output_msg_array << 'Disabled' if option_disabled
44
- output_msg_array << 'Enabled' if option_enabled
45
- puts output_msg_array.join('; ')
62
+ printer.print_record method.attrs
46
63
  end
47
64
 
48
65
  private
@@ -94,6 +111,11 @@ module ThreeScaleToolbox
94
111
  def method_ref
95
112
  arguments[:method_ref]
96
113
  end
114
+
115
+ def printer
116
+ # keep backwards compatibility
117
+ options.fetch(:output, CustomPrinter.new(disabled: option_disabled, enabled: option_enabled))
118
+ end
97
119
  end
98
120
  end
99
121
  end
@@ -2,6 +2,20 @@ module ThreeScaleToolbox
2
2
  module Commands
3
3
  module MethodsCommand
4
4
  module Create
5
+ class CustomPrinter
6
+ attr_reader :option_disabled
7
+
8
+ def initialize(options)
9
+ @option_disabled = options[:disabled]
10
+ end
11
+
12
+ def print_record(method)
13
+ puts "Created method id: #{method['id']}. Disabled: #{option_disabled}"
14
+ end
15
+
16
+ def print_collection(collection) end
17
+ end
18
+
5
19
  class CreateSubcommand < Cri::CommandRunner
6
20
  include ThreeScaleToolbox::Command
7
21
 
@@ -15,6 +29,8 @@ module ThreeScaleToolbox
15
29
  option :t, 'system-name', 'Method system name', argument: :required
16
30
  flag nil, :disabled, 'Disables this method in all application plans'
17
31
  option nil, :description, 'Method description', argument: :required
32
+ ThreeScaleToolbox::CLI.output_flag(self)
33
+
18
34
  param :remote
19
35
  param :service_ref
20
36
  param :method_name
@@ -31,7 +47,8 @@ module ThreeScaleToolbox
31
47
  attrs: method_attrs
32
48
  )
33
49
  method.disable if option_disabled
34
- puts "Created method id: #{method.id}. Disabled: #{option_disabled}"
50
+
51
+ printer.print_record method.attrs
35
52
  end
36
53
 
37
54
  private
@@ -66,6 +83,11 @@ module ThreeScaleToolbox
66
83
  def service_ref
67
84
  arguments[:service_ref]
68
85
  end
86
+
87
+ def printer
88
+ # keep backwards compatibility
89
+ options.fetch(:output, CustomPrinter.new(disabled: option_disabled))
90
+ end
69
91
  end
70
92
  end
71
93
  end
@@ -14,6 +14,7 @@ module ThreeScaleToolbox
14
14
  summary 'list methods'
15
15
  description 'List methods'
16
16
 
17
+ ThreeScaleToolbox::CLI.output_flag(self)
17
18
  param :remote
18
19
  param :service_ref
19
20
 
@@ -22,21 +23,17 @@ module ThreeScaleToolbox
22
23
  end
23
24
 
24
25
  def run
25
- print_header
26
- print_data
26
+ printer.print_collection service_methods
27
27
  end
28
28
 
29
29
  private
30
30
 
31
- def print_header
32
- puts FIELDS_TO_SHOW.map(&:upcase).join("\t")
31
+ def service_methods
32
+ @service_methods ||= service.methods service_hits_id
33
33
  end
34
34
 
35
- def print_data
36
- hits = service.hits
37
- service.methods(hits.fetch('id')).each do |method|
38
- puts FIELDS_TO_SHOW.map { |field| method.fetch(field, '(empty)') }.join("\t")
39
- end
35
+ def service_hits_id
36
+ @service_hits_id ||= service.hits.fetch('id')
40
37
  end
41
38
 
42
39
  def service
@@ -57,6 +54,11 @@ module ThreeScaleToolbox
57
54
  def service_ref
58
55
  arguments[:service_ref]
59
56
  end
57
+
58
+ def printer
59
+ # keep backwards compatibility
60
+ options.fetch(:output, CLI::CustomTablePrinter.new(FIELDS_TO_SHOW))
61
+ end
60
62
  end
61
63
  end
62
64
  end
@@ -2,6 +2,24 @@ module ThreeScaleToolbox
2
2
  module Commands
3
3
  module MetricsCommand
4
4
  module Apply
5
+ class CustomPrinter
6
+ attr_reader :option_disabled, :option_enabled
7
+
8
+ def initialize(options)
9
+ @option_disabled = options[:disabled]
10
+ @option_enabled = options[:enabled]
11
+ end
12
+
13
+ def print_record(metric)
14
+ output_msg_array = ["Applied metric id: #{metric['id']}"]
15
+ output_msg_array << 'Disabled' if option_disabled
16
+ output_msg_array << 'Enabled' if option_enabled
17
+ puts output_msg_array.join('; ')
18
+ end
19
+
20
+ def print_collection(collection) end
21
+ end
22
+
5
23
  class ApplySubcommand < Cri::CommandRunner
6
24
  include ThreeScaleToolbox::Command
7
25
 
@@ -17,6 +35,8 @@ module ThreeScaleToolbox
17
35
  flag nil, :enabled, 'Enables this metric in all application plans'
18
36
  option nil, :unit, 'Metric unit. Default hit', argument: :required
19
37
  option nil, :description, 'Metric description', argument: :required
38
+ ThreeScaleToolbox::CLI.output_flag(self)
39
+
20
40
  param :remote
21
41
  param :service_ref
22
42
  param :metric_ref
@@ -38,10 +58,7 @@ module ThreeScaleToolbox
38
58
  metric.disable if option_disabled
39
59
  metric.enable if option_enabled
40
60
 
41
- output_msg_array = ["Applied metric id: #{metric.id}"]
42
- output_msg_array << 'Disabled' if option_disabled
43
- output_msg_array << 'Enabled' if option_enabled
44
- puts output_msg_array.join('; ')
61
+ printer.print_record metric.attrs
45
62
  end
46
63
 
47
64
  private
@@ -95,6 +112,11 @@ module ThreeScaleToolbox
95
112
  def metric_ref
96
113
  arguments[:metric_ref]
97
114
  end
115
+
116
+ def printer
117
+ # keep backwards compatibility
118
+ options.fetch(:output, CustomPrinter.new(disabled: option_disabled, enabled: option_enabled))
119
+ end
98
120
  end
99
121
  end
100
122
  end
@@ -2,6 +2,20 @@ module ThreeScaleToolbox
2
2
  module Commands
3
3
  module MetricsCommand
4
4
  module Create
5
+ class CustomPrinter
6
+ attr_reader :option_disabled
7
+
8
+ def initialize(options)
9
+ @option_disabled = options[:disabled]
10
+ end
11
+
12
+ def print_record(metric)
13
+ puts "Created metric id: #{metric['id']}. Disabled: #{option_disabled}"
14
+ end
15
+
16
+ def print_collection(collection) end
17
+ end
18
+
5
19
  class CreateSubcommand < Cri::CommandRunner
6
20
  include ThreeScaleToolbox::Command
7
21
 
@@ -16,6 +30,8 @@ module ThreeScaleToolbox
16
30
  flag nil, :disabled, 'Disables this metric in all application plans'
17
31
  option nil, :unit, 'Metric unit. Default hit', argument: :required
18
32
  option nil, :description, 'Metric description', argument: :required
33
+ ThreeScaleToolbox::CLI.output_flag(self)
34
+
19
35
  param :remote
20
36
  param :service_ref
21
37
  param :metric_name
@@ -30,7 +46,8 @@ module ThreeScaleToolbox
30
46
  attrs: metric_attrs
31
47
  )
32
48
  metric.disable if option_disabled
33
- puts "Created metric id: #{metric.id}. Disabled: #{option_disabled}"
49
+
50
+ printer.print_record metric.attrs
34
51
  end
35
52
 
36
53
  private
@@ -70,6 +87,11 @@ module ThreeScaleToolbox
70
87
  def service_ref
71
88
  arguments[:service_ref]
72
89
  end
90
+
91
+ def printer
92
+ # keep backwards compatibility
93
+ options.fetch(:output, CustomPrinter.new(disabled: option_disabled))
94
+ end
73
95
  end
74
96
  end
75
97
  end
@@ -14,6 +14,7 @@ module ThreeScaleToolbox
14
14
  summary 'list metrics'
15
15
  description 'List metrics'
16
16
 
17
+ ThreeScaleToolbox::CLI.output_flag(self)
17
18
  param :remote
18
19
  param :service_ref
19
20
 
@@ -22,22 +23,11 @@ module ThreeScaleToolbox
22
23
  end
23
24
 
24
25
  def run
25
- print_header
26
- print_data
26
+ printer.print_collection service.metrics
27
27
  end
28
28
 
29
29
  private
30
30
 
31
- def print_header
32
- puts FIELDS_TO_SHOW.map(&:upcase).join("\t")
33
- end
34
-
35
- def print_data
36
- service.metrics.each do |metric|
37
- puts FIELDS_TO_SHOW.map { |field| metric.fetch(field, '(empty)') }.join("\t")
38
- end
39
- end
40
-
41
31
  def service
42
32
  @service ||= find_service
43
33
  end
@@ -56,6 +46,11 @@ module ThreeScaleToolbox
56
46
  def service_ref
57
47
  arguments[:service_ref]
58
48
  end
49
+
50
+ def printer
51
+ # keep backwards compatibility
52
+ options.fetch(:output, CLI::CustomTablePrinter.new(FIELDS_TO_SHOW))
53
+ end
59
54
  end
60
55
  end
61
56
  end
@@ -2,6 +2,31 @@ module ThreeScaleToolbox
2
2
  module Commands
3
3
  module PlansCommand
4
4
  module Apply
5
+ class CustomPrinter
6
+ attr_reader :option_default, :option_disabled, :option_enabled,
7
+ :option_publish, :option_hide
8
+
9
+ def initialize(options)
10
+ @option_default = options[:default]
11
+ @option_disabled = options[:disabled]
12
+ @option_enabled = options[:enabled]
13
+ @option_publish = options[:publish]
14
+ @option_hide = options[:hide]
15
+ end
16
+
17
+ def print_record(plan)
18
+ output_msg_array = ["Applied application plan id: #{plan['id']}"]
19
+ output_msg_array << "Default: #{option_default}"
20
+ output_msg_array << 'Disabled' if option_disabled
21
+ output_msg_array << 'Enabled' if option_enabled
22
+ output_msg_array << 'Published' if option_publish
23
+ output_msg_array << 'Hidden' if option_hide
24
+ puts output_msg_array.join('; ')
25
+ end
26
+
27
+ def print_collection(collection) end
28
+ end
29
+
5
30
  class ApplySubcommand < Cri::CommandRunner
6
31
  include ThreeScaleToolbox::Command
7
32
 
@@ -22,6 +47,8 @@ module ThreeScaleToolbox
22
47
  option nil, 'cost-per-month', 'Cost per month', argument: :required, transform: method(:Float)
23
48
  option nil, 'setup-fee', 'Setup fee', argument: :required, transform: method(:Float)
24
49
  option nil, 'trial-period-days', 'Trial period days', argument: :required, transform: method(:Integer)
50
+ ThreeScaleToolbox::CLI.output_flag(self)
51
+
25
52
  param :remote
26
53
  param :service_ref
27
54
  param :plan_ref
@@ -44,13 +71,7 @@ module ThreeScaleToolbox
44
71
  plan.disable if option_disabled
45
72
  plan.enable if option_enabled
46
73
 
47
- output_msg_array = ["Applied application plan id: #{plan.id}"]
48
- output_msg_array << "Default: #{option_default}"
49
- output_msg_array << 'Disabled' if option_disabled
50
- output_msg_array << 'Enabled' if option_enabled
51
- output_msg_array << 'Published' if option_publish
52
- output_msg_array << 'Hidden' if option_hide
53
- puts output_msg_array.join('; ')
74
+ printer.print_record plan.attrs
54
75
  end
55
76
 
56
77
  private
@@ -130,6 +151,14 @@ module ThreeScaleToolbox
130
151
  def plan_ref
131
152
  arguments[:plan_ref]
132
153
  end
154
+
155
+ def printer
156
+ # keep backwards compatibility
157
+ options.fetch(:output,
158
+ CustomPrinter.new(default: option_default, disabled: option_disabled,
159
+ enabled: option_enabled, publish: option_publish,
160
+ hide: option_hide))
161
+ end
133
162
  end
134
163
  end
135
164
  end