3scale_toolbox 0.1.0 → 0.1.1

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
  SHA1:
3
- metadata.gz: 2041609888563be7ca7b60bbd7cdb6ddd8f60911
4
- data.tar.gz: 417e59c876b5111b84af2472ca3df9e51dd1f4e8
3
+ metadata.gz: 01faabdd78fbba6945dd5c5648ecf70a7ee5307e
4
+ data.tar.gz: 09110b6291e2698d984816afa1ae195e1607c39d
5
5
  SHA512:
6
- metadata.gz: 7ffdb592223d2a9bf649bba41c8984d63b13c27863fb146a73623a98b561a62bc56f3ae4544dd9679fa8ffa65c782b5dbf4baebcdc826272ef65a059e36c1eea
7
- data.tar.gz: 47750f59a33e3839b0e4cfa3b2005b247a20f4476029ea3e546d34290dca615d0406c466e2109fff9f04e591917ac0a0e38d00163372a02bd35bc1b8ee8a1d4c
6
+ metadata.gz: ba7960b6f7f2259297a95867fcd6fad4fc1916c9248a69571713399789cb6f9d5f4f64f33db14136f583507ff59dcf5649eb1aa5d820acca1d21689783b315d2
7
+ data.tar.gz: 334aa15532171cbdecf9c744d4446de407da481459271f26412ab4f1f16e4349b38dc99cfb65bce863b6f993654147d7a4affb333ece3531ccbf9794d20ab3df
data/exe/3scale-copy CHANGED
@@ -29,6 +29,10 @@ require '3scale/api'
29
29
 
30
30
  client = ThreeScale::API.new(endpoint: endpoint, provider_key: provider_key)
31
31
 
32
+ def compare_hashes(first, second, keys)
33
+ keys.map{ |key| first.fetch(key) } == keys.map{ |key| second.fetch(key) }
34
+ end
35
+
32
36
  case (command = ARGV.shift)
33
37
  when 'service'
34
38
  service_id = ARGV.shift or raise OptionParser::MissingArgument, 'service_id'
@@ -47,6 +51,10 @@ case (command = ARGV.shift)
47
51
 
48
52
  puts "new service id #{service_copy_id}"
49
53
 
54
+ proxy = client.show_proxy(service_id)
55
+ client.update_proxy(service_copy_id, proxy)
56
+ puts "updated proxy of #{service_copy_id} to match the original"
57
+
50
58
  metrics = client.list_metrics(service_id)
51
59
  metrics_copies = client.list_metrics(service_copy_id)
52
60
 
@@ -59,7 +67,7 @@ case (command = ARGV.shift)
59
67
  puts "original service hits metric #{hits['id']} has #{methods.size} methods"
60
68
  puts "copied service hits metric #{hits_copy['id']} has #{methods_copies.size} methods"
61
69
 
62
- missing_methods = methods.reject { |method| methods_copies.find{|copy| method.fetch('system_name') == copy.fetch('system_name') } }
70
+ missing_methods = methods.reject { |method| methods_copies.find{|copy| compare_hashes(method, copy, ['system_name']) } }
63
71
 
64
72
  puts "creating #{missing_methods.size} missing methods on copied service"
65
73
 
@@ -73,7 +81,7 @@ case (command = ARGV.shift)
73
81
  puts "original service has #{metrics.size} metrics"
74
82
  puts "copied service has #{metrics.size} metrics"
75
83
 
76
- missing_metrics = metrics.reject { |metric| metrics_copies.find{|copy| metric.fetch('system_name') == copy.fetch('system_name') } }
84
+ missing_metrics = metrics.reject { |metric| metrics_copies.find{|copy| compare_hashes(metric, copy, ['system_name']) } }
77
85
 
78
86
  missing_metrics.map do |metric|
79
87
  metric.delete('links')
@@ -116,6 +124,36 @@ case (command = ARGV.shift)
116
124
  [metric['id'], copy['id']]
117
125
  end.to_h
118
126
 
127
+
128
+ mapping_rules = client.list_mapping_rules(service_id)
129
+ mapping_rules_copy = client.list_mapping_rules(service_copy_id)
130
+
131
+ puts "the original service has #{mapping_rules.size} mapping rules"
132
+ puts "the copy has #{mapping_rules_copy.size} mapping rules"
133
+
134
+ unique_mapping_rules_copy = mapping_rules_copy.dup
135
+
136
+ missing_mapping_rules = mapping_rules.reject do |mapping_rule|
137
+ matching_metric = unique_mapping_rules_copy.find do |copy|
138
+ compare_hashes(mapping_rule, copy, %w(pattern http_method delta)) &&
139
+ metrics_mapping.fetch(mapping_rule.fetch('metric_id')) == copy.fetch('metric_id')
140
+ end
141
+
142
+ unique_mapping_rules_copy.delete(matching_metric)
143
+ end
144
+
145
+ puts "missing #{missing_mapping_rules.size} mapping rules"
146
+
147
+ missing_mapping_rules.each do |mapping_rule|
148
+ mapping_rule.delete('links')
149
+ mapping_rule['metric_id'] = metrics_mapping.fetch(mapping_rule.delete('metric_id'))
150
+ client.create_mapping_rule(service_copy_id, mapping_rule)
151
+ end
152
+ puts "created #{missing_mapping_rules.size} mapping rules"
153
+
154
+ puts "extra #{unique_mapping_rules_copy.size} mapping rules"
155
+ puts unique_mapping_rules_copy.each{|rule| rule.delete('links') }
156
+
119
157
  application_plan_mapping.each do |original_id, copy_id|
120
158
  limits = client.list_application_plan_limits(original_id)
121
159
  limits_copy = client.list_application_plan_limits(copy_id)
@@ -128,9 +166,8 @@ case (command = ARGV.shift)
128
166
  end
129
167
  puts "copied application plan #{copy_id} is missing #{missing_limits.size} from the original plan #{original_id}"
130
168
  end
131
-
132
-
133
-
169
+ when nil
170
+ puts "missing subcommand"
134
171
  else
135
-
172
+ puts "unknown command #{command}"
136
173
  end
@@ -1,3 +1,3 @@
1
1
  module ThreeScaleToolbox
2
- VERSION = '0.1.0'
2
+ VERSION = '0.1.1'
3
3
  end
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: 3scale_toolbox
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.1.0
4
+ version: 0.1.1
5
5
  platform: ruby
6
6
  authors:
7
7
  - Michal Cichra
8
8
  autorequire:
9
9
  bindir: exe
10
10
  cert_chain: []
11
- date: 2016-03-11 00:00:00.000000000 Z
11
+ date: 2016-03-16 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: bundler
@@ -44,14 +44,14 @@ dependencies:
44
44
  requirements:
45
45
  - - "~>"
46
46
  - !ruby/object:Gem::Version
47
- version: 0.1.0
47
+ version: 0.1.2
48
48
  type: :runtime
49
49
  prerelease: false
50
50
  version_requirements: !ruby/object:Gem::Requirement
51
51
  requirements:
52
52
  - - "~>"
53
53
  - !ruby/object:Gem::Version
54
- version: 0.1.0
54
+ version: 0.1.2
55
55
  description: 3scale CLI tools to manage your API from the terminal.
56
56
  email:
57
57
  - michal@3scale.net