3scale_toolbox 0.19.3 → 0.20.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 -1
- data/README.md +6 -4
- data/lib/3scale_toolbox/3scale_client_factory.rb +9 -7
- data/lib/3scale_toolbox/base_command.rb +5 -1
- data/lib/3scale_toolbox/cli/null_printer.rb +11 -0
- data/lib/3scale_toolbox/cli.rb +1 -0
- data/lib/3scale_toolbox/commands/3scale_command.rb +1 -0
- data/lib/3scale_toolbox/commands/activedocs_command/apply_command.rb +1 -1
- data/lib/3scale_toolbox/commands/activedocs_command/create_command.rb +8 -9
- data/lib/3scale_toolbox/commands/import_command/openapi/create_activedocs_step.rb +1 -1
- data/lib/3scale_toolbox/commands/import_command/openapi/create_backend_mapping_rule_step.rb +21 -0
- data/lib/3scale_toolbox/commands/import_command/openapi/create_backend_method_step.rb +41 -0
- data/lib/3scale_toolbox/commands/import_command/openapi/create_backend_step.rb +62 -0
- data/lib/3scale_toolbox/commands/import_command/openapi/create_mapping_rule_step.rb +3 -1
- data/lib/3scale_toolbox/commands/import_command/openapi/create_service_step.rb +7 -2
- data/lib/3scale_toolbox/commands/import_command/openapi/import_backend_step.rb +31 -0
- data/lib/3scale_toolbox/commands/import_command/openapi/import_product_step.rb +30 -0
- data/lib/3scale_toolbox/commands/import_command/openapi/method.rb +1 -1
- data/lib/3scale_toolbox/commands/import_command/openapi/step.rb +27 -1
- data/lib/3scale_toolbox/commands/import_command/openapi/update_policies_step.rb +1 -1
- data/lib/3scale_toolbox/commands/import_command/openapi/update_service_oidc_conf_step.rb +1 -1
- data/lib/3scale_toolbox/commands/import_command/openapi/update_service_proxy_step.rb +4 -8
- data/lib/3scale_toolbox/commands/import_command/openapi.rb +44 -18
- data/lib/3scale_toolbox/commands/plans_command/import_command.rb +1 -1
- data/lib/3scale_toolbox/commands/policies_command/import_command.rb +1 -1
- data/lib/3scale_toolbox/commands/product_command/import_command.rb +1 -1
- data/lib/3scale_toolbox/commands/proxy_command/deploy_command.rb +54 -0
- data/lib/3scale_toolbox/commands/proxy_command/show_command.rb +54 -0
- data/lib/3scale_toolbox/commands/proxy_command/update_command.rb +75 -0
- data/lib/3scale_toolbox/commands/proxy_command.rb +28 -0
- data/lib/3scale_toolbox/commands/proxy_config_command/deploy_command.rb +3 -2
- data/lib/3scale_toolbox/commands/service_command/show_command.rb +1 -2
- data/lib/3scale_toolbox/commands.rb +2 -2
- data/lib/3scale_toolbox/entities/backend.rb +13 -1
- data/lib/3scale_toolbox/entities/service.rb +1 -2
- data/lib/3scale_toolbox/resource_reader.rb +24 -9
- data/lib/3scale_toolbox/version.rb +1 -1
- data/licenses.xml +18 -18
- metadata +28 -8
- data/lib/3scale_toolbox/commands/update_command/service_command/copy_service_settings_task.rb +0 -35
- data/lib/3scale_toolbox/commands/update_command/service_command/delete_activedocs_task.rb +0 -24
- data/lib/3scale_toolbox/commands/update_command/service_command.rb +0 -80
- data/lib/3scale_toolbox/commands/update_command.rb +0 -22
checksums.yaml
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
---
|
|
2
2
|
SHA256:
|
|
3
|
-
metadata.gz:
|
|
4
|
-
data.tar.gz:
|
|
3
|
+
metadata.gz: f688ec02bf32ca42f99e737b789e9826111d09417987fc0ef8bb32ee1719956b
|
|
4
|
+
data.tar.gz: '068391c70eeb07ddd450af05abe77c80e4b623c53383f5da6b75375d45cade58'
|
|
5
5
|
SHA512:
|
|
6
|
-
metadata.gz:
|
|
7
|
-
data.tar.gz:
|
|
6
|
+
metadata.gz: 82fe4022c976594d2d8b52db9d84f0b1d8886738c3f076614864ddc34b48e24c62445c6fab34d25c9ce164176f19490c290bc3d97b5f8b913f1a57f20ee9a2d6
|
|
7
|
+
data.tar.gz: 9b24f6ee07f2209d1180ce57cf21096b6b9a2970c07539a4619c21dbcbc5700359a1b132539ece15668d9c6753a8858a89cb635ab491385f0f8e15d6388c389a
|
data/3scale_toolbox.gemspec
CHANGED
|
@@ -36,8 +36,9 @@ Gem::Specification.new do |spec|
|
|
|
36
36
|
spec.add_development_dependency 'webmock', '~> 3.4'
|
|
37
37
|
spec.required_ruby_version = '>= 2.6'
|
|
38
38
|
|
|
39
|
-
spec.add_dependency '3scale-api', '~> 1.
|
|
39
|
+
spec.add_dependency '3scale-api', '~> 1.6'
|
|
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'
|
|
43
|
+
spec.add_dependency 'activesupport', '~> 6.0'
|
|
43
44
|
end
|
data/README.md
CHANGED
|
@@ -2,6 +2,7 @@
|
|
|
2
2
|
[](https://circleci.com/gh/3scale/3scale_toolbox)
|
|
3
3
|
[](http://www.apache.org/licenses/LICENSE-2.0)
|
|
4
4
|
[](https://github.com/3scale/3scale_toolbox/releases/latest)
|
|
5
|
+
[](https://codecov.io/gh/3scale/3scale_toolbox)
|
|
5
6
|
|
|
6
7
|
## Description
|
|
7
8
|
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).
|
|
@@ -22,7 +23,8 @@
|
|
|
22
23
|
* Create, Apply, List, Delete [Method](docs/method.md)
|
|
23
24
|
* Create, Apply, List, Show, Delete [Service](docs/service.md)
|
|
24
25
|
* Create, Apply, List, Delete [ActiveDocs](docs/activedocs.md)
|
|
25
|
-
*
|
|
26
|
+
* Show, Update, Deploy [APIcast proxy settings](docs/proxy.md)
|
|
27
|
+
* List, Show, Promote, Export [Staging/Production Proxy Configuration](docs/proxy-config.md)
|
|
26
28
|
* [Copy Policy Registry](docs/copy-policy-registry.md)
|
|
27
29
|
* Create, Apply, List, Show, Delete, Suspend, Resume [Applications](docs/applications.md)
|
|
28
30
|
* [Export/Import Product Policy Chain](docs/export-import-policy-chain.md)
|
|
@@ -82,16 +84,18 @@ COMMANDS
|
|
|
82
84
|
import import super command
|
|
83
85
|
method method super command
|
|
84
86
|
metric metric super command
|
|
87
|
+
policies policies super command
|
|
85
88
|
policy-registry policy-registry super command
|
|
86
89
|
product product super command
|
|
90
|
+
proxy proxy super command
|
|
87
91
|
proxy-config proxy-config super command
|
|
88
92
|
remote remotes super command
|
|
89
93
|
service services super command
|
|
90
|
-
update [DEPRECATED] update super command
|
|
91
94
|
|
|
92
95
|
OPTIONS
|
|
93
96
|
-c --config-file=<value> 3scale toolbox configuration file (default:
|
|
94
97
|
$HOME/.3scalerc.yaml)
|
|
98
|
+
--disable-keep-alive Disable keep alive HTTP connection mode
|
|
95
99
|
-h --help show help for this command
|
|
96
100
|
-k --insecure Proceed and operate even for server
|
|
97
101
|
connections otherwise considered insecure
|
|
@@ -173,7 +177,6 @@ Then register the core command in `lib/3scale_toolbox/commands.rb`
|
|
|
173
177
|
+++ b/lib/3scale_toolbox/commands.rb
|
|
174
178
|
@@ -4,6 +4,7 @@ require '3scale_toolbox/commands/copy_command'
|
|
175
179
|
require '3scale_toolbox/commands/import_command'
|
|
176
|
-
require '3scale_toolbox/commands/update_command'
|
|
177
180
|
require '3scale_toolbox/commands/remote_command'
|
|
178
181
|
+require '3scale_toolbox/commands/service_list_command'
|
|
179
182
|
|
|
@@ -182,7 +185,6 @@ Then register the core command in `lib/3scale_toolbox/commands.rb`
|
|
|
182
185
|
@@ -12,7 +13,8 @@ module ThreeScaleToolbox
|
|
183
186
|
ThreeScaleToolbox::Commands::CopyCommand,
|
|
184
187
|
ThreeScaleToolbox::Commands::ImportCommand,
|
|
185
|
-
ThreeScaleToolbox::Commands::UpdateCommand,
|
|
186
188
|
- ThreeScaleToolbox::Commands::RemoteCommand::RemoteCommand
|
|
187
189
|
+ ThreeScaleToolbox::Commands::RemoteCommand::RemoteCommand,
|
|
188
190
|
+ ThreeScaleToolbox::Commands::ServiceListCommand
|
|
@@ -1,18 +1,19 @@
|
|
|
1
1
|
module ThreeScaleToolbox
|
|
2
2
|
class ThreeScaleClientFactory
|
|
3
3
|
class << self
|
|
4
|
-
def get(remotes, remote_str, verify_ssl, verbose = false)
|
|
5
|
-
new(remotes, remote_str, verify_ssl, verbose).call
|
|
4
|
+
def get(remotes, remote_str, verify_ssl, verbose = false, keep_alive = true)
|
|
5
|
+
new(remotes, remote_str, verify_ssl, verbose, keep_alive).call
|
|
6
6
|
end
|
|
7
7
|
end
|
|
8
8
|
|
|
9
|
-
attr_reader :remotes, :remote_str, :verify_ssl, :verbose
|
|
9
|
+
attr_reader :remotes, :remote_str, :verify_ssl, :verbose, :keep_alive
|
|
10
10
|
|
|
11
|
-
def initialize(remotes, remote_str, verify_ssl, verbose)
|
|
11
|
+
def initialize(remotes, remote_str, verify_ssl, verbose, keep_alive)
|
|
12
12
|
@remotes = remotes
|
|
13
13
|
@remote_str = remote_str
|
|
14
14
|
@verify_ssl = verify_ssl
|
|
15
15
|
@verbose = verbose
|
|
16
|
+
@keep_alive = keep_alive
|
|
16
17
|
end
|
|
17
18
|
|
|
18
19
|
def call
|
|
@@ -22,15 +23,16 @@ module ThreeScaleToolbox
|
|
|
22
23
|
remote = remotes.fetch(remote_str)
|
|
23
24
|
end
|
|
24
25
|
|
|
25
|
-
client = remote_client(**remote.merge(verify_ssl: verify_ssl))
|
|
26
|
+
client = remote_client(**remote.merge(verify_ssl: verify_ssl, keep_alive: keep_alive))
|
|
26
27
|
client = ProxyLogger.new(client) if verbose
|
|
27
28
|
RemoteCache.new(client)
|
|
28
29
|
end
|
|
29
30
|
|
|
30
31
|
private
|
|
31
32
|
|
|
32
|
-
def remote_client(endpoint:, authentication:, verify_ssl:)
|
|
33
|
-
ThreeScale::API.new(endpoint: endpoint, provider_key: authentication,
|
|
33
|
+
def remote_client(endpoint:, authentication:, verify_ssl:, keep_alive:)
|
|
34
|
+
ThreeScale::API.new(endpoint: endpoint, provider_key: authentication,
|
|
35
|
+
verify_ssl: verify_ssl, keep_alive: keep_alive)
|
|
34
36
|
end
|
|
35
37
|
end
|
|
36
38
|
end
|
|
@@ -46,7 +46,7 @@ module ThreeScaleToolbox
|
|
|
46
46
|
# Input param can be endpoint url or remote name
|
|
47
47
|
#
|
|
48
48
|
def threescale_client(str)
|
|
49
|
-
ThreeScaleClientFactory.get(remotes, str, verify_ssl, verbose)
|
|
49
|
+
ThreeScaleClientFactory.get(remotes, str, verify_ssl, verbose, keep_alive)
|
|
50
50
|
end
|
|
51
51
|
|
|
52
52
|
def verify_ssl
|
|
@@ -58,6 +58,10 @@ module ThreeScaleToolbox
|
|
|
58
58
|
options[:verbose]
|
|
59
59
|
end
|
|
60
60
|
|
|
61
|
+
def keep_alive
|
|
62
|
+
!options[:'disable-keep-alive']
|
|
63
|
+
end
|
|
64
|
+
|
|
61
65
|
def exit_with_message(message)
|
|
62
66
|
raise ThreeScaleToolbox::Error, message
|
|
63
67
|
end
|
data/lib/3scale_toolbox/cli.rb
CHANGED
|
@@ -17,6 +17,7 @@ module ThreeScaleToolbox
|
|
|
17
17
|
end
|
|
18
18
|
flag :k, :insecure, 'Proceed and operate even for server connections otherwise considered insecure'
|
|
19
19
|
flag nil, :verbose, 'Verbose mode'
|
|
20
|
+
flag nil, :'disable-keep-alive', 'Disable keep alive HTTP connection mode'
|
|
20
21
|
flag :h, :help, 'show help for this command' do |_, cmd|
|
|
21
22
|
puts cmd.help
|
|
22
23
|
exit 0
|
|
@@ -108,7 +108,7 @@ module ThreeScaleToolbox
|
|
|
108
108
|
|
|
109
109
|
def read_activedocs_json_spec
|
|
110
110
|
activedoc_spec = option_openapi_spec
|
|
111
|
-
activedoc_spec_content = load_resource(activedoc_spec)
|
|
111
|
+
activedoc_spec_content = load_resource(activedoc_spec, verify_ssl)
|
|
112
112
|
JSON.pretty_generate(activedoc_spec_content)
|
|
113
113
|
end
|
|
114
114
|
|
|
@@ -52,20 +52,19 @@ module ThreeScaleToolbox
|
|
|
52
52
|
end
|
|
53
53
|
|
|
54
54
|
def activedocs_json_spec
|
|
55
|
-
|
|
56
|
-
activedoc_spec_content = load_resource(arguments[:activedocs_spec])
|
|
55
|
+
activedoc_spec_content = load_resource(arguments[:activedocs_spec], verify_ssl)
|
|
57
56
|
JSON.pretty_generate(activedoc_spec_content)
|
|
58
57
|
end
|
|
59
58
|
|
|
60
59
|
def activedocs_attrs
|
|
61
60
|
{
|
|
62
|
-
|
|
63
|
-
|
|
64
|
-
|
|
65
|
-
|
|
66
|
-
|
|
67
|
-
|
|
68
|
-
|
|
61
|
+
'service_id' => options[:'service-id'],
|
|
62
|
+
'published' => options[:'published'],
|
|
63
|
+
'skip_swagger_validations' => options[:'skip-swagger-validations'],
|
|
64
|
+
'description' => options[:'description'],
|
|
65
|
+
'system_name' => options[:'system-name'],
|
|
66
|
+
'name' => activedocs_name,
|
|
67
|
+
'body' => activedocs_json_spec,
|
|
69
68
|
}.compact
|
|
70
69
|
end
|
|
71
70
|
|
|
@@ -23,7 +23,7 @@ module ThreeScaleToolbox
|
|
|
23
23
|
unless ThreeScaleToolbox::Helper.system_name_already_taken_error? errors
|
|
24
24
|
|
|
25
25
|
# if activedocs system_name exists, ignore error, update activedocs
|
|
26
|
-
|
|
26
|
+
logger.info 'Activedocs exists, update!'
|
|
27
27
|
update_res = threescale_client.update_activedocs(find_activedocs_id, active_doc)
|
|
28
28
|
raise ThreeScaleToolbox::Error, "ActiveDocs has not been updated. #{update_res['errors']}" unless update_res['errors'].nil?
|
|
29
29
|
end
|
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
module ThreeScaleToolbox
|
|
2
|
+
module Commands
|
|
3
|
+
module ImportCommand
|
|
4
|
+
module OpenAPI
|
|
5
|
+
class CreateBackendMappingRulesStep
|
|
6
|
+
include Step
|
|
7
|
+
|
|
8
|
+
def call
|
|
9
|
+
backend.mapping_rules.each(&:delete)
|
|
10
|
+
|
|
11
|
+
report['mapping_rules'] = {}
|
|
12
|
+
operations.each do |op|
|
|
13
|
+
b_m_r = Entities::BackendMappingRule.create(backend: backend, attrs: op.mapping_rule)
|
|
14
|
+
report['mapping_rules'][op.friendly_name] = op.mapping_rule
|
|
15
|
+
end
|
|
16
|
+
end
|
|
17
|
+
end
|
|
18
|
+
end
|
|
19
|
+
end
|
|
20
|
+
end
|
|
21
|
+
end
|
|
@@ -0,0 +1,41 @@
|
|
|
1
|
+
module ThreeScaleToolbox
|
|
2
|
+
module Commands
|
|
3
|
+
module ImportCommand
|
|
4
|
+
module OpenAPI
|
|
5
|
+
class CreateBackendMethodsStep
|
|
6
|
+
include Step
|
|
7
|
+
|
|
8
|
+
def call
|
|
9
|
+
missing_operations.each do |op|
|
|
10
|
+
method = Entities::BackendMethod.create(backend: backend, attrs: op.method)
|
|
11
|
+
op.set(:metric_id, method.id)
|
|
12
|
+
end
|
|
13
|
+
|
|
14
|
+
existing_operations.each do |op|
|
|
15
|
+
method_attrs = methods_index.fetch(op.method['system_name']).attrs
|
|
16
|
+
method = Entities::BackendMethod.new(id: method_attrs.fetch('id'), backend: backend)
|
|
17
|
+
method.update(op.method)
|
|
18
|
+
op.set(:metric_id, method.id)
|
|
19
|
+
end
|
|
20
|
+
end
|
|
21
|
+
|
|
22
|
+
private
|
|
23
|
+
|
|
24
|
+
def methods_index
|
|
25
|
+
@methods_index ||= backend.methods.each_with_object({}) do |method, acc|
|
|
26
|
+
acc[method.system_name] = method
|
|
27
|
+
end
|
|
28
|
+
end
|
|
29
|
+
|
|
30
|
+
def missing_operations
|
|
31
|
+
operations.reject { |op| methods_index.key? op.method['system_name'] }
|
|
32
|
+
end
|
|
33
|
+
|
|
34
|
+
def existing_operations
|
|
35
|
+
operations.select { |op| methods_index.key? op.method['system_name'] }
|
|
36
|
+
end
|
|
37
|
+
end
|
|
38
|
+
end
|
|
39
|
+
end
|
|
40
|
+
end
|
|
41
|
+
end
|
|
@@ -0,0 +1,62 @@
|
|
|
1
|
+
module ThreeScaleToolbox
|
|
2
|
+
module Commands
|
|
3
|
+
module ImportCommand
|
|
4
|
+
module OpenAPI
|
|
5
|
+
class CreateBackendStep
|
|
6
|
+
include Step
|
|
7
|
+
|
|
8
|
+
##
|
|
9
|
+
# Creates backend with a given system_name
|
|
10
|
+
# If the backend already exists, update basic settings like name and description
|
|
11
|
+
def call
|
|
12
|
+
# Update backend and update context
|
|
13
|
+
self.backend = Entities::Backend.find_by_system_name(remote: threescale_client,
|
|
14
|
+
system_name: system_name)
|
|
15
|
+
if backend.nil?
|
|
16
|
+
# Create service and update context
|
|
17
|
+
self.backend = Entities::Backend.create(remote: threescale_client,
|
|
18
|
+
attrs: create_attrs)
|
|
19
|
+
else
|
|
20
|
+
backend.update(update_attrs)
|
|
21
|
+
end
|
|
22
|
+
|
|
23
|
+
report['id'] = backend.id
|
|
24
|
+
report['system_name'] = backend.system_name
|
|
25
|
+
report['private_endpoint'] = backend.private_endpoint
|
|
26
|
+
end
|
|
27
|
+
|
|
28
|
+
private
|
|
29
|
+
|
|
30
|
+
def create_attrs
|
|
31
|
+
{
|
|
32
|
+
'name' => title,
|
|
33
|
+
'system_name' => system_name,
|
|
34
|
+
'description' => description,
|
|
35
|
+
'private_endpoint' => private_endpoint
|
|
36
|
+
}
|
|
37
|
+
end
|
|
38
|
+
|
|
39
|
+
def update_attrs
|
|
40
|
+
{
|
|
41
|
+
'name' => title,
|
|
42
|
+
'description' => description,
|
|
43
|
+
'private_endpoint' => private_endpoint
|
|
44
|
+
}
|
|
45
|
+
end
|
|
46
|
+
|
|
47
|
+
def system_name
|
|
48
|
+
target_system_name || title.downcase.gsub(/[^\w]/, '_')
|
|
49
|
+
end
|
|
50
|
+
|
|
51
|
+
def title
|
|
52
|
+
api_spec.title
|
|
53
|
+
end
|
|
54
|
+
|
|
55
|
+
def description
|
|
56
|
+
api_spec.description
|
|
57
|
+
end
|
|
58
|
+
end
|
|
59
|
+
end
|
|
60
|
+
end
|
|
61
|
+
end
|
|
62
|
+
end
|
|
@@ -6,10 +6,12 @@ module ThreeScaleToolbox
|
|
|
6
6
|
include Step
|
|
7
7
|
|
|
8
8
|
def call
|
|
9
|
+
report['mapping_rules'] = {}
|
|
9
10
|
operations.each do |op|
|
|
10
11
|
Entities::MappingRule.create(service: service,
|
|
11
12
|
attrs: op.mapping_rule)
|
|
12
|
-
|
|
13
|
+
logger.info "Created #{op.http_method} #{op.pattern} endpoint"
|
|
14
|
+
report['mapping_rules'][op.friendly_name] = op.mapping_rule
|
|
13
15
|
end
|
|
14
16
|
end
|
|
15
17
|
end
|
|
@@ -16,11 +16,16 @@ module ThreeScaleToolbox
|
|
|
16
16
|
# Create service and update context
|
|
17
17
|
self.service = Entities::Service.create(remote: threescale_client,
|
|
18
18
|
service_params: service_settings)
|
|
19
|
-
|
|
19
|
+
logger.info "Created service id: #{service.id}, name: #{service_name}"
|
|
20
20
|
else
|
|
21
21
|
service.update(service_settings)
|
|
22
|
-
|
|
22
|
+
logger.info "Updated service id: #{service.id}, name: #{service_name}"
|
|
23
23
|
end
|
|
24
|
+
|
|
25
|
+
report['id'] = service.id
|
|
26
|
+
report['system_name'] = service.system_name
|
|
27
|
+
report['name'] = service.name
|
|
28
|
+
report['backend_version'] = api_spec.service_backend_version
|
|
24
29
|
end
|
|
25
30
|
|
|
26
31
|
private
|
|
@@ -0,0 +1,31 @@
|
|
|
1
|
+
module ThreeScaleToolbox
|
|
2
|
+
module Commands
|
|
3
|
+
module ImportCommand
|
|
4
|
+
module OpenAPI
|
|
5
|
+
class ImportBackendStep
|
|
6
|
+
include Step
|
|
7
|
+
|
|
8
|
+
def call
|
|
9
|
+
verify_params
|
|
10
|
+
|
|
11
|
+
tasks = []
|
|
12
|
+
tasks << CreateBackendStep.new(context)
|
|
13
|
+
tasks << CreateBackendMethodsStep.new(context)
|
|
14
|
+
tasks << CreateBackendMappingRulesStep.new(context)
|
|
15
|
+
|
|
16
|
+
# run tasks
|
|
17
|
+
tasks.each(&:call)
|
|
18
|
+
end
|
|
19
|
+
|
|
20
|
+
private
|
|
21
|
+
|
|
22
|
+
def verify_params
|
|
23
|
+
if private_endpoint.nil?
|
|
24
|
+
raise ThreeScaleToolbox::Error, 'private endpoint not specified'
|
|
25
|
+
end
|
|
26
|
+
end
|
|
27
|
+
end
|
|
28
|
+
end
|
|
29
|
+
end
|
|
30
|
+
end
|
|
31
|
+
end
|
|
@@ -0,0 +1,30 @@
|
|
|
1
|
+
module ThreeScaleToolbox
|
|
2
|
+
module Commands
|
|
3
|
+
module ImportCommand
|
|
4
|
+
module OpenAPI
|
|
5
|
+
class ImportProductStep
|
|
6
|
+
include Step
|
|
7
|
+
|
|
8
|
+
def call
|
|
9
|
+
tasks = []
|
|
10
|
+
tasks << CreateServiceStep.new(context)
|
|
11
|
+
# other tasks might read proxy settings (CreateActiveDocsStep does)
|
|
12
|
+
tasks << UpdateServiceProxyStep.new(context)
|
|
13
|
+
tasks << CreateMethodsStep.new(context)
|
|
14
|
+
tasks << ThreeScaleToolbox::Commands::ServiceCommand::CopyCommand::DestroyMappingRulesTask.new(context)
|
|
15
|
+
tasks << CreateMappingRulesStep.new(context)
|
|
16
|
+
tasks << CreateActiveDocsStep.new(context)
|
|
17
|
+
tasks << UpdateServiceOidcConfStep.new(context)
|
|
18
|
+
tasks << UpdatePoliciesStep.new(context)
|
|
19
|
+
|
|
20
|
+
# run tasks
|
|
21
|
+
tasks.each(&:call)
|
|
22
|
+
|
|
23
|
+
# This should be the last step
|
|
24
|
+
ThreeScaleToolbox::Commands::ServiceCommand::CopyCommand::BumpProxyVersionTask.new(service: context[:target]).call
|
|
25
|
+
end
|
|
26
|
+
end
|
|
27
|
+
end
|
|
28
|
+
end
|
|
29
|
+
end
|
|
30
|
+
end
|
|
@@ -9,6 +9,18 @@ module ThreeScaleToolbox
|
|
|
9
9
|
@context = context
|
|
10
10
|
end
|
|
11
11
|
|
|
12
|
+
def report
|
|
13
|
+
context[:report] ||= {}
|
|
14
|
+
end
|
|
15
|
+
|
|
16
|
+
def backend
|
|
17
|
+
context[:backend_target]
|
|
18
|
+
end
|
|
19
|
+
|
|
20
|
+
def backend=(backend_obj)
|
|
21
|
+
context[:backend_target] = backend_obj
|
|
22
|
+
end
|
|
23
|
+
|
|
12
24
|
# Can be nil on initialization time and not nil afterwards
|
|
13
25
|
# method to fetch from context required
|
|
14
26
|
def service
|
|
@@ -41,7 +53,7 @@ module ThreeScaleToolbox
|
|
|
41
53
|
public_base_path: public_base_path,
|
|
42
54
|
path: op[:path],
|
|
43
55
|
verb: op[:verb],
|
|
44
|
-
|
|
56
|
+
operation_id: op[:operation_id],
|
|
45
57
|
description: op[:description],
|
|
46
58
|
prefix_matching: prefix_matching,
|
|
47
59
|
)
|
|
@@ -101,6 +113,16 @@ module ThreeScaleToolbox
|
|
|
101
113
|
context[:prefix_matching]
|
|
102
114
|
end
|
|
103
115
|
|
|
116
|
+
def private_endpoint
|
|
117
|
+
override_private_base_url || host
|
|
118
|
+
end
|
|
119
|
+
|
|
120
|
+
def host
|
|
121
|
+
return if api_spec.host.nil?
|
|
122
|
+
|
|
123
|
+
"#{api_spec.scheme || 'https'}://#{api_spec.host}"
|
|
124
|
+
end
|
|
125
|
+
|
|
104
126
|
def base_path
|
|
105
127
|
api_spec.base_path || '/'
|
|
106
128
|
end
|
|
@@ -112,6 +134,10 @@ module ThreeScaleToolbox
|
|
|
112
134
|
def private_base_path
|
|
113
135
|
override_private_basepath || base_path
|
|
114
136
|
end
|
|
137
|
+
|
|
138
|
+
def logger
|
|
139
|
+
context[:logger]
|
|
140
|
+
end
|
|
115
141
|
end
|
|
116
142
|
end
|
|
117
143
|
end
|
|
@@ -22,7 +22,7 @@ module ThreeScaleToolbox
|
|
|
22
22
|
raise ThreeScaleToolbox::Error, "Service proxy has not been updated. #{errors}"
|
|
23
23
|
end
|
|
24
24
|
|
|
25
|
-
|
|
25
|
+
logger.info 'Service proxy updated'
|
|
26
26
|
end
|
|
27
27
|
|
|
28
28
|
private
|
|
@@ -31,12 +31,14 @@ module ThreeScaleToolbox
|
|
|
31
31
|
return if production_public_base_url.nil?
|
|
32
32
|
|
|
33
33
|
settings[:endpoint] = production_public_base_url
|
|
34
|
+
report['endpoint'] = production_public_base_url
|
|
34
35
|
end
|
|
35
36
|
|
|
36
37
|
def add_sandbox_endpoint_settings(settings)
|
|
37
38
|
return if staging_public_base_url.nil?
|
|
38
39
|
|
|
39
40
|
settings[:sandbox_endpoint] = staging_public_base_url
|
|
41
|
+
report['sandbox_endpoint'] = staging_public_base_url
|
|
40
42
|
end
|
|
41
43
|
|
|
42
44
|
def add_api_backend_settings(settings)
|
|
@@ -74,13 +76,7 @@ module ThreeScaleToolbox
|
|
|
74
76
|
end
|
|
75
77
|
|
|
76
78
|
def private_base_url
|
|
77
|
-
override_private_base_url ||
|
|
78
|
-
end
|
|
79
|
-
|
|
80
|
-
def private_base_url_from_openapi
|
|
81
|
-
return if api_spec.host.nil?
|
|
82
|
-
|
|
83
|
-
"#{api_spec.scheme || 'https'}://#{api_spec.host}"
|
|
79
|
+
override_private_base_url || host
|
|
84
80
|
end
|
|
85
81
|
end
|
|
86
82
|
end
|