3scale_toolbox 0.18.2 → 0.19.2

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 CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: 601ddede06d5a842020be721015fbc05a8d9c8409a42794961d6c888e60b62ed
4
- data.tar.gz: fa8c908ff50157b7e438d0a5ad185034e74af219b2b79dd3a1037c120d99111f
3
+ metadata.gz: dee95ebde6b993418261f63857e80e18c8dd94bcfea9b92c6fa505cbbfdade99
4
+ data.tar.gz: ff8c3c97adb47ad141b2af12f8d4481330f9f25ce8819ecb5162666c6eedc521
5
5
  SHA512:
6
- metadata.gz: e11b9ad812a4b1fec7e9cbfc85ef7b39ce4ca688b06bfd95c8f927624661b23828ce4650d95b082e2314ecf8fdc8c9eb8b76af2ab88f536515f1154255f77e19
7
- data.tar.gz: bb33acecf3213159343cbf9aba66d8c41e0d5c45842c3d80a3610af1b9cf92c3c7f16d3062372f58dcdaa313e6dcc0bc7dd197c9f53687a59b5734ada9152f77
6
+ metadata.gz: 41473b4f397a15743224e1848aecdd21abdf8a0246833522c2a3aadf6ed5c5cc58970e4761bb61801afa2e32b4326a33d15bf71db3f926c06a7620f7daa5e8b1
7
+ data.tar.gz: 6d1396f584b308ba1f978f02981605023d346c2ff39d806e1e3b265b7d16233f72beb4f7fc896e99a6d62d5b765878d5e9c71ee4eeb444db91101decc0a16bae
@@ -8,8 +8,8 @@ Gem::Specification.new do |spec|
8
8
  spec.name = '3scale_toolbox'
9
9
  spec.version = ThreeScaleToolbox::VERSION
10
10
  spec.licenses = ['MIT']
11
- spec.authors = ['Michal Cichra', 'Eguzki Astiz Lezaun']
12
- spec.email = ['michal@3scale.net', 'eastizle@redhat.com']
11
+ spec.authors = ['Miguel Soriano', 'Eguzki Astiz Lezaun']
12
+ spec.email = ['msoriano@redhat.com', 'eastizle@redhat.com']
13
13
 
14
14
  spec.summary = %q{3scale Toolbox.}
15
15
  spec.description = %q{3scale tools to manage your API from the terminal.}
@@ -34,7 +34,7 @@ Gem::Specification.new do |spec|
34
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
- spec.required_ruby_version = '>= 2.5'
37
+ spec.required_ruby_version = '>= 2.6'
38
38
 
39
39
  spec.add_dependency '3scale-api', '~> 1.4'
40
40
  spec.add_dependency 'cri', '~> 2.15'
data/README.md CHANGED
@@ -39,7 +39,6 @@
39
39
  ## Requirements
40
40
  Supported Ruby interpreters
41
41
 
42
- * MRI 2.5
43
42
  * MRI 2.6
44
43
  * MRI 2.7
45
44
 
