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.
- checksums.yaml +4 -4
- data/3scale_toolbox.gemspec +1 -1
- data/README.md +4 -1
- data/lib/3scale_toolbox.rb +0 -1
- data/lib/3scale_toolbox/cli.rb +4 -0
- data/lib/3scale_toolbox/cli/custom_table_printer.rb +32 -0
- data/lib/3scale_toolbox/cli/json_printer.rb +13 -0
- data/lib/3scale_toolbox/cli/output_flag.rb +20 -0
- data/lib/3scale_toolbox/cli/yaml_printer.rb +13 -0
- data/lib/3scale_toolbox/commands.rb +5 -1
- data/lib/3scale_toolbox/commands/activedocs_command/apply_command.rb +33 -10
- data/lib/3scale_toolbox/commands/activedocs_command/create_command.rb +22 -7
- data/lib/3scale_toolbox/commands/activedocs_command/list_command.rb +10 -17
- data/lib/3scale_toolbox/commands/application_command/apply_command.rb +27 -4
- data/lib/3scale_toolbox/commands/application_command/create_command.rb +16 -1
- data/lib/3scale_toolbox/commands/application_command/list_command.rb +10 -13
- data/lib/3scale_toolbox/commands/application_command/show_command.rb +8 -14
- data/lib/3scale_toolbox/commands/backend_command.rb +22 -0
- data/lib/3scale_toolbox/commands/backend_command/copy_command.rb +65 -0
- data/lib/3scale_toolbox/commands/backend_command/copy_command/copy_mapping_rules_task.rb +52 -0
- data/lib/3scale_toolbox/commands/backend_command/copy_command/copy_methods_task.rb +40 -0
- data/lib/3scale_toolbox/commands/backend_command/copy_command/copy_metrics_task.rb +30 -0
- data/lib/3scale_toolbox/commands/backend_command/copy_command/create_or_update_target_backend_task.rb +45 -0
- data/lib/3scale_toolbox/commands/backend_command/copy_command/task.rb +89 -0
- data/lib/3scale_toolbox/commands/copy_command.rb +2 -2
- data/lib/3scale_toolbox/commands/copy_command/service_command.rb +40 -0
- data/lib/3scale_toolbox/commands/import_command/openapi.rb +3 -2
- data/lib/3scale_toolbox/commands/methods_command/apply_command.rb +26 -4
- data/lib/3scale_toolbox/commands/methods_command/create_command.rb +23 -1
- data/lib/3scale_toolbox/commands/methods_command/list_command.rb +11 -9
- data/lib/3scale_toolbox/commands/metrics_command/apply_command.rb +26 -4
- data/lib/3scale_toolbox/commands/metrics_command/create_command.rb +23 -1
- data/lib/3scale_toolbox/commands/metrics_command/list_command.rb +7 -12
- data/lib/3scale_toolbox/commands/plans_command/apply_command.rb +36 -7
- data/lib/3scale_toolbox/commands/plans_command/create_command.rb +23 -1
- data/lib/3scale_toolbox/commands/plans_command/list_command.rb +8 -13
- data/lib/3scale_toolbox/commands/plans_command/show_command.rb +6 -14
- data/lib/3scale_toolbox/commands/product_command.rb +22 -0
- data/lib/3scale_toolbox/commands/product_command/copy_command.rb +78 -0
- data/lib/3scale_toolbox/commands/product_command/copy_command/copy_backends_task.rb +71 -0
- data/lib/3scale_toolbox/commands/product_command/copy_command/delete_target_backend_usages_task.rb +48 -0
- data/lib/3scale_toolbox/commands/proxy_config_command/list_command.rb +13 -29
- data/lib/3scale_toolbox/commands/proxy_config_command/show_command.rb +20 -23
- data/lib/3scale_toolbox/commands/service_command.rb +7 -5
- data/lib/3scale_toolbox/commands/service_command/apply_command.rb +69 -58
- data/lib/3scale_toolbox/commands/service_command/copy_command.rb +95 -0
- data/lib/3scale_toolbox/commands/service_command/copy_command/bump_proxy_version_task.rb +36 -0
- data/lib/3scale_toolbox/commands/service_command/copy_command/copy_activedocs_task.rb +46 -0
- data/lib/3scale_toolbox/commands/service_command/copy_command/copy_app_plans_task.rb +35 -0
- data/lib/3scale_toolbox/commands/service_command/copy_command/copy_limits_task.rb +39 -0
- data/lib/3scale_toolbox/commands/service_command/copy_command/copy_mapping_rules_task.rb +35 -0
- data/lib/3scale_toolbox/commands/service_command/copy_command/copy_methods_task.rb +40 -0
- data/lib/3scale_toolbox/commands/service_command/copy_command/copy_metrics_task.rb +37 -0
- data/lib/3scale_toolbox/commands/service_command/copy_command/copy_policies_task.rb +17 -0
- data/lib/3scale_toolbox/commands/service_command/copy_command/copy_pricingrules_task.rb +44 -0
- data/lib/3scale_toolbox/commands/service_command/copy_command/copy_service_proxy_task.rb +17 -0
- data/lib/3scale_toolbox/commands/service_command/copy_command/create_or_update_service_task.rb +48 -0
- data/lib/3scale_toolbox/commands/service_command/copy_command/destroy_mapping_rules_task.rb +34 -0
- data/lib/3scale_toolbox/commands/service_command/copy_command/task.rb +99 -0
- data/lib/3scale_toolbox/commands/service_command/create_command.rb +58 -44
- data/lib/3scale_toolbox/commands/service_command/delete_command.rb +31 -33
- data/lib/3scale_toolbox/commands/service_command/list_command.rb +24 -34
- data/lib/3scale_toolbox/commands/service_command/show_command.rb +39 -44
- data/lib/3scale_toolbox/commands/update_command.rb +2 -2
- data/lib/3scale_toolbox/commands/update_command/{update_service.rb → service_command.rb} +19 -16
- data/lib/3scale_toolbox/commands/update_command/service_command/copy_service_settings_task.rb +35 -0
- data/lib/3scale_toolbox/commands/update_command/service_command/delete_activedocs_task.rb +26 -0
- data/lib/3scale_toolbox/entities.rb +5 -0
- data/lib/3scale_toolbox/entities/backend.rb +152 -0
- data/lib/3scale_toolbox/entities/backend_mapping_rule.rb +76 -0
- data/lib/3scale_toolbox/entities/backend_method.rb +90 -0
- data/lib/3scale_toolbox/entities/backend_metric.rb +88 -0
- data/lib/3scale_toolbox/entities/backend_usage.rb +99 -0
- data/lib/3scale_toolbox/entities/service.rb +18 -3
- data/lib/3scale_toolbox/error.rb +3 -0
- data/lib/3scale_toolbox/helper.rb +20 -0
- data/lib/3scale_toolbox/proxy_logger.rb +1 -1
- data/lib/3scale_toolbox/version.rb +1 -1
- data/licenses.xml +3 -3
- metadata +42 -22
- data/lib/3scale_toolbox/commands/copy_command/copy_service.rb +0 -144
- data/lib/3scale_toolbox/tasks.rb +0 -15
- data/lib/3scale_toolbox/tasks/bump_proxy_version_task.rb +0 -32
- data/lib/3scale_toolbox/tasks/copy_activedocs_task.rb +0 -42
- data/lib/3scale_toolbox/tasks/copy_app_plans_task.rb +0 -31
- data/lib/3scale_toolbox/tasks/copy_limits_task.rb +0 -36
- data/lib/3scale_toolbox/tasks/copy_mapping_rules_task.rb +0 -32
- data/lib/3scale_toolbox/tasks/copy_methods_task.rb +0 -36
- data/lib/3scale_toolbox/tasks/copy_metrics_task.rb +0 -33
- data/lib/3scale_toolbox/tasks/copy_policies_task.rb +0 -13
- data/lib/3scale_toolbox/tasks/copy_pricingrules_task.rb +0 -41
- data/lib/3scale_toolbox/tasks/copy_service_proxy_task.rb +0 -13
- data/lib/3scale_toolbox/tasks/copy_service_settings_task.rb +0 -38
- data/lib/3scale_toolbox/tasks/copy_task.rb +0 -66
- data/lib/3scale_toolbox/tasks/delete_activedocs_task.rb +0 -22
- data/lib/3scale_toolbox/tasks/destroy_mapping_rules_task.rb +0 -22
- data/lib/3scale_toolbox/tasks/helper_task.rb +0 -25
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
require '3scale_toolbox/commands/copy_command/
|
|
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(
|
|
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 <<
|
|
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
|
-
|
|
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
|
-
|
|
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
|
-
|
|
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
|
-
|
|
26
|
-
print_data
|
|
26
|
+
printer.print_collection service_methods
|
|
27
27
|
end
|
|
28
28
|
|
|
29
29
|
private
|
|
30
30
|
|
|
31
|
-
def
|
|
32
|
-
|
|
31
|
+
def service_methods
|
|
32
|
+
@service_methods ||= service.methods service_hits_id
|
|
33
33
|
end
|
|
34
34
|
|
|
35
|
-
def
|
|
36
|
-
|
|
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
|
-
|
|
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
|
-
|
|
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
|
-
|
|
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
|
-
|
|
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
|