azure-armrest 0.3.0 → 0.3.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: d6e051e8b1aafc0e56dead25b4b049a1db77991d
4
- data.tar.gz: 6cd67f1ba82fc44da524373ae20f68b6e0a29737
3
+ metadata.gz: 81c1664938977f85f9b79045d208233777851e8a
4
+ data.tar.gz: 4418b381009c2c0274e7fd45f217ca114a44ae8e
5
5
  SHA512:
6
- metadata.gz: 2243372f9f4b26501539f91db5d91be939454c7608a6feee25d9addd8aae16239c986b76555286a1f19e384ce4fc7d77511701f30ae5104145b8da3003671bc2
7
- data.tar.gz: c139739090ad6fa30c5e86e61197db7cf09c7695d79ad4ee6aa728281294653234728cb782542f7a0633b1deede6d10258107211d51588ff1afcc2964aa7ee03
6
+ metadata.gz: b101ce1ef690827027dfd59ab2c509064afd8f488cc96b6879466ae29d9dca2b699a4fa6227022b5594e8f575f173f14e1a6c66805baa0d8cbdeee377c9ea236
7
+ data.tar.gz: 274f153ce11e6628d91bdf0bc21ef0dc15ad88c2bdf801705a5cdc14d159d3fff5ef1a61dbe370fb57d8a56b61facee9d67d89569fc9be0e6cc2a661bf1dd1a7
data/.travis.yml CHANGED
@@ -1,8 +1,7 @@
1
1
  language: ruby
2
2
  rvm:
3
- - "2.0"
4
- - "2.1"
5
- - "2.2"
3
+ - "2.2.5"
4
+ - "2.3.1"
6
5
  - ruby-head
7
6
  - jruby-head
8
7
  matrix:
data/CHANGES CHANGED
@@ -1,3 +1,12 @@
1
+ = 0.3.1 - 14-Jul-2016
2
+ * Now uses the parallel gem and thread pools for those few methods where
3
+ we were using threaded methods internally in order to reduce errors
4
+ caused by too many requests.
5
+ * Updated the rest-client dependency to 2.0.0 now that it has been released.
6
+ * Updated travis.yml to only test 2.2.5 and 2.3.1 for now. Partly due to a
7
+ change in the activesupport gem.
8
+ * One rspec fix for 2.3.x.
9
+
1
10
  = 0.3.0 - 28-Jun-2016
2
11
  * The configuration handling has been moved into its own class called
3
12
  Azure::Armrest::Configuration. You can call this explicitly using :new,
@@ -20,12 +20,13 @@ behind the scenes.
20
20
  EOF
21
21
 
22
22
  spec.add_dependency 'json'
23
- spec.add_dependency 'rest-client', '~> 2.0.0.rc'
23
+ spec.add_dependency 'rest-client', '~> 2.0.0'
24
24
  spec.add_dependency 'cache_method', '~> 0.2.7'
25
25
  spec.add_dependency 'azure-signature', '~> 0.2.0'
26
26
  spec.add_dependency 'activesupport', '>= 1.2.0'
27
27
  spec.add_dependency 'nokogiri', '~> 1.6.0'
28
28
  spec.add_dependency 'addressable', '~> 2.4.0'
29
+ spec.add_dependency 'parallel', '~> 1.9.0'
29
30
 
30
31
  spec.add_development_dependency 'bundler'
31
32
  spec.add_development_dependency 'rake'
data/lib/azure/armrest.rb CHANGED
@@ -2,6 +2,7 @@ require 'rest-client'
2
2
  require 'json'
3
3
  require 'thread'
4
4
  require 'addressable'
5
+ require 'parallel'
5
6
 
6
7
  # The Azure module serves as a namespace.
7
8
  module Azure
@@ -9,10 +9,6 @@ module Azure
9
9
  def initialize(configuration, options = {})
10
10
  super(configuration, 'availabilitySets', 'Microsoft.Compute', options)
11
11
  end
12
-
13
- def list_all
14
- list_in_all_groups
15
- end
16
12
  end # AvailabilitySetService
17
13
  end # Armrest
18
14
  end # Azure
@@ -215,14 +215,12 @@ module Azure
215
215
  def all_blobs(key = nil)
216
216
  key ||= properties.key1
217
217
  array = []
218
- threads = []
218
+ mutex = Mutex.new
219
219
 
220
- containers(key).each do |container|
221
- threads << Thread.new(container, key) { |c, k| array << blobs(c.name, k) }
220
+ Parallel.each(containers(key), :in_threads => 10) do |container|
221
+ mutex.synchronize { array << blobs(container.name, key) }
222
222
  end
223
223
 
224
- threads.each(&:join)
225
-
226
224
  array.flatten
227
225
  end
228
226
 
@@ -75,23 +75,20 @@ module Azure
75
75
  @model_class ||= Object.const_get(self.class.to_s.sub(/Service$/, ''))
76
76
  end
77
77
 
78
- # Aggregate resources from each group
79
- # To be used in the case that API does not support list_all with one call
78
+ # Aggregate resources from all resource groups.
79
+ #
80
+ # To be used in the cases where the API does not support list_all with one call.
81
+ #
80
82
  def list_in_all_groups
