azure-armrest 0.2.10 → 0.3.0
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/.travis.yml +3 -2
- data/CHANGES +16 -10
- data/README.md +4 -3
- data/azure-armrest.gemspec +1 -0
- data/lib/azure/armrest.rb +3 -1
- data/lib/azure/armrest/armrest_service.rb +111 -364
- data/lib/azure/armrest/billing/usage_service.rb +54 -0
- data/lib/azure/armrest/configuration.rb +258 -0
- data/lib/azure/armrest/exception.rb +4 -25
- data/lib/azure/armrest/model/base_model.rb +24 -4
- data/lib/azure/armrest/model/storage_account.rb +18 -9
- data/lib/azure/armrest/resource_group_based_service.rb +1 -1
- data/lib/azure/armrest/resource_group_service.rb +3 -3
- data/lib/azure/armrest/resource_service.rb +35 -26
- data/lib/azure/armrest/storage_account_service.rb +2 -24
- data/lib/azure/armrest/version.rb +1 -1
- data/lib/azure/armrest/virtual_machine_service.rb +6 -5
- metadata +18 -2
@@ -83,7 +83,7 @@ module Azure
|
|
83
83
|
mutex = Mutex.new
|
84
84
|
|
85
85
|
resource_groups.each do |rg|
|
86
|
-
threads << Thread.new(rg
|
86
|
+
threads << Thread.new(rg.name) do |group|
|
87
87
|
response = rest_get(build_url(group))
|
88
88
|
results = JSON.parse(response)['value'].map { |hash| model_class.new(hash) }
|
89
89
|
mutex.synchronize { array << results } unless results.blank?
|
@@ -18,16 +18,16 @@ module Azure
|
|
18
18
|
#
|
19
19
|
# rgs = ResourceGroupService.new
|
20
20
|
# rgs.list(:top => 2)
|
21
|
-
# rgs.list(:filter => "sometag
|
21
|
+
# rgs.list(:filter => "sometag eq 'value'")
|
22
22
|
#
|
23
23
|
def list(options = {})
|
24
24
|
url = build_url
|
25
25
|
url << "&$top=#{options[:top]}" if options[:top]
|
26
26
|
url << "&$filter=#{options[:filter]}" if options[:filter]
|
27
27
|
|
28
|
-
response = rest_get(
|
28
|
+
response = rest_get(url)
|
29
29
|
|
30
|
-
JSON.parse(response)[
|
30
|
+
JSON.parse(response)['value'].map { |hash| Azure::Armrest::ResourceGroup.new(hash) }
|
31
31
|
end
|
32
32
|
|
33
33
|
# Creates a new +group+ in +location+ for the current subscription.
|
@@ -10,37 +10,29 @@ module Azure
|
|
10
10
|
super(configuration, 'subscriptions', 'Microsoft.Resources', options)
|
11
11
|
end
|
12
12
|
|
13
|
-
# List all the resources for the current subscription
|
14
|
-
# pass :top or :filter options as well
|
15
|
-
#
|
16
|
-
# If you pass a :resource_group option, then only resources for that
|
17
|
-
# resource group are returned.
|
13
|
+
# List all the resources for the current subscription in the specified
|
14
|
+
# resource group. You can optionally pass :top or :filter options as well
|
15
|
+
# to restrict returned results.
|
18
16
|
#
|
19
17
|
# Examples:
|
20
18
|
#
|
21
|
-
# rs = ResourceService.new
|
22
|
-
# rs.list(:top => 2)
|
23
|
-
# rs.list(:filter => "location eq 'centralus'")
|
19
|
+
# rs = Azure::Armrest::ResourceService.new
|
20
|
+
# rs.list(your_group, :top => 2)
|
21
|
+
# rs.list(your_group, :filter => "location eq 'centralus'")
|
24
22
|
#
|
25
|
-
def list(options = {})
|
26
|
-
|
27
|
-
|
28
|
-
|
29
|
-
|
30
|
-
Azure::Armrest::COMMON_URI, subscription_id, 'resourcegroups',
|
31
|
-
options[:resource_group], 'resources'
|
32
|
-
)
|
33
|
-
else
|
34
|
-
url = File.join(Azure::Armrest::COMMON_URI, subscription_id, 'resources')
|
35
|
-
end
|
36
|
-
|
37
|
-
url << "?api-version=#{@api_version}"
|
38
|
-
url << "&$top=#{options[:top]}" if options[:top]
|
39
|
-
url << "&$filter=#{options[:filter]}" if options[:filter]
|
40
|
-
|
41
|
-
response = rest_get(URI.escape(url))
|
23
|
+
def list(resource_group, options = {})
|
24
|
+
url = build_url(resource_group, options)
|
25
|
+
response = rest_get(url)
|
26
|
+
JSON.parse(response)['value'].map { |hash| Azure::Armrest::Resource.new(hash) }
|
27
|
+
end
|
42
28
|
|
43
|
-
|
29
|
+
# Same as Azure::Armrest::ResourceService#list but returns all resources
|
30
|
+
# for all resource groups.
|
31
|
+
#
|
32
|
+
def list_all(options = {})
|
33
|
+
url = build_url(nil, options)
|
34
|
+
response = rest_get(url)
|
35
|
+
JSON.parse(response)['value'].map { |hash| Azure::Armrest::Resource.new(hash) }
|
44
36
|
end
|
45
37
|
|
46
38
|
# Move the resources from +source_group+ under +source_subscription+,
|
@@ -79,6 +71,23 @@ module Azure
|
|
79
71
|
check_resource(resource_name, resource_type)['status'] == 'Allowed'
|
80
72
|
end
|
81
73
|
|
74
|
+
private
|
75
|
+
|
76
|
+
def build_url(resource_group = nil, options = {})
|
77
|
+
url = File.join(Azure::Armrest::COMMON_URI, configuration.subscription_id)
|
78
|
+
|
79
|
+
if resource_group
|
80
|
+
url = File.join(url, 'resourceGroups', resource_group, 'resources')
|
81
|
+
else
|
82
|
+
url = File.join(url, 'resources')
|
83
|
+
end
|
84
|
+
|
85
|
+
url << "?api-version=#{@api_version}"
|
86
|
+
url << "&$top=#{options[:top]}" if options[:top]
|
87
|
+
url << "&$filter=#{options[:filter]}" if options[:filter]
|
88
|
+
|
89
|
+
url
|
90
|
+
end
|
82
91
|
end # ResourceService
|
83
92
|
end # Armrest
|
84
93
|
end # Azure
|
@@ -4,15 +4,6 @@ module Azure
|
|
4
4
|
module Armrest
|
5
5
|
# Class for managing storage accounts.
|
6
6
|
class StorageAccountService < ResourceGroupBasedService
|
7
|
-
|
8
|
-
# Valid account types for the create or update method.
|
9
|
-
VALID_ACCOUNT_TYPES = %w[
|
10
|
-
Standard_LRS
|
11
|
-
Standard_ZRS
|
12
|
-
Standard_GRS
|
13
|
-
Standard_RAGRS
|
14
|
-
]
|
15
|
-
|
16
7
|
# Creates and returns a new StorageAccountService (SAS) instance.
|
17
8
|
#
|
18
9
|
def initialize(configuration, options = {})
|
@@ -89,7 +80,6 @@ module Azure
|
|
89
80
|
#
|
90
81
|
def create(account_name, rgroup = configuration.resource_group, options)
|
91
82
|
validating = options.delete(:validating)
|
92
|
-
validate_account_type(options[:properties][:accountType])
|
93
83
|
validate_account_name(account_name)
|
94
84
|
|
95
85
|
acct = super(account_name, rgroup, options) do |url|
|
@@ -222,7 +212,7 @@ module Azure
|
|
222
212
|
end
|
223
213
|
|
224
214
|
def parse_uri(uri)
|
225
|
-
uri = URI.parse(uri)
|
215
|
+
uri = Addressable::URI.parse(uri)
|
226
216
|
host_components = uri.host.split('.')
|
227
217
|
|
228
218
|
rh = {
|
@@ -261,13 +251,7 @@ module Azure
|
|
261
251
|
|
262
252
|
storage_accounts.each do |lstorage_account|
|
263
253
|
threads << Thread.new(lstorage_account) do |storage_account|
|
264
|
-
|
265
|
-
key = get_account_key(storage_account)
|
266
|
-
rescue Azure::Armrest::ApiException => err
|
267
|
-
# Most likely because the storage account isn't completely provisioned
|
268
|
-
# yet or provisioning of the account was not successful
|
269
|
-
next
|
270
|
-
end
|
254
|
+
key = get_account_key(storage_account)
|
271
255
|
|
272
256
|
storage_account.all_blobs(key).each do |blob|
|
273
257
|
next unless File.extname(blob.name).casecmp('.vhd') == 0
|
@@ -336,12 +320,6 @@ module Azure
|
|
336
320
|
hash
|
337
321
|
end
|
338
322
|
|
339
|
-
def validate_account_type(account_type)
|
340
|
-
unless VALID_ACCOUNT_TYPES.include?(account_type)
|
341
|
-
raise ArgumentError, "invalid account type '#{account_type}'"
|
342
|
-
end
|
343
|
-
end
|
344
|
-
|
345
323
|
def validate_account_name(name)
|
346
324
|
if name.size < 3 || name.size > 24 || name[/\W+/]
|
347
325
|
raise ArgumentError, "name must be 3-24 alpha-numeric characters only"
|
@@ -17,14 +17,15 @@ module Azure
|
|
17
17
|
end
|
18
18
|
|
19
19
|
# Return a list of available VM series (aka sizes, flavors, etc), such
|
20
|
-
# as "Basic_A1", though information is included as well.
|
20
|
+
# as "Basic_A1", though other information is included as well.
|
21
21
|
#
|
22
22
|
def series(location)
|
23
|
-
|
24
|
-
|
25
|
-
end
|
23
|
+
namespace = 'microsoft.compute'
|
24
|
+
version = configuration.provider_default_api_version(namespace, 'locations/vmsizes')
|
26
25
|
|
27
|
-
version
|
26
|
+
unless version
|
27
|
+
raise ArgumentError, "Unable to find resources for #{namespace}"
|
28
|
+
end
|
28
29
|
|
29
30
|
url = url_with_api_version(
|
30
31
|
version, @base_url, 'subscriptions', configuration.subscription_id,
|
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.
|
4
|
+
version: 0.3.0
|
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-
|
14
|
+
date: 2016-06-28 00:00:00.000000000 Z
|
15
15
|
dependencies:
|
16
16
|
- !ruby/object:Gem::Dependency
|
17
17
|
name: json
|
@@ -97,6 +97,20 @@ dependencies:
|
|
97
97
|
- - "~>"
|
98
98
|
- !ruby/object:Gem::Version
|
99
99
|
version: 1.6.0
|
100
|
+
- !ruby/object:Gem::Dependency
|
101
|
+
name: addressable
|
102
|
+
requirement: !ruby/object:Gem::Requirement
|
103
|
+
requirements:
|
104
|
+
- - "~>"
|
105
|
+
- !ruby/object:Gem::Version
|
106
|
+
version: 2.4.0
|
107
|
+
type: :runtime
|
108
|
+
prerelease: false
|
109
|
+
version_requirements: !ruby/object:Gem::Requirement
|
110
|
+
requirements:
|
111
|
+
- - "~>"
|
112
|
+
- !ruby/object:Gem::Version
|
113
|
+
version: 2.4.0
|
100
114
|
- !ruby/object:Gem::Dependency
|
101
115
|
name: bundler
|
102
116
|
requirement: !ruby/object:Gem::Requirement
|
@@ -194,6 +208,8 @@ files:
|
|
194
208
|
- lib/azure/armrest/armrest_collection.rb
|
195
209
|
- lib/azure/armrest/armrest_service.rb
|
196
210
|
- lib/azure/armrest/availability_set_service.rb
|
211
|
+
- lib/azure/armrest/billing/usage_service.rb
|
212
|
+
- lib/azure/armrest/configuration.rb
|
197
213
|
- lib/azure/armrest/exception.rb
|
198
214
|
- lib/azure/armrest/insights/alert_service.rb
|
199
215
|
- lib/azure/armrest/insights/event_service.rb
|