3scale_toolbox 0.11.0 → 0.12.2

Sign up to get free protection for your applications and to get access to all the features.
Files changed (49) hide show
  1. checksums.yaml +4 -4
  2. data/3scale_toolbox.gemspec +42 -0
  3. data/LICENSE +201 -0
  4. data/NOTICE +15 -0
  5. data/README.md +8 -0
  6. data/lib/3scale_toolbox.rb +1 -0
  7. data/lib/3scale_toolbox/commands/application_command/apply_command.rb +21 -6
  8. data/lib/3scale_toolbox/commands/application_command/create_command.rb +3 -1
  9. data/lib/3scale_toolbox/commands/copy_command/copy_service.rb +5 -0
  10. data/lib/3scale_toolbox/commands/import_command/openapi.rb +5 -3
  11. data/lib/3scale_toolbox/commands/import_command/openapi/create_activedocs_step.rb +10 -2
  12. data/lib/3scale_toolbox/commands/import_command/openapi/create_method_step.rb +13 -6
  13. data/lib/3scale_toolbox/commands/import_command/openapi/method.rb +5 -0
  14. data/lib/3scale_toolbox/commands/import_command/openapi/step.rb +4 -0
  15. data/lib/3scale_toolbox/commands/import_command/openapi/threescale_api_spec.rb +2 -1
  16. data/lib/3scale_toolbox/commands/import_command/openapi/update_service_proxy_step.rb +12 -5
  17. data/lib/3scale_toolbox/commands/metrics_command/list_command.rb +1 -8
  18. data/lib/3scale_toolbox/commands/plans_command/apply_command.rb +8 -7
  19. data/lib/3scale_toolbox/commands/plans_command/create_command.rb +0 -2
  20. data/lib/3scale_toolbox/commands/plans_command/export/read_plan_methods_step.rb +0 -3
  21. data/lib/3scale_toolbox/commands/plans_command/export/read_plan_metrics_step.rb +0 -2
  22. data/lib/3scale_toolbox/commands/plans_command/export/read_plan_pricing_rules_step.rb +2 -1
  23. data/lib/3scale_toolbox/commands/plans_command/export/step.rb +0 -2
  24. data/lib/3scale_toolbox/commands/plans_command/import/create_or_update_app_plan_step.rb +8 -3
  25. data/lib/3scale_toolbox/commands/plans_command/import/import_plan_metrics_step.rb +0 -3
  26. data/lib/3scale_toolbox/commands/plans_command/import/import_plan_pricing_rules_step.rb +9 -2
  27. data/lib/3scale_toolbox/commands/plans_command/import/step.rb +5 -1
  28. data/lib/3scale_toolbox/commands/proxy_config_command/promote_command.rb +21 -5
  29. data/lib/3scale_toolbox/entities/account.rb +44 -4
  30. data/lib/3scale_toolbox/entities/activedocs.rb +1 -1
  31. data/lib/3scale_toolbox/entities/application.rb +21 -13
  32. data/lib/3scale_toolbox/entities/application_plan.rb +13 -12
  33. data/lib/3scale_toolbox/entities/base_entity.rb +1 -1
  34. data/lib/3scale_toolbox/entities/method.rb +1 -1
  35. data/lib/3scale_toolbox/entities/metric.rb +1 -1
  36. data/lib/3scale_toolbox/entities/service.rb +30 -15
  37. data/lib/3scale_toolbox/remotes.rb +1 -1
  38. data/lib/3scale_toolbox/resource_reader.rb +5 -2
  39. data/lib/3scale_toolbox/swagger/swagger.rb +5 -3
  40. data/lib/3scale_toolbox/tasks/copy_activedocs_task.rb +27 -9
  41. data/lib/3scale_toolbox/tasks/copy_limits_task.rb +4 -1
  42. data/lib/3scale_toolbox/tasks/copy_mapping_rules_task.rb +4 -1
  43. data/lib/3scale_toolbox/tasks/copy_methods_task.rb +20 -16
  44. data/lib/3scale_toolbox/tasks/copy_metrics_task.rb +14 -14
  45. data/lib/3scale_toolbox/tasks/copy_pricingrules_task.rb +4 -1
  46. data/lib/3scale_toolbox/tasks/copy_task.rb +40 -0
  47. data/lib/3scale_toolbox/version.rb +1 -1
  48. data/licenses.xml +303 -0
  49. metadata +8 -4