@@ -219,5 +218,5 @@ Install, uninstall and update plugins using tools like [RubyGems](https://guides
219
218
 
220
219
  ## Contributing
221
220
 
222
- Bug reports and pull requests are welcome on GitHub at https://github.com/3scale/3scale_toolbox.
221
+ If you are interested in contributing to 3scale Toolbox, please refer to instructions available [here](docs/contributing.md)
223
222
 
@@ -0,0 +1,18 @@
1
+ module ThreeScaleToolbox
2
+ module Commands
3
+ module BackendCommand
4
+ module CopyCommand
5
+ class DeleteMappingRulesTask
6
+ include Task
7
+
8
+ # entrypoint
9
+ def run
10
+ return unless delete_mapping_rules
11
+
12
+ target_backend.mapping_rules.each(&:delete)
13
+ end
14
+ end
15
+ end
16
+ end
17
+ end
18
+ end
@@ -53,6 +53,10 @@ module ThreeScaleToolbox
53
53
  context[:report] ||= {}
54
54
  end
55
55
 
56
+ def delete_mapping_rules
57
+ context.fetch(:delete_mapping_rules, false)
58
+ end
59
+
56
60
  private
57
61
 
58
62
  def find_source_backend
@@ -2,6 +2,7 @@ require '3scale_toolbox/commands/backend_command/copy_command/task'
2
2
  require '3scale_toolbox/commands/backend_command/copy_command/create_or_update_target_backend_task'
3
3
  require '3scale_toolbox/commands/backend_command/copy_command/copy_metrics_task'
4
4
  require '3scale_toolbox/commands/backend_command/copy_command/copy_methods_task'
5
+ require '3scale_toolbox/commands/backend_command/copy_command/delete_mapping_rules_task'
5
6
  require '3scale_toolbox/commands/backend_command/copy_command/copy_mapping_rules_task'
6
7
 
7
8
  module ThreeScaleToolbox
@@ -17,7 +18,7 @@ module ThreeScaleToolbox
17
18
  summary 'Copy backend'
18
19
  description <<-HEREDOC
19
20
  This command makes a copy of the referenced backend.
20
- Target backend will be searched by source backend system name. System name can be overriden with `--target-system-name` option.
21
+ Target backend will be searched by the source backend system name. System name can be overridden with `--target-system-name` option.
21
22
  If a backend with the selected `system-name` is not found, it will be created.
22
23
  \n Components of the backend being copied:
23
24
  \nmetrics
@@ -41,6 +42,7 @@ module ThreeScaleToolbox
41
42
  # First metrics as methods need 'hits' metric in target backend
42
43
  tasks << CopyCommand::CopyMetricsTask.new(context)
43
44
  tasks << CopyCommand::CopyMethodsTask.new(context)
45
+ tasks << CopyCommand::DeleteMappingRulesTask.new(context)
44
46
  tasks << CopyCommand::CopyMappingRulesTask.new(context)
45
47
  tasks.each(&:call)
46
48
  end
@@ -56,6 +58,7 @@ module ThreeScaleToolbox
56
58
  source_remote: threescale_client(fetch_required_option(:source)),
57
59
  target_remote: threescale_client(fetch_required_option(:destination)),
58
60
  source_backend_ref: arguments[:source_backend],
61
+ delete_mapping_rules: true,
59
62
  option_target_system_name: options[:'target-system-name']
60
63
  }
61
64
  end
@@ -104,14 +104,14 @@ module ThreeScaleToolbox
104
104
 
105
105
  # create a mapping rule
106
106
  if (metric_id = metric['id'] || method['id'])
107
- mapping_rule = client.create_mapping_rule(service['id'], {
108
- metric_id: metric_id,
109
- pattern: item['endpoint_path'],
110
- http_method: item['endpoint_http_method'],
111
- metric_system_name: item['endpoint_system_name'],
112
- auth_app_key: auth_app_key_according_service(service),
113
- delta: 1
114
- })
107
+ mapping_rule = client.create_mapping_rule(service['id'],{
108
+ metric_id: metric_id,
109
+ pattern: item['endpoint_path'],
110
+ http_method: item['endpoint_http_method'],
111
+ metric_system_name: item['endpoint_system_name'],
112
+ auth_app_key: auth_app_key_according_service(service),
113
+ delta: 1
114
+ })
115
115
 
116
116
  if mapping_rule['errors'].nil?
117
117
  stats[:mapping_rules] += 1
@@ -53,9 +53,10 @@ module ThreeScaleToolbox
53
53
  # Other processing steps can work with original openapi spec
54
54
  Helper.hash_deep_dup(resource).tap do |activedocs|
55
55
  # public production base URL
56
- # the basePath field is updated to a new value only when overriden by optional param
57
- api_spec.set_server_url(activedocs,
58
- URI.join(service.proxy.fetch('endpoint'), public_base_path))
56
+ # the basePath field is updated to a new value only when overridden by optional param
57
+ unless service.proxy['endpoint'].nil?
58
+ api_spec.set_server_url(activedocs, URI.join(service.proxy.fetch('endpoint'), public_base_path))
59
+ end
59
60
  # security definitions
60
61
  # just valid for oauth2 when oidc_issuer_endpoint is supplied
61
62
  if !api_spec.security.nil? && api_spec.security[:type] == 'oauth2' && !oidc_issuer_endpoint.nil?
