3scale_toolbox 0.16.0 → 0.17.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 +2 -2
- data/README.md +6 -6
- data/lib/3scale_toolbox/cli/error_handler.rb +17 -14
- data/lib/3scale_toolbox/commands/plans_command/import/import_plan_limits_step.rb +11 -12
- data/lib/3scale_toolbox/commands/plans_command/import/import_plan_pricing_rules_step.rb +11 -12
- data/lib/3scale_toolbox/commands/proxy_config_command.rb +3 -0
- data/lib/3scale_toolbox/commands/proxy_config_command/export_command.rb +74 -0
- data/lib/3scale_toolbox/commands/proxy_config_command/helper.rb +15 -0
- data/lib/3scale_toolbox/commands/service_command/copy_command/copy_service_proxy_task.rb +16 -1
- data/lib/3scale_toolbox/commands/update_command.rb +1 -1
- data/lib/3scale_toolbox/commands/update_command/service_command.rb +3 -2
- data/lib/3scale_toolbox/entities/application_plan.rb +31 -4
- data/lib/3scale_toolbox/error.rb +50 -0
- data/lib/3scale_toolbox/version.rb +1 -1
- data/licenses.xml +37 -27
- metadata +9 -8
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 5065a7adfb9986662d24bb6b27a74d710400af999968086f52188477cc1670f3
|
4
|
+
data.tar.gz: d8ce25654cdae1d44e02900507c9b69b649fccbce69be0b234861ffd8611aa16
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: fc9c2335031b36bd08fa916c4aa0bef4c65228c8bc6ff91fdb9769ee737541d23473738c51c627b5c2e8ec91a837a00a5570030fdd8aa767b1e61798669a63f9
|
7
|
+
data.tar.gz: 0a9733d12ea3a912e50cd47c1083d960b8b4e0065976e5ef9ed0fb572ee2ce25570d0dd52725cd34d3324d683f8ec67f36c6f838e6c30a864720df4bb62b7824
|
data/3scale_toolbox.gemspec
CHANGED
@@ -31,12 +31,12 @@ Gem::Specification.new do |spec|
|
|
31
31
|
|
32
32
|
spec.add_development_dependency 'bundler'
|
33
33
|
spec.add_development_dependency 'dotenv'
|
34
|
-
spec.add_development_dependency 'rake', '~>
|
34
|
+
spec.add_development_dependency 'rake', '~> 13.0'
|
35
35
|
spec.add_development_dependency 'rspec', '~> 3.8'
|
36
36
|
spec.add_development_dependency 'webmock', '~> 3.4'
|
37
37
|
spec.required_ruby_version = '>= 2.5'
|
38
38
|
|
39
|
-
spec.add_dependency '3scale-api', '~> 1.
|
39
|
+
spec.add_dependency '3scale-api', '~> 1.1'
|
40
40
|
spec.add_dependency 'cri', '~> 2.15'
|
41
41
|
spec.add_dependency 'json-schema', '~> 2.8'
|
42
42
|
spec.add_dependency 'oas_parser', '~> 0.20'
|
data/README.md
CHANGED
@@ -1,9 +1,7 @@
|
|
1
1
|
# 3scale toolbox
|
2
2
|
[](https://circleci.com/gh/3scale/3scale_toolbox)
|
3
|
-
|
4
|
-
|
5
|
-
|
6
|
-
See the LICENSE and NOTICE files that should have been provided along with this software for details.
|
3
|
+
[](http://www.apache.org/licenses/LICENSE-2.0)
|
4
|
+
[](https://github.com/3scale/3scale_toolbox/releases/latest)
|
7
5
|
|
8
6
|
## Description
|
9
7
|
3scale toolbox is a set of tools to help you manage your 3scale product. Using the [3scale API Ruby Client](https://github.com/3scale/3scale-api-ruby).
|
@@ -23,7 +21,7 @@ See the LICENSE and NOTICE files that should have been provided along with this
|
|
23
21
|
* Create, Apply, List, Delete [Method](docs/method.md)
|
24
22
|
* Create, Apply, List, Show, Delete [Service](docs/service.md)
|
25
23
|
* Create, Apply, List, Delete [ActiveDocs](docs/activedocs.md)
|
26
|
-
* List, Show, Promote [Proxy Configuration](docs/proxy-config.md)
|
24
|
+
* List, Show, Promote, Export [Proxy Configuration](docs/proxy-config.md)
|
27
25
|
* [Copy Policy Registry](docs/copy-policy-registry.md)
|
28
26
|
* Create, Apply, List, Show, Delete, Suspend, Resume [Applications](docs/applications.md)
|
29
27
|
* [Remotes](docs/remotes.md)
|
@@ -32,6 +30,7 @@ See the LICENSE and NOTICE files that should have been provided along with this
|
|
32
30
|
* [Develop your own core command](#develop-core-command)
|
33
31
|
* [Licenses](#licenses)
|
34
32
|
* [Plugins](#plugins)
|
33
|
+
* [Error Reporting](docs/errors.md)
|
35
34
|
* [Troubleshooting](#troubleshooting)
|
36
35
|
* [Contributing](#contributing)
|
37
36
|
|
@@ -82,10 +81,11 @@ COMMANDS
|
|
82
81
|
method method super command
|
83
82
|
metric metric super command
|
84
83
|
policy-registry policy-registry super command
|
84
|
+
product product super command
|
85
85
|
proxy-config proxy-config super command
|
86
86
|
remote remotes super command
|
87
87
|
service services super command
|
88
|
-
update [
|
88
|
+
update [DEPRECATED] update super command
|
89
89
|
|
90
90
|
OPTIONS
|
91
91
|
-c --config-file=<value> 3scale toolbox configuration file (default:
|
@@ -20,10 +20,9 @@ module ThreeScaleToolbox
|
|
20
20
|
|
21
21
|
def handle_error(error)
|
22
22
|
if expected_error?(error)
|
23
|
-
warn
|
24
|
-
warn "\e[1m\e[31mError: #{error.message}\e[0m"
|
23
|
+
warn error_serialize(error)
|
25
24
|
else
|
26
|
-
|
25
|
+
print_unexpected_error(error)
|
27
26
|
end
|
28
27
|
end
|
29
28
|
|
@@ -36,21 +35,12 @@ module ThreeScaleToolbox
|
|
36
35
|
end
|
37
36
|
end
|
38
37
|
|
39
|
-
def
|
40
|
-
write_error(error, $stderr)
|
41
|
-
|
38
|
+
def print_unexpected_error(error)
|
42
39
|
File.open('crash.log', 'w') do |io|
|
43
40
|
write_verbose_error(error, io)
|
44
41
|
end
|
45
42
|
|
46
|
-
|
47
|
-
warn
|
48
|
-
warn 'A detailed crash log has been written to ./crash.log.'
|
49
|
-
end
|
50
|
-
|
51
|
-
def write_error(error, stream)
|
52
|
-
write_error_message(error, stream)
|
53
|
-
write_stack_trace(error, stream)
|
43
|
+
warn error_serialize(UnexpectedError.new(error))
|
54
44
|
end
|
55
45
|
|
56
46
|
def write_error_message(error, stream)
|
@@ -113,6 +103,19 @@ module ThreeScaleToolbox
|
|
113
103
|
stream.puts "===== #{title.upcase}:"
|
114
104
|
stream.puts
|
115
105
|
end
|
106
|
+
|
107
|
+
def error_serialize(error)
|
108
|
+
JSON.pretty_generate format_error(error)
|
109
|
+
end
|
110
|
+
|
111
|
+
def format_error(error)
|
112
|
+
{
|
113
|
+
code: error.code,
|
114
|
+
message: error.message,
|
115
|
+
class: error.kind,
|
116
|
+
stacktrace: error.stacktrace
|
117
|
+
}.compact
|
118
|
+
end
|
116
119
|
end
|
117
120
|
end
|
118
121
|
end
|
@@ -7,25 +7,24 @@ module ThreeScaleToolbox
|
|
7
7
|
##
|
8
8
|
# Writes Plan limits
|
9
9
|
def call
|
10
|
-
|
11
|
-
|
12
|
-
|
13
|
-
|
14
|
-
|
15
|
-
|
10
|
+
# SET semantics
|
11
|
+
# First, delete existing limits
|
12
|
+
# Second, add new limits
|
13
|
+
plan.limits.each do |limit|
|
14
|
+
metric_id = limit.fetch('metric_id')
|
15
|
+
plan.delete_limit metric_id, limit.fetch('id')
|
16
|
+
puts "Deleted existing plan limit: [metric: #{metric_id}, #{limit}]"
|
17
|
+
end
|
16
18
|
|
19
|
+
resource_limits_processed.each do |limit|
|
20
|
+
metric_id = limit.delete('metric_id')
|
21
|
+
plan.create_limit(metric_id, limit)
|
17
22
|
puts "Created plan limit: [metric: #{metric_id}, #{limit}]"
|
18
23
|
end
|
19
24
|
end
|
20
25
|
|
21
26
|
private
|
22
27
|
|
23
|
-
def missing_limits
|
24
|
-
ThreeScaleToolbox::Helper.array_difference(resource_limits_processed, plan.limits) do |a, b|
|
25
|
-
ThreeScaleToolbox::Helper.compare_hashes(a, b, %w[metric_id period])
|
26
|
-
end
|
27
|
-
end
|
28
|
-
|
29
28
|
def resource_limits_processed
|
30
29
|
resource_limits.map do |limit|
|
31
30
|
metric = find_metric_by_system_name(limit.delete('metric_system_name'))
|
@@ -7,25 +7,24 @@ module ThreeScaleToolbox
|
|
7
7
|
##
|
8
8
|
# Writes Plan pricing rules
|
9
9
|
def call
|
10
|
-
|
11
|
-
|
12
|
-
|
13
|
-
|
14
|
-
|
15
|
-
|
10
|
+
# SET semantics
|
11
|
+
# First, delete existing pricing rules
|
12
|
+
# Second, add new pricing rules
|
13
|
+
remote_pr_processed.each do |pr|
|
14
|
+
metric_id = pr.fetch('metric_id')
|
15
|
+
plan.delete_pricing_rule metric_id, pr.fetch('id')
|
16
|
+
puts "Deleted existing plan pricing rule: [metric: #{metric_id}, #{pr}]"
|
17
|
+
end
|
16
18
|
|
19
|
+
resource_pr_processed.each do |pr|
|
20
|
+
metric_id = pr.delete('metric_id')
|
21
|
+
plan.create_pricing_rule(metric_id, pr)
|
17
22
|
puts "Created plan pricing rule: [metric: #{metric_id}, #{pr}]"
|
18
23
|
end
|
19
24
|
end
|
20
25
|
|
21
26
|
private
|
22
27
|
|
23
|
-
def missing_pricing_rules
|
24
|
-
ThreeScaleToolbox::Helper.array_difference(resource_pr_processed, remote_pr_processed) do |a, b|
|
25
|
-
ThreeScaleToolbox::Helper.compare_hashes(a, b, %w[metric_id cost_per_unit min max])
|
26
|
-
end
|
27
|
-
end
|
28
|
-
|
29
28
|
def remote_pr_processed
|
30
29
|
plan.pricing_rules.map do |pr|
|
31
30
|
pr.merge('cost_per_unit' => pr.fetch('cost_per_unit').to_f)
|
@@ -1,8 +1,10 @@
|
|
1
1
|
require 'cri'
|
2
2
|
require '3scale_toolbox/base_command'
|
3
|
+
require '3scale_toolbox/commands/proxy_config_command/helper'
|
3
4
|
require '3scale_toolbox/commands/proxy_config_command/list_command'
|
4
5
|
require '3scale_toolbox/commands/proxy_config_command/show_command'
|
5
6
|
require '3scale_toolbox/commands/proxy_config_command/promote_command'
|
7
|
+
require '3scale_toolbox/commands/proxy_config_command/export_command'
|
6
8
|
|
7
9
|
module ThreeScaleToolbox
|
8
10
|
module Commands
|
@@ -25,6 +27,7 @@ module ThreeScaleToolbox
|
|
25
27
|
add_subcommand(List::ListSubcommand)
|
26
28
|
add_subcommand(Show::ShowSubcommand)
|
27
29
|
add_subcommand(Promote::PromoteSubcommand)
|
30
|
+
add_subcommand(Export::ExportSubcommand)
|
28
31
|
end
|
29
32
|
end
|
30
33
|
end
|
@@ -0,0 +1,74 @@
|
|
1
|
+
module ThreeScaleToolbox
|
2
|
+
module Commands
|
3
|
+
module ProxyConfigCommand
|
4
|
+
module Export
|
5
|
+
class ExportSubcommand < Cri::CommandRunner
|
6
|
+
include ThreeScaleToolbox::Command
|
7
|
+
|
8
|
+
def self.command
|
9
|
+
Cri::Command.define do
|
10
|
+
name 'export'
|
11
|
+
usage 'export <remote>'
|
12
|
+
summary 'Export proxy configuration for the entire provider account'
|
13
|
+
description <<-HEREDOC
|
14
|
+
Export proxy configuration for the entire provider account
|
15
|
+
\n Can be used as 3scale apicast configuration file
|
16
|
+
\n https://github.com/3scale/apicast/blob/master/doc/parameters.md#threescale_config_file
|
17
|
+
HEREDOC
|
18
|
+
|
19
|
+
param :remote
|
20
|
+
|
21
|
+
ThreeScaleToolbox::CLI.output_flag(self)
|
22
|
+
option nil, :environment, "Gateway environment. Must be 'sandbox' or 'production'", default: 'sandbox', argument: :required, transform: ProxyConfigCommand::EnvironmentTransformer.new
|
23
|
+
|
24
|
+
runner ExportSubcommand
|
25
|
+
end
|
26
|
+
end
|
27
|
+
|
28
|
+
def run
|
29
|
+
printer.print_record proxy_config_list_obj
|
30
|
+
end
|
31
|
+
|
32
|
+
private
|
33
|
+
|
34
|
+
def proxy_config_list_obj
|
35
|
+
{
|
36
|
+
'services' => proxy_config_list
|
37
|
+
}
|
38
|
+
end
|
39
|
+
|
40
|
+
def proxy_config_list
|
41
|
+
service_list.map do |service|
|
42
|
+
pc = Entities::ProxyConfig.find_latest(service: service, environment: environment)
|
43
|
+
pc.attrs['content'] unless pc.nil?
|
44
|
+
end.compact
|
45
|
+
end
|
46
|
+
|
47
|
+
def service_list
|
48
|
+
tmp_list = remote.list_services
|
49
|
+
|
50
|
+
if tmp_list.respond_to?(:has_key?) && (errors = tmp_list['errors'])
|
51
|
+
raise ThreeScaleToolbox::ThreeScaleApiError.new('Service list not read', errors)
|
52
|
+
end
|
53
|
+
|
54
|
+
tmp_list.map do |svc_attrs|
|
55
|
+
Entities::Service.new(id: svc_attrs.fetch('id'), remote: remote, attrs: svc_attrs)
|
56
|
+
end
|
57
|
+
end
|
58
|
+
|
59
|
+
def remote
|
60
|
+
@remote ||= threescale_client(arguments[:remote])
|
61
|
+
end
|
62
|
+
|
63
|
+
def environment
|
64
|
+
options[:environment]
|
65
|
+
end
|
66
|
+
|
67
|
+
def printer
|
68
|
+
options.fetch(:output, CLI::JsonPrinter.new)
|
69
|
+
end
|
70
|
+
end
|
71
|
+
end
|
72
|
+
end
|
73
|
+
end
|
74
|
+
end
|
@@ -0,0 +1,15 @@
|
|
1
|
+
module ThreeScaleToolbox
|
2
|
+
module Commands
|
3
|
+
module ProxyConfigCommand
|
4
|
+
class EnvironmentTransformer
|
5
|
+
def call(param_str)
|
6
|
+
raise ArgumentError unless param_str.is_a?(String)
|
7
|
+
|
8
|
+
raise ArgumentError unless %w[production sandbox].include? param_str
|
9
|
+
|
10
|
+
param_str
|
11
|
+
end
|
12
|
+
end
|
13
|
+
end
|
14
|
+
end
|
15
|
+
end
|
@@ -6,10 +6,25 @@ module ThreeScaleToolbox
|
|
6
6
|
include Task
|
7
7
|
|
8
8
|
def call
|
9
|
-
target.update_proxy
|
9
|
+
target.update_proxy target_proxy_attrs
|
10
10
|
target.update_oidc source.oidc if source.attrs['backend_version'] == 'oidc'
|
11
11
|
puts "updated proxy of #{target.id} to match the original"
|
12
12
|
end
|
13
|
+
|
14
|
+
def target_proxy_attrs
|
15
|
+
if source.attrs['deployment_option'] == 'hosted'
|
16
|
+
# For services with "hosted" deployment config,
|
17
|
+
# "Public Base URL" should not be copied, mainly because public base URL is self-assigned.
|
18
|
+
# Two 3scale products (aka services) cannot be served using the same public base URL.
|
19
|
+
source_proxy.dup.delete_if { |key, _v| %w[endpoint sandbox_endpoint].include? key }
|
20
|
+
else
|
21
|
+
source_proxy
|
22
|
+
end
|
23
|
+
end
|
24
|
+
|
25
|
+
def source_proxy
|
26
|
+
@source_proxy ||= source.proxy
|
27
|
+
end
|
13
28
|
end
|
14
29
|
end
|
15
30
|
end
|
@@ -8,7 +8,7 @@ module ThreeScaleToolbox
|
|
8
8
|
Cri::Command.define do
|
9
9
|
name 'update'
|
10
10
|
usage 'update <sub-command> [options]'
|
11
|
-
summary '[
|
11
|
+
summary '[DEPRECATED] update super command'
|
12
12
|
description 'Update 3scale entities between tenants'
|
13
13
|
|
14
14
|
run do |_opts, _args, cmd|
|
@@ -11,9 +11,9 @@ module ThreeScaleToolbox
|
|
11
11
|
Cri::Command.define do
|
12
12
|
name 'service'
|
13
13
|
usage 'service [opts] -s <src> -d <dst> <src_service_id> <dst_service_id>'
|
14
|
-
summary '[
|
14
|
+
summary '[DEPRECATED] update service'
|
15
15
|
description <<-HEREDOC
|
16
|
-
This command has been deprecated. Use '3scale copy
|
16
|
+
This command has been deprecated. Use '3scale service copy' instead.
|
17
17
|
\n Update existing service, update proxy settings, metrics, methods, application plans and mapping rules.'
|
18
18
|
HEREDOC
|
19
19
|
|
@@ -30,6 +30,7 @@ module ThreeScaleToolbox
|
|
30
30
|
end
|
31
31
|
|
32
32
|
def run
|
33
|
+
warn "\e[1m\e[31mThis command has been deprecated. Use '3scale service copy' instead\e[0m"
|
33
34
|
source_service = Entities::Service.new(
|
34
35
|
id: arguments[:src_service_id],
|
35
36
|
remote: threescale_client(fetch_required_option(:source))
|
@@ -142,19 +142,46 @@ module ThreeScaleToolbox
|
|
142
142
|
end
|
143
143
|
|
144
144
|
def create_pricing_rule(metric_id, pr_attrs)
|
145
|
-
remote.create_pricingrule id, metric_id, pr_attrs
|
145
|
+
pricing_rule_attrs = remote.create_pricingrule id, metric_id, pr_attrs
|
146
|
+
if (errors = pricing_rule_attrs['errors'])
|
147
|
+
raise ThreeScaleToolbox::Error, "Pricing rule has not been created. #{errors}"
|
148
|
+
end
|
149
|
+
|
150
|
+
pricing_rule_attrs
|
151
|
+
end
|
152
|
+
|
153
|
+
def delete_pricing_rule(metric_id, rule_id)
|
154
|
+
remote.delete_application_plan_pricingrule(id, metric_id, rule_id)
|
146
155
|
end
|
147
156
|
|
148
157
|
def pricing_rules
|
149
|
-
remote.list_pricingrules_per_application_plan id
|
158
|
+
pr_list = remote.list_pricingrules_per_application_plan id
|
159
|
+
|
160
|
+
if pr_list.respond_to?(:has_key?) && (errors = pr_list['errors'])
|
161
|
+
raise ThreeScaleToolbox::ThreeScaleApiError.new('pricing rules not read', errors)
|
162
|
+
end
|
163
|
+
|
164
|
+
pr_list
|
150
165
|
end
|
151
166
|
|
152
167
|
def features
|
153
|
-
remote.list_features_per_application_plan id
|
168
|
+
feature_list = remote.list_features_per_application_plan id
|
169
|
+
|
170
|
+
if feature_list.respond_to?(:has_key?) && (errors = feature_list['errors'])
|
171
|
+
raise ThreeScaleToolbox::ThreeScaleApiError.new('features not read', errors)
|
172
|
+
end
|
173
|
+
|
174
|
+
feature_list
|
154
175
|
end
|
155
176
|
|
156
177
|
def create_feature(feature_id)
|
157
|
-
remote.create_application_plan_feature id, feature_id
|
178
|
+
feature = remote.create_application_plan_feature id, feature_id
|
179
|
+
|
180
|
+
if (errors = feature['errors'])
|
181
|
+
raise ThreeScaleToolbox::ThreeScaleApiError.new('feature not created', errors)
|
182
|
+
end
|
183
|
+
|
184
|
+
feature
|
158
185
|
end
|
159
186
|
|
160
187
|
def delete
|
data/lib/3scale_toolbox/error.rb
CHANGED
@@ -1,9 +1,24 @@
|
|
1
1
|
module ThreeScaleToolbox
|
2
2
|
# Generic error. Superclass for all specific errors.
|
3
3
|
class Error < ::StandardError
|
4
|
+
def code
|
5
|
+
'E_3SCALE'
|
6
|
+
end
|
7
|
+
|
8
|
+
def kind
|
9
|
+
self.class
|
10
|
+
end
|
11
|
+
|
12
|
+
def stacktrace
|
13
|
+
# For managed errors, stacktrace should not be necessary
|
14
|
+
nil
|
15
|
+
end
|
4
16
|
end
|
5
17
|
|
6
18
|
class InvalidUrlError < Error
|
19
|
+
def code
|
20
|
+
'E_INVALID_URL'
|
21
|
+
end
|
7
22
|
end
|
8
23
|
|
9
24
|
class ActiveDocsNotFoundError < Error
|
@@ -12,6 +27,10 @@ module ThreeScaleToolbox
|
|
12
27
|
def initialize(id)
|
13
28
|
super("ActiveDocs with ID #{id} not found")
|
14
29
|
end
|
30
|
+
|
31
|
+
def code
|
32
|
+
'E_ACTIVEDOCS_NOT_FOUND'
|
33
|
+
end
|
15
34
|
end
|
16
35
|
|
17
36
|
class ThreeScaleApiError < Error
|
@@ -25,8 +44,39 @@ module ThreeScaleToolbox
|
|
25
44
|
def message
|
26
45
|
"#{super}. Errors: #{apierrors}"
|
27
46
|
end
|
47
|
+
|
48
|
+
def code
|
49
|
+
'E_3SCALE_API'
|
50
|
+
end
|
28
51
|
end
|
29
52
|
|
30
53
|
class InvalidIdError < Error
|
54
|
+
def code
|
55
|
+
'E_INVALID_ID'
|
56
|
+
end
|
57
|
+
end
|
58
|
+
|
59
|
+
class UnexpectedError < ::StandardError
|
60
|
+
attr_reader :unexpectederror
|
61
|
+
|
62
|
+
def initialize(err)
|
63
|
+
@unexpectederror = err
|
64
|
+
end
|
65
|
+
|
66
|
+
def message
|
67
|
+
unexpectederror.message
|
68
|
+
end
|
69
|
+
|
70
|
+
def kind
|
71
|
+
unexpectederror.class
|
72
|
+
end
|
73
|
+
|
74
|
+
def code
|
75
|
+
'E_UNKNOWN'
|
76
|
+
end
|
77
|
+
|
78
|
+
def stacktrace
|
79
|
+
unexpectederror.backtrace
|
80
|
+
end
|
31
81
|
end
|
32
82
|
end
|
data/licenses.xml
CHANGED
@@ -3,7 +3,7 @@
|
|
3
3
|
<dependencies>
|
4
4
|
<dependency>
|
5
5
|
<packageName>3scale-api</packageName>
|
6
|
-
<version>1.
|
6
|
+
<version>1.1.0</version>
|
7
7
|
<licenses>
|
8
8
|
<license>
|
9
9
|
<name>MIT</name>
|
@@ -13,7 +13,7 @@
|
|
13
13
|
</dependency>
|
14
14
|
<dependency>
|
15
15
|
<packageName>3scale_toolbox</packageName>
|
16
|
-
<version>0.
|
16
|
+
<version>0.17.0</version>
|
17
17
|
<licenses>
|
18
18
|
<license>
|
19
19
|
<name>MIT</name>
|
@@ -23,7 +23,7 @@
|
|
23
23
|
</dependency>
|
24
24
|
<dependency>
|
25
25
|
<packageName>activesupport</packageName>
|
26
|
-
<version>6.0.2
|
26
|
+
<version>6.0.3.2</version>
|
27
27
|
<licenses>
|
28
28
|
<license>
|
29
29
|
<name>MIT</name>
|
@@ -53,7 +53,7 @@
|
|
53
53
|
</dependency>
|
54
54
|
<dependency>
|
55
55
|
<packageName>bundler</packageName>
|
56
|
-
<version>1.
|
56
|
+
<version>1.17.3</version>
|
57
57
|
<licenses>
|
58
58
|
<license>
|
59
59
|
<name>unknown</name>
|
@@ -73,7 +73,7 @@
|
|
73
73
|
</dependency>
|
74
74
|
<dependency>
|
75
75
|
<packageName>concurrent-ruby</packageName>
|
76
|
-
<version>1.1.
|
76
|
+
<version>1.1.6</version>
|
77
77
|
<licenses>
|
78
78
|
<license>
|
79
79
|
<name>MIT</name>
|
@@ -161,7 +161,7 @@
|
|
161
161
|
</dependency>
|
162
162
|
<dependency>
|
163
163
|
<packageName>hashdiff</packageName>
|
164
|
-
<version>1.0.
|
164
|
+
<version>1.0.1</version>
|
165
165
|
<licenses>
|
166
166
|
<license>
|
167
167
|
<name>MIT</name>
|
@@ -171,7 +171,7 @@
|
|
171
171
|
</dependency>
|
172
172
|
<dependency>
|
173
173
|
<packageName>i18n</packageName>
|
174
|
-
<version>1.8.
|
174
|
+
<version>1.8.3</version>
|
175
175
|
<licenses>
|
176
176
|
<license>
|
177
177
|
<name>MIT</name>
|
@@ -191,7 +191,7 @@
|
|
191
191
|
</dependency>
|
192
192
|
<dependency>
|
193
193
|
<packageName>license_finder</packageName>
|
194
|
-
<version>5.
|
194
|
+
<version>5.11.1</version>
|
195
195
|
<licenses>
|
196
196
|
<license>
|
197
197
|
<name>MIT</name>
|
@@ -201,7 +201,7 @@
|
|
201
201
|
</dependency>
|
202
202
|
<dependency>
|
203
203
|
<packageName>method_source</packageName>
|
204
|
-
<version>0.
|
204
|
+
<version>1.0.0</version>
|
205
205
|
<licenses>
|
206
206
|
<license>
|
207
207
|
<name>MIT</name>
|
@@ -221,7 +221,7 @@
|
|
221
221
|
</dependency>
|
222
222
|
<dependency>
|
223
223
|
<packageName>minitest</packageName>
|
224
|
-
<version>5.14.
|
224
|
+
<version>5.14.1</version>
|
225
225
|
<licenses>
|
226
226
|
<license>
|
227
227
|
<name>MIT</name>
|
@@ -231,7 +231,7 @@
|
|
231
231
|
</dependency>
|
232
232
|
<dependency>
|
233
233
|
<packageName>mustermann</packageName>
|
234
|
-
<version>1.
|
234
|
+
<version>1.1.1</version>
|
235
235
|
<licenses>
|
236
236
|
<license>
|
237
237
|
<name>MIT</name>
|
@@ -241,7 +241,7 @@
|
|
241
241
|
</dependency>
|
242
242
|
<dependency>
|
243
243
|
<packageName>mustermann-contrib</packageName>
|
244
|
-
<version>1.
|
244
|
+
<version>1.1.1</version>
|
245
245
|
<licenses>
|
246
246
|
<license>
|
247
247
|
<name>MIT</name>
|
@@ -251,7 +251,7 @@
|
|
251
251
|
</dependency>
|
252
252
|
<dependency>
|
253
253
|
<packageName>nokogiri</packageName>
|
254
|
-
<version>1.10.
|
254
|
+
<version>1.10.9</version>
|
255
255
|
<licenses>
|
256
256
|
<license>
|
257
257
|
<name>MIT</name>
|
@@ -261,7 +261,7 @@
|
|
261
261
|
</dependency>
|
262
262
|
<dependency>
|
263
263
|
<packageName>oas_parser</packageName>
|
264
|
-
<version>0.
|
264
|
+
<version>0.25.1</version>
|
265
265
|
<licenses>
|
266
266
|
<license>
|
267
267
|
<name>MIT</name>
|
@@ -281,7 +281,7 @@
|
|
281
281
|
</dependency>
|
282
282
|
<dependency>
|
283
283
|
<packageName>pry</packageName>
|
284
|
-
<version>0.
|
284
|
+
<version>0.13.1</version>
|
285
285
|
<licenses>
|
286
286
|
<license>
|
287
287
|
<name>MIT</name>
|
@@ -291,7 +291,7 @@
|
|
291
291
|
</dependency>
|
292
292
|
<dependency>
|
293
293
|
<packageName>public_suffix</packageName>
|
294
|
-
<version>4.0.
|
294
|
+
<version>4.0.4</version>
|
295
295
|
<licenses>
|
296
296
|
<license>
|
297
297
|
<name>MIT</name>
|
@@ -301,7 +301,7 @@
|
|
301
301
|
</dependency>
|
302
302
|
<dependency>
|
303
303
|
<packageName>rake</packageName>
|
304
|
-
<version>
|
304
|
+
<version>13.0.1</version>
|
305
305
|
<licenses>
|
306
306
|
<license>
|
307
307
|
<name>MIT</name>
|
@@ -311,7 +311,7 @@
|
|
311
311
|
</dependency>
|
312
312
|
<dependency>
|
313
313
|
<packageName>rspec</packageName>
|
314
|
-
<version>3.
|
314
|
+
<version>3.9.0</version>
|
315
315
|
<licenses>
|
316
316
|
<license>
|
317
317
|
<name>MIT</name>
|
@@ -321,7 +321,7 @@
|
|
321
321
|
</dependency>
|
322
322
|
<dependency>
|
323
323
|
<packageName>rspec-core</packageName>
|
324
|
-
<version>3.
|
324
|
+
<version>3.9.1</version>
|
325
325
|
<licenses>
|
326
326
|
<license>
|
327
327
|
<name>MIT</name>
|
@@ -331,7 +331,7 @@
|
|
331
331
|
</dependency>
|
332
332
|
<dependency>
|
333
333
|
<packageName>rspec-expectations</packageName>
|
334
|
-
<version>3.
|
334
|
+
<version>3.9.1</version>
|
335
335
|
<licenses>
|
336
336
|
<license>
|
337
337
|
<name>MIT</name>
|
@@ -341,7 +341,7 @@
|
|
341
341
|
</dependency>
|
342
342
|
<dependency>
|
343
343
|
<packageName>rspec-mocks</packageName>
|
344
|
-
<version>3.
|
344
|
+
<version>3.9.1</version>
|
345
345
|
<licenses>
|
346
346
|
<license>
|
347
347
|
<name>MIT</name>
|
@@ -351,17 +351,27 @@
|
|
351
351
|
</dependency>
|
352
352
|
<dependency>
|
353
353
|
<packageName>rspec-support</packageName>
|
354
|
-
<version>3.
|
354
|
+
<version>3.9.2</version>
|
355
355
|
<licenses>
|
356
356
|
<license>
|
357
357
|
<name>MIT</name>
|
358
358
|
<url>http://opensource.org/licenses/mit-license</url>
|
359
359
|
</license>
|
360
360
|
</licenses>
|
361
|
+
</dependency>
|
362
|
+
<dependency>
|
363
|
+
<packageName>ruby2_keywords</packageName>
|
364
|
+
<version>0.0.2</version>
|
365
|
+
<licenses>
|
366
|
+
<license>
|
367
|
+
<name>ruby</name>
|
368
|
+
<url>http://www.ruby-lang.org/en/LICENSE.txt</url>
|
369
|
+
</license>
|
370
|
+
</licenses>
|
361
371
|
</dependency>
|
362
372
|
<dependency>
|
363
373
|
<packageName>rubyzip</packageName>
|
364
|
-
<version>2.
|
374
|
+
<version>2.3.0</version>
|
365
375
|
<licenses>
|
366
376
|
<license>
|
367
377
|
<name>Simplified BSD</name>
|
@@ -381,7 +391,7 @@
|
|
381
391
|
</dependency>
|
382
392
|
<dependency>
|
383
393
|
<packageName>thor</packageName>
|
384
|
-
<version>0.
|
394
|
+
<version>1.0.1</version>
|
385
395
|
<licenses>
|
386
396
|
<license>
|
387
397
|
<name>MIT</name>
|
@@ -411,7 +421,7 @@
|
|
411
421
|
</dependency>
|
412
422
|
<dependency>
|
413
423
|
<packageName>tzinfo</packageName>
|
414
|
-
<version>1.2.
|
424
|
+
<version>1.2.7</version>
|
415
425
|
<licenses>
|
416
426
|
<license>
|
417
427
|
<name>MIT</name>
|
@@ -421,7 +431,7 @@
|
|
421
431
|
</dependency>
|
422
432
|
<dependency>
|
423
433
|
<packageName>webmock</packageName>
|
424
|
-
<version>3.
|
434
|
+
<version>3.8.3</version>
|
425
435
|
<licenses>
|
426
436
|
<license>
|
427
437
|
<name>MIT</name>
|
@@ -451,7 +461,7 @@
|
|
451
461
|
</dependency>
|
452
462
|
<dependency>
|
453
463
|
<packageName>zeitwerk</packageName>
|
454
|
-
<version>2.
|
464
|
+
<version>2.3.1</version>
|
455
465
|
<licenses>
|
456
466
|
<license>
|
457
467
|
<name>MIT</name>
|
metadata
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: 3scale_toolbox
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.
|
4
|
+
version: 0.17.0
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Michal Cichra
|
@@ -9,7 +9,7 @@ authors:
|
|
9
9
|
autorequire:
|
10
10
|
bindir: exe
|
11
11
|
cert_chain: []
|
12
|
-
date: 2020-
|
12
|
+
date: 2020-07-20 00:00:00.000000000 Z
|
13
13
|
dependencies:
|
14
14
|
- !ruby/object:Gem::Dependency
|
15
15
|
name: bundler
|
@@ -45,14 +45,14 @@ dependencies:
|
|
45
45
|
requirements:
|
46
46
|
- - "~>"
|
47
47
|
- !ruby/object:Gem::Version
|
48
|
-
version: '
|
48
|
+
version: '13.0'
|
49
49
|
type: :development
|
50
50
|
prerelease: false
|
51
51
|
version_requirements: !ruby/object:Gem::Requirement
|
52
52
|
requirements:
|
53
53
|
- - "~>"
|
54
54
|
- !ruby/object:Gem::Version
|
55
|
-
version: '
|
55
|
+
version: '13.0'
|
56
56
|
- !ruby/object:Gem::Dependency
|
57
57
|
name: rspec
|
58
58
|
requirement: !ruby/object:Gem::Requirement
|
@@ -87,14 +87,14 @@ dependencies:
|
|
87
87
|
requirements:
|
88
88
|
- - "~>"
|
89
89
|
- !ruby/object:Gem::Version
|
90
|
-
version: '1.
|
90
|
+
version: '1.1'
|
91
91
|
type: :runtime
|
92
92
|
prerelease: false
|
93
93
|
version_requirements: !ruby/object:Gem::Requirement
|
94
94
|
requirements:
|
95
95
|
- - "~>"
|
96
96
|
- !ruby/object:Gem::Version
|
97
|
-
version: '1.
|
97
|
+
version: '1.1'
|
98
98
|
- !ruby/object:Gem::Dependency
|
99
99
|
name: cri
|
100
100
|
requirement: !ruby/object:Gem::Requirement
|
@@ -241,6 +241,8 @@ files:
|
|
241
241
|
- lib/3scale_toolbox/commands/product_command/copy_command/copy_backends_task.rb
|
242
242
|
- lib/3scale_toolbox/commands/product_command/copy_command/delete_target_backend_usages_task.rb
|
243
243
|
- lib/3scale_toolbox/commands/proxy_config_command.rb
|
244
|
+
- lib/3scale_toolbox/commands/proxy_config_command/export_command.rb
|
245
|
+
- lib/3scale_toolbox/commands/proxy_config_command/helper.rb
|
244
246
|
- lib/3scale_toolbox/commands/proxy_config_command/list_command.rb
|
245
247
|
- lib/3scale_toolbox/commands/proxy_config_command/promote_command.rb
|
246
248
|
- lib/3scale_toolbox/commands/proxy_config_command/show_command.rb
|
@@ -320,8 +322,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
|
|
320
322
|
- !ruby/object:Gem::Version
|
321
323
|
version: '0'
|
322
324
|
requirements: []
|
323
|
-
|
324
|
-
rubygems_version: 2.7.6
|
325
|
+
rubygems_version: 3.1.2
|
325
326
|
signing_key:
|
326
327
|
specification_version: 4
|
327
328
|
summary: 3scale Toolbox.
|