3scale_toolbox 0.16.0 → 0.17.0
Sign up to get free protection for your applications and to get access to all the features.
- 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
|
[![CircleCI](https://circleci.com/gh/3scale/3scale_toolbox.svg?style=svg)](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
|
+
[![License](https://img.shields.io/badge/license-Apache--2.0-blue.svg)](http://www.apache.org/licenses/LICENSE-2.0)
|
4
|
+
[![GitHub release](https://img.shields.io/github/v/release/3scale/3scale_toolbox.svg)](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.
|