@@ -108,6 +108,8 @@ module ThreeScaleToolbox
108
108
  end
109
109
 
110
110
  def openapi_parser
111
+ raise ThreeScaleToolbox::Error, 'only JSON/YAML format is supported' unless openapi_resource.is_a?(Hash)
112
+
111
113
  if openapi_resource.key?('openapi')
112
114
  ThreeScaleToolbox::OpenAPI::OAS3.build(openapi_path, openapi_resource, validate: validate)
113
115
  else
@@ -27,6 +27,7 @@ module ThreeScaleToolbox
27
27
  # First metrics as methods need 'hits' metric in target backend
28
28
  tasks << Commands::BackendCommand::CopyCommand::CopyMetricsTask.new(backend_context)
29
29
  tasks << Commands::BackendCommand::CopyCommand::CopyMethodsTask.new(backend_context)
30
+ tasks << Commands::BackendCommand::CopyCommand::DeleteMappingRulesTask.new(backend_context)
30
31
  tasks << Commands::BackendCommand::CopyCommand::CopyMappingRulesTask.new(backend_context)
31
32
  tasks.each(&:call)
32
33
 
@@ -72,12 +73,17 @@ module ThreeScaleToolbox
72
73
  context.fetch(:logger)
73
74
  end
74
75
 
76
+ def delete_mapping_rules
77
+ context.fetch(:delete_mapping_rules, false)
78
+ end
79
+
75
80
  def create_backend_context(source_backend)
76
81
  {
77
82
  source_remote: source_remote,
78
83
  target_remote: target_remote,
79
84
  source_backend: source_backend,
80
85
  source_backend_ref: source_backend.id,
86
+ delete_mapping_rules: delete_mapping_rules,
81
87
  logger: logger
82
88
  }
83
89
  end
@@ -14,13 +14,13 @@ module ThreeScaleToolbox
14
14
  summary 'Copy product'
15
15
  description <<-HEREDOC
16
16
  This command makes a copy of the referenced product.
17
- Target product will be searched by source product system name. System name can be overriden with `--target-system-name` option.
17
+ Target product will be searched by the source product system name. System name can be overridden with `--target-system-name` option.
18
18
  If a product with the selected `system_name` is not found, it will be created.
19
19
  \n Components of the product being copied:
20
20
  \nproduct configuration
21
21
  \nproduct settings
22
22
  \nproduct methods&metrics: Only missing metrics&methods will be created.
23
- \nproduct mapping rules: Only missing mapping rules will be created.
23
+ \nproduct mapping rules: mapping rules will be replaced. Existing mapping rules will be removed.
24
24
  \nproduct application plans & pricing rules & limits: Only missing application plans & pricing rules & limits will be created.
25
25
  \nproduct application usage rules
26
26
  \nproduct policies
@@ -73,6 +73,7 @@ module ThreeScaleToolbox
73
73
  source_remote: threescale_client(fetch_required_option(:source)),
74
74
  target_remote: threescale_client(fetch_required_option(:destination)),
75
75
  source_service_ref: arguments[:source_product],
76
+ delete_mapping_rules: true,
76
77
  option_target_system_name: options[:'target-system-name']
77
78
  }
78
79
  end
@@ -28,6 +28,7 @@ module ThreeScaleToolbox
28
28
  target_remote: remote,
29
29
  source_remote: crd_remote,
30
30
  source_service_ref: product.system_name,
31
+ delete_mapping_rules: true,
31
32
  logger: Logger.new(File::NULL)
32
33
  }
33
34
 
@@ -5,6 +5,7 @@ module ThreeScaleToolbox
5
5
  end
6
6
 
7
7
  def method_missing(name, *args)
8
+ # Correct delegation https://eregon.me/blog/2021/02/13/correct-delegation-in-ruby-2-27-3.html
8
9
  start_time = ::Process.clock_gettime(::Process::CLOCK_MONOTONIC)
9
10
  result = @subject.public_send(name, *args)
10
11
  ensure
@@ -12,6 +13,7 @@ module ThreeScaleToolbox
12
13
  ::Kernel.warn "-- call #{name} args |#{args.inspect[0..2000]}| response |#{result.inspect[0..2000]}| - (#{end_time}s)"
13
14
  result
14
15
  end
16
+ ruby2_keywords :method_missing if respond_to?(:ruby2_keywords, true)
15
17
 
16
18
  def public_send(name, *args)
17
19
  method_missing(name, *args)
@@ -141,7 +141,13 @@ module ThreeScaleToolbox
141
141
  ###
142
142
 
143
143
  def method_missing(name, *args)
144
- subject.public_send(name, *args)
144
+ # Correct delegation https://eregon.me/blog/2021/02/13/correct-delegation-in-ruby-2-27-3.html
145
+ @subject.public_send(name, *args)
146
+ end
147
+ ruby2_keywords :method_missing if respond_to?(:ruby2_keywords, true)
148
+
149
+ def public_send(name, *args)
150
+ method_missing(name, *args)
145
151
  end
146
152
 
147
153
  def respond_to_missing?(method_name, include_private = false)
@@ -1,3 +1,3 @@
1
1
  module ThreeScaleToolbox
2
- VERSION = '0.18.2'
2
+ VERSION = '0.19.2'
3
3
  end
data/licenses.xml CHANGED
@@ -13,7 +13,7 @@
13
13
  </dependency>
14
14
  <dependency>
15
15
  <packageName>3scale_toolbox</packageName>
16
- <version>0.18.2</version>
16
+ <version>0.19.2</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.1.3.1</version>
26
+ <version>6.1.4.1</version>
27
27
  <licenses>
28
28
  <license>
29
29
  <name>MIT</name>
@@ -33,7 +33,7 @@
33
33
  </dependency>
34
34
  <dependency>
35
35
  <packageName>addressable</packageName>
36
- <version>2.7.0</version>
36
+ <version>2.8.0</version>
37
37
  <licenses>
38
38
  <license>
39
39
  <name>Apache 2.0</name>
@@ -53,7 +53,7 @@
53
53
  </dependency>
54
54
  <dependency>
55
55
  <packageName>bundler</packageName>
56
- <version>2.1.4</version>
56
+ <version>2.2.21</version>
57
57
  <licenses>
58
58
  <license>
59
59
  <name>MIT</name>
@@ -63,7 +63,7 @@
63
63
  </dependency>
64
64
  <dependency>
65
65
  <packageName>codecov</packageName>
66
- <version>0.5.1</version>
66
+ <version>0.5.2</version>
67
67
  <licenses>
68
68
  <license>
69
69
  <name>MIT</name>
@@ -83,7 +83,7 @@
83
83
  </dependency>
84
84
  <dependency>
85
85
  <packageName>concurrent-ruby</packageName>
86
- <version>1.1.8</version>
86
+ <version>1.1.9</version>
87
87
  <licenses>
88
88
  <license>
89
89
  <name>MIT</name>
@@ -141,7 +141,7 @@
141
141
  </dependency>
142
142
  <dependency>
143
143
  <packageName>docile</packageName>
144
- <version>1.3.5</version>
144
+ <version>1.4.0</version>
145
145
  <licenses>
146
146
  <license>
147
147
  <name>MIT</name>
@@ -228,16 +228,6 @@
228
228
  <url>http://opensource.org/licenses/mit-license</url>
229
229
  </license>
230
230
  </licenses>
231
- </dependency>
232
- <dependency>
233
- <packageName>mini_portile2</packageName>
234
- <version>2.5.1</version>
235
- <licenses>
236
- <license>
237
- <name>MIT</name>
238
- <url>http://opensource.org/licenses/mit-license</url>
239
- </license>
240
- </licenses>
241
231
  </dependency>
242
232
  <dependency>
243
233
  <packageName>minitest</packageName>
@@ -271,7 +261,7 @@
271
261
  </dependency>
272
262
  <dependency>
273
263
  <packageName>nokogiri</packageName>
274
- <version>1.11.3</version>
264
+ <version>1.12.4</version>
275
265
  <licenses>
276
266
  <license>
277
267
  <name>MIT</name>
@@ -301,7 +291,7 @@
301
291
  </dependency>
302
292
  <dependency>
303
293
  <packageName>pry</packageName>
304
- <version>0.13.1</version>
294
+ <version>0.14.1</version>
305
295
  <licenses>
306
296
  <license>
307
297
  <name>MIT</name>
@@ -385,7 +375,7 @@
385
375
  </dependency>
386
376
  <dependency>
387
377
  <packageName>rspec-mocks</packageName>
388
- <version>3.10.1</version>
378
+ <version>3.10.2</version>
389
379
  <licenses>
390
380
  <license>
391
381
  <name>MIT</name>
@@ -395,7 +385,7 @@
395
385
  </dependency>
396
386
  <dependency>
397
387
  <packageName>rspec-support</packageName>
398
- <version>3.10.1</version>
388
+ <version>3.10.2</version>
399
389
  <licenses>
400
390
  <license>
401
391
  <name>MIT</name>
@@ -405,7 +395,7 @@
405
395
  </dependency>
406
396
  <dependency>
407
397
  <packageName>ruby2_keywords</packageName>
408
- <version>0.0.4</version>
398
+ <version>0.0.5</version>
409
399
  <licenses>
410
400
  <license>
411
401
  <name>ruby</name>
@@ -449,7 +439,7 @@
449
439
  </dependency>
450
440
  <dependency>
451
441
  <packageName>simplecov_json_formatter</packageName>
452
- <version>0.1.2</version>
442
+ <version>0.1.3</version>
453
443
  <licenses>
454
444
  <license>
455
445
  <name>MIT</name>
@@ -489,7 +479,7 @@
489
479
  </dependency>
490
480
  <dependency>
491
481
  <packageName>webmock</packageName>
492
- <version>3.11.1</version>
482
+ <version>3.13.0</version>
493
483
  <licenses>
494
484
  <license>
495
485
  <name>MIT</name>
metadata CHANGED
@@ -1,15 +1,15 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: 3scale_toolbox
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.18.2
4
+ version: 0.19.2
5
5
  platform: ruby
6
6
  authors:
7
- - Michal Cichra
7
+ - Miguel Soriano
8
8
  - Eguzki Astiz Lezaun
9
9
  autorequire:
10
10
  bindir: exe
11
11
  cert_chain: []
12
- date: 2021-05-03 00:00:00.000000000 Z
12
+ date: 2021-09-16 00:00:00.000000000 Z
13
13
  dependencies:
14
14
  - !ruby/object:Gem::Dependency
15
15
  name: bundler
@@ -139,7 +139,7 @@ dependencies:
139
139
  version: '0.20'
140
140
  description: 3scale tools to manage your API from the terminal.
141
141
  email:
142
- - michal@3scale.net
142
+ - msoriano@redhat.com
143
143
  - eastizle@redhat.com
144
144
  executables:
145
145
  - 3scale
@@ -184,6 +184,7 @@ files:
184
184
  - lib/3scale_toolbox/commands/backend_command/copy_command/copy_methods_task.rb
185
185
  - lib/3scale_toolbox/commands/backend_command/copy_command/copy_metrics_task.rb
186
186
  - lib/3scale_toolbox/commands/backend_command/copy_command/create_or_update_target_backend_task.rb
187
+ - lib/3scale_toolbox/commands/backend_command/copy_command/delete_mapping_rules_task.rb
187
188
  - lib/3scale_toolbox/commands/backend_command/copy_command/task.rb
188
189
  - lib/3scale_toolbox/commands/copy_command.rb
189
190
  - lib/3scale_toolbox/commands/copy_command/service_command.rb
@@ -343,14 +344,14 @@ required_ruby_version: !ruby/object:Gem::Requirement
343
344
  requirements:
344
345
  - - ">="
345
346
  - !ruby/object:Gem::Version
346
- version: '2.5'
347
+ version: '2.6'
347
348
  required_rubygems_version: !ruby/object:Gem::Requirement
348
349
  requirements:
349
350
  - - ">="
350
351
  - !ruby/object:Gem::Version
351
352
  version: '0'
352
353
  requirements: []
353
- rubygems_version: 3.1.2
354
+ rubygems_version: 3.0.3
354
355
  signing_key:
355
356
  specification_version: 4
356
357
  summary: 3scale Toolbox.