81
83
  array = []
82
- threads = []
83
84
  mutex = Mutex.new
84
85
 
85
- resource_groups.each do |rg|
86
- threads << Thread.new(rg.name) do |group|
87
- response = rest_get(build_url(group))
88
- results = JSON.parse(response)['value'].map { |hash| model_class.new(hash) }
89
- mutex.synchronize { array << results } unless results.blank?
90
- end
86
+ Parallel.each(list_resource_groups, :in_threads => 10) do |rg|
87
+ response = rest_get(build_url(rg.name))
88
+ results = JSON.parse(response)['value'].map { |hash| model_class.new(hash) }
89
+ mutex.synchronize { array << results } unless results.blank?
91
90
  end
92
91
 
93
- threads.each(&:join)
94
-
95
92
  array.flatten
96
93
  end
97
94
  end
@@ -246,30 +246,25 @@ module Azure
246
246
  #
247
247
  def get_private_images(storage_accounts)
248
248
  results = []
249
- threads = []
250
249
  mutex = Mutex.new
251
250
 
252
- storage_accounts.each do |lstorage_account|
253
- threads << Thread.new(lstorage_account) do |storage_account|
254
- key = get_account_key(storage_account)
251
+ Parallel.each(storage_accounts, :in_threads => 10) do |storage_account|
252
+ key = get_account_key(storage_account)
255
253
 
256
- storage_account.all_blobs(key).each do |blob|
257
- next unless File.extname(blob.name).casecmp('.vhd') == 0
258
- next unless blob.properties.lease_state.casecmp('available') == 0
254
+ storage_account.all_blobs(key).each do |blob|
255
+ next unless File.extname(blob.name).casecmp('.vhd') == 0
256
+ next unless blob.properties.lease_state.casecmp('available') == 0
259
257
 
260
- blob_properties = storage_account.blob_properties(blob.container, blob.name, key)
261
- next unless blob_properties.respond_to?(:x_ms_meta_microsoftazurecompute_osstate)
262
- next unless blob_properties.x_ms_meta_microsoftazurecompute_osstate.casecmp('generalized') == 0
258
+ blob_properties = storage_account.blob_properties(blob.container, blob.name, key)
259
+ next unless blob_properties.respond_to?(:x_ms_meta_microsoftazurecompute_osstate)
260
+ next unless blob_properties.x_ms_meta_microsoftazurecompute_osstate.casecmp('generalized') == 0
263
261
 
264
- mutex.synchronize do
265
- results << blob_to_private_image_object(storage_account, blob, blob_properties)
266
- end
262
+ mutex.synchronize do
263
+ results << blob_to_private_image_object(storage_account, blob, blob_properties)
267
264
  end
268
265
  end
269
266
  end
270
267
 
271
- threads.each(&:join)
272
-
273
268
  results
274
269
  end
275
270
 
@@ -1,5 +1,5 @@
1
1
  module Azure
2
2
  module Armrest
3
- VERSION = '0.3.0'.freeze
3
+ VERSION = '0.3.1'.freeze
4
4
  end
5
5
  end
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: azure-armrest
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.3.0
4
+ version: 0.3.1
5
5
  platform: ruby
6
6
  authors:
7
7
  - Daniel J. Berger
@@ -11,7 +11,7 @@ authors:
11
11
  autorequire:
12
12
  bindir: bin
13
13
  cert_chain: []
14
- date: 2016-06-28 00:00:00.000000000 Z
14
+ date: 2016-07-14 00:00:00.000000000 Z
15
15
  dependencies:
16
16
  - !ruby/object:Gem::Dependency
17
17
  name: json
@@ -33,14 +33,14 @@ dependencies:
33
33
  requirements:
34
34
  - - "~>"
35
35
  - !ruby/object:Gem::Version
36
- version: 2.0.0.rc
36
+ version: 2.0.0
37
37
  type: :runtime
38
38
  prerelease: false
39
39
  version_requirements: !ruby/object:Gem::Requirement
40
40
  requirements:
41
41
  - - "~>"
42
42
  - !ruby/object:Gem::Version
43
- version: 2.0.0.rc
43
+ version: 2.0.0
44
44
  - !ruby/object:Gem::Dependency
45
45
  name: cache_method
46
46
  requirement: !ruby/object:Gem::Requirement
@@ -111,6 +111,20 @@ dependencies:
111
111
  - - "~>"
112
112
  - !ruby/object:Gem::Version
113
113
  version: 2.4.0
114
+ - !ruby/object:Gem::Dependency
115
+ name: parallel
116
+ requirement: !ruby/object:Gem::Requirement
117
+ requirements:
118
+ - - "~>"
119
+ - !ruby/object:Gem::Version
120
+ version: 1.9.0
121
+ type: :runtime
122
+ prerelease: false
123
+ version_requirements: !ruby/object:Gem::Requirement
124
+ requirements:
125
+ - - "~>"
126
+ - !ruby/object:Gem::Version
127
+ version: 1.9.0
114
128
  - !ruby/object:Gem::Dependency
115
129
  name: bundler
116
130
  requirement: !ruby/object:Gem::Requirement