@@ -4,27 +4,27 @@ module ThreeScaleToolbox
4
4
  include CopyTask
5
5
 
6
6
  def call
7
- source_metrics = source.metrics
8
- target_metrics = target.metrics
9
-
10
7
  puts "original service has #{source_metrics.size} metrics"
11
8
  puts "target service has #{target_metrics.size} metrics"
9
+ missing_metrics.each(&method(:create_metric))
10
+ puts "created #{missing_metrics.size} metrics on the target service"
11
+ invalidate_target_metrics if missing_metrics.size.positive?
12
+ end
12
13
 
13
- missing = missing_metrics(source_metrics, target_metrics)
14
+ private
14
15
 
15
- missing.each do |metric|
16
- metric.delete('links')
17
- Entities::Metric.create(service: target, attrs: metric)
18
- end
16
+ def create_metric(metric)
17
+ new_metric = metric.reject { |key, _| %w[id links].include? key }
18
+ Entities::Metric.create(service: target, attrs: new_metric)
19
+ rescue ThreeScaleToolbox::ThreeScaleApiError => e
20
+ raise e unless ThreeScaleToolbox::Helper.system_name_already_taken_error?(e.apierrors)
19
21
 
20
- puts "created #{missing.size} metrics on the target service"
22
+ warn "[WARN] metric #{metric.fetch('system_name')} not created. " \
23
+ 'Method with the same system_name exists.'
21
24
  end
22
25
 
23
- private
24
-
25
- def missing_metrics(source_metrics, target_metrics)
26
- ThreeScaleToolbox::Helper.array_difference(source_metrics,
27
- target_metrics) do |source, target|
26
+ def missing_metrics
27
+ @missing_metrics ||= ThreeScaleToolbox::Helper.array_difference(source_metrics, target_metrics) do |source, target|
28
28
  ThreeScaleToolbox::Helper.compare_hashes(source, target, ['system_name'])
29
29
  end
30
30
  end
@@ -5,7 +5,6 @@ module ThreeScaleToolbox
5
5
  include Helper
6
6
 
7
7
  def call
8
- metrics_map = metrics_mapping(source.metrics, target.metrics)
9
8
  plan_mapping = application_plan_mapping(source.plans, target.plans)
10
9
  plan_mapping.each do |plan_id, target_plan|
11
10
  pricing_rules_source = source.remote.list_pricingrules_per_application_plan(plan_id)
@@ -27,6 +26,10 @@ module ThreeScaleToolbox
27
26
 
28
27
  private
29
28
 
29
+ def metrics_map
30
+ @metrics_map ||= metrics_mapping(source_metrics_and_methods, target_metrics_and_methods)
31
+ end
32
+
30
33
  def missing_pricing_rules(source_pricing_rules, target_pricing_rules, metrics_map)
31
34
  ThreeScaleToolbox::Helper.array_difference(source_pricing_rules, target_pricing_rules) do |src, target|
32
35
  ThreeScaleToolbox::Helper.compare_hashes(src, target, %w[cost_per_unit min max]) &&
@@ -21,6 +21,46 @@ module ThreeScaleToolbox
21
21
  def target
22
22
  context[:target]
23
23
  end
24
+
25
+ def source_metrics
26
+ context[:source_metrics] ||= source.metrics
27
+ end
28
+
29
+ def source_hits
30
+ context[:source_hits] ||= source.hits
31
+ end
32
+
33
+ def source_methods
34
+ context[:source_methods] ||= source.methods(source_hits.fetch('id'))
35
+ end
36
+
37
+ def source_metrics_and_methods
38
+ source_metrics + source_methods
39
+ end
40
+
41
+ def target_metrics
42
+ context[:target_metrics] ||= target.metrics
43
+ end
44
+
45
+ def target_hits
46
+ context[:target_hits] ||= target.hits
47
+ end
48
+
49
+ def target_methods
50
+ context[:target_methods] ||= target.methods(target_hits.fetch('id'))
51
+ end
52
+
53
+ def target_metrics_and_methods
54
+ target_metrics + target_methods
55
+ end
56
+
57
+ def invalidate_target_methods
58
+ context[:target_methods] = nil
59
+ end
60
+
61
+ def invalidate_target_metrics
62
+ context[:target_metrics] = nil
63
+ end
24
64
  end
25
65
  end
26
66
  end
@@ -1,3 +1,3 @@
1
1
  module ThreeScaleToolbox
2
- VERSION = '0.11.0'
2
+ VERSION = '0.12.2'
3
3
  end
data/licenses.xml ADDED
@@ -0,0 +1,303 @@
1
+ <?xml version="1.0" encoding="UTF-8" standalone="no"?>
2
+ <licenseSummary>
3
+ <dependencies>
4
+ <dependency>
5
+ <packageName>3scale-api</packageName>
6
+ <version>0.6.0</version>
7
+ <licenses>
8
+ <license>
9
+ <name>MIT</name>
10
+ <url>http://opensource.org/licenses/mit-license</url>
11
+ </license>
12
+ </licenses>
13
+ </dependency>
14
+ <dependency>
15
+ <packageName>3scale_toolbox</packageName>
16
+ <version>0.12.0</version>
17
+ <licenses>
18
+ <license>
19
+ <name>MIT</name>
20
+ <url>http://opensource.org/licenses/mit-license</url>
21
+ </license>
22
+ </licenses>
23
+ </dependency>
24
+ <dependency>
25
+ <packageName>addressable</packageName>
26
+ <version>2.6.0</version>
27
+ <licenses>
28
+ <license>
29
+ <name>Apache 2.0</name>
30
+ <url>http://www.apache.org/licenses/LICENSE-2.0.txt</url>
31
+ </license>
32
+ </licenses>
33
+ </dependency>
34
+ <dependency>
35
+ <packageName>bundler</packageName>
36
+ <version>1.16.6</version>
37
+ <licenses>
38
+ <license>
39
+ <name>unknown</name>
40
+ <url></url>
41
+ </license>
42
+ </licenses>
43
+ </dependency>
44
+ <dependency>
45
+ <packageName>coderay</packageName>
46
+ <version>1.1.2</version>
47
+ <licenses>
48
+ <license>
49
+ <name>MIT</name>
50
+ <url>http://opensource.org/licenses/mit-license</url>
51
+ </license>
52
+ </licenses>
53
+ </dependency>
54
+ <dependency>
55
+ <packageName>crack</packageName>
56
+ <version>0.4.3</version>
57
+ <licenses>
58
+ <license>
59
+ <name>MIT</name>
60
+ <url>http://opensource.org/licenses/mit-license</url>
61
+ </license>
62
+ </licenses>
63
+ </dependency>
64
+ <dependency>
65
+ <packageName>cri</packageName>
66
+ <version>2.15.9</version>
67
+ <licenses>
68
+ <license>
69
+ <name>MIT</name>
70
+ <url>http://opensource.org/licenses/mit-license</url>
71
+ </license>
72
+ </licenses>
73
+ </dependency>
74
+ <dependency>
75
+ <packageName>diff-lcs</packageName>
76
+ <version>1.3</version>
77
+ <licenses>
78
+ <license>
79
+ <name>MIT</name>
80
+ <url>http://opensource.org/licenses/mit-license</url>
81
+ </license>
82
+ <license>
83
+ <name>Artistic-2.0</name>
84
+ <url></url>
85
+ </license>
86
+ <license>
87
+ <name>GPL-2.0+</name>
88
+ <url></url>
89
+ </license>
90
+ </licenses>
91
+ </dependency>
92
+ <dependency>
93
+ <packageName>dotenv</packageName>
94
+ <version>2.7.2</version>
95
+ <licenses>
96
+ <license>
97
+ <name>MIT</name>
98
+ <url>http://opensource.org/licenses/mit-license</url>
99
+ </license>
100
+ </licenses>
101
+ </dependency>
102
+ <dependency>
103
+ <packageName>hashdiff</packageName>
104
+ <version>0.3.8</version>
105
+ <licenses>
106
+ <license>
107
+ <name>MIT</name>
108
+ <url>http://opensource.org/licenses/mit-license</url>
109
+ </license>
110
+ </licenses>
111
+ </dependency>
112
+ <dependency>
113
+ <packageName>json-schema</packageName>
114
+ <version>2.8.1</version>
115
+ <licenses>
116
+ <license>
117
+ <name>MIT</name>
118
+ <url>http://opensource.org/licenses/mit-license</url>
119
+ </license>
120
+ </licenses>
121
+ </dependency>
122
+ <dependency>
123
+ <packageName>license_finder</packageName>
124
+ <version>5.7.1</version>
125
+ <licenses>
126
+ <license>
127
+ <name>MIT</name>
128
+ <url>http://opensource.org/licenses/mit-license</url>
129
+ </license>
130
+ </licenses>
131
+ </dependency>
132
+ <dependency>
133
+ <packageName>method_source</packageName>
134
+ <version>0.9.2</version>
135
+ <licenses>
136
+ <license>
137
+ <name>MIT</name>
138
+ <url>http://opensource.org/licenses/mit-license</url>
139
+ </license>
140
+ </licenses>
141
+ </dependency>
142
+ <dependency>
143
+ <packageName>parslet</packageName>
144
+ <version>1.8.2</version>
145
+ <licenses>
146
+ <license>
147
+ <name>MIT</name>
148
+ <url>http://opensource.org/licenses/mit-license</url>
149
+ </license>
150
+ </licenses>
151
+ </dependency>
152
+ <dependency>
153
+ <packageName>pry</packageName>
154
+ <version>0.12.2</version>
155
+ <licenses>
156
+ <license>
157
+ <name>MIT</name>
158
+ <url>http://opensource.org/licenses/mit-license</url>
159
+ </license>
160
+ </licenses>
161
+ </dependency>
162
+ <dependency>
163
+ <packageName>public_suffix</packageName>
164
+ <version>3.0.3</version>
165
+ <licenses>
166
+ <license>
167
+ <name>MIT</name>
168
+ <url>http://opensource.org/licenses/mit-license</url>
169
+ </license>
170
+ </licenses>
171
+ </dependency>
172
+ <dependency>
173
+ <packageName>rake</packageName>
174
+ <version>10.5.0</version>
175
+ <licenses>
176
+ <license>
177
+ <name>MIT</name>
178
+ <url>http://opensource.org/licenses/mit-license</url>
179
+ </license>
180
+ </licenses>
181
+ </dependency>
182
+ <dependency>
183
+ <packageName>rspec</packageName>
184
+ <version>3.8.0</version>
185
+ <licenses>
186
+ <license>
187
+ <name>MIT</name>
188
+ <url>http://opensource.org/licenses/mit-license</url>
189
+ </license>
190
+ </licenses>
191
+ </dependency>
192
+ <dependency>
193
+ <packageName>rspec-core</packageName>
194
+ <version>3.8.0</version>
195
+ <licenses>
196
+ <license>
197
+ <name>MIT</name>
198
+ <url>http://opensource.org/licenses/mit-license</url>
199
+ </license>
200
+ </licenses>
201
+ </dependency>
202
+ <dependency>
203
+ <packageName>rspec-expectations</packageName>
204
+ <version>3.8.2</version>
205
+ <licenses>
206
+ <license>
207
+ <name>MIT</name>
208
+ <url>http://opensource.org/licenses/mit-license</url>
209
+ </license>
210
+ </licenses>
211
+ </dependency>
212
+ <dependency>
213
+ <packageName>rspec-mocks</packageName>
214
+ <version>3.8.0</version>
215
+ <licenses>
216
+ <license>
217
+ <name>MIT</name>
218
+ <url>http://opensource.org/licenses/mit-license</url>
219
+ </license>
220
+ </licenses>
221
+ </dependency>
222
+ <dependency>
223
+ <packageName>rspec-support</packageName>
224
+ <version>3.8.0</version>
225
+ <licenses>
226
+ <license>
227
+ <name>MIT</name>
228
+ <url>http://opensource.org/licenses/mit-license</url>
229
+ </license>
230
+ </licenses>
231
+ </dependency>
232
+ <dependency>
233
+ <packageName>rubyzip</packageName>
234
+ <version>1.2.2</version>
235
+ <licenses>
236
+ <license>
237
+ <name>Simplified BSD</name>
238
+ <url>http://opensource.org/licenses/bsd-license</url>
239
+ </license>
240
+ </licenses>
241
+ </dependency>
242
+ <dependency>
243
+ <packageName>safe_yaml</packageName>
244
+ <version>1.0.5</version>
245
+ <licenses>
246
+ <license>
247
+ <name>MIT</name>
248
+ <url>http://opensource.org/licenses/mit-license</url>
249
+ </license>
250
+ </licenses>
251
+ </dependency>
252
+ <dependency>
253
+ <packageName>thor</packageName>
254
+ <version>0.20.3</version>
255
+ <licenses>
256
+ <license>
257
+ <name>MIT</name>
258
+ <url>http://opensource.org/licenses/mit-license</url>
259
+ </license>
260
+ </licenses>
261
+ </dependency>
262
+ <dependency>
263
+ <packageName>toml</packageName>
264
+ <version>0.2.0</version>
265
+ <licenses>
266
+ <license>
267
+ <name>MIT</name>
268
+ <url>http://opensource.org/licenses/mit-license</url>
269
+ </license>
270
+ </licenses>
271
+ </dependency>
272
+ <dependency>
273
+ <packageName>webmock</packageName>
274
+ <version>3.5.1</version>
275
+ <licenses>
276
+ <license>
277
+ <name>MIT</name>
278
+ <url>http://opensource.org/licenses/mit-license</url>
279
+ </license>
280
+ </licenses>
281
+ </dependency>
282
+ <dependency>
283
+ <packageName>with_env</packageName>
284
+ <version>1.1.0</version>
285
+ <licenses>
286
+ <license>
287
+ <name>MIT</name>
288
+ <url>http://opensource.org/licenses/mit-license</url>
289
+ </license>
290
+ </licenses>
291
+ </dependency>
292
+ <dependency>
293
+ <packageName>xml-simple</packageName>
294
+ <version>1.1.5</version>
295
+ <licenses>
296
+ <license>
297
+ <name>ruby</name>
298
+ <url>http://www.ruby-lang.org/en/LICENSE.txt</url>
299
+ </license>
300
+ </licenses>
301
+ </dependency>
302
+ </dependencies>
303
+ </licenseSummary>
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.11.0
4
+ version: 0.12.2
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: 2019-06-17 00:00:00.000000000 Z
12
+ date: 2019-07-05 00:00:00.000000000 Z
13
13
  dependencies:
14
14
  - !ruby/object:Gem::Dependency
15
15
  name: bundler
@@ -87,14 +87,14 @@ dependencies:
87
87
  requirements:
88
88
  - - "~>"
89
89
  - !ruby/object:Gem::Version
90
- version: 0.5.0
90
+ version: 0.6.0
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: 0.5.0
97
+ version: 0.6.0
98
98
  - !ruby/object:Gem::Dependency
99
99
  name: cri
100
100
  requirement: !ruby/object:Gem::Requirement
@@ -132,6 +132,9 @@ executables:
132
132
  extensions: []
133
133
  extra_rdoc_files: []
134
134
  files:
135
+ - 3scale_toolbox.gemspec
136
+ - LICENSE
137
+ - NOTICE
135
138
  - README.md
136
139
  - exe/3scale
137
140
  - lib/3scale_toolbox.rb
@@ -258,6 +261,7 @@ files:
258
261
  - lib/3scale_toolbox/tasks/destroy_mapping_rules_task.rb
259
262
  - lib/3scale_toolbox/tasks/helper_task.rb
260
263
  - lib/3scale_toolbox/version.rb
264
+ - licenses.xml
261
265
  - resources/swagger_meta_schema.json
262
266
  homepage: https://github.com/3scale/3scale_toolbox
263
267
  licenses: