azure-armrest 0.4.2 → 0.5.0
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 +4 -4
- data/CHANGES +7 -0
- data/lib/azure/armrest.rb +1 -15
- data/lib/azure/armrest/armrest_service.rb +7 -9
- data/lib/azure/armrest/configuration.rb +6 -34
- data/lib/azure/armrest/environment.rb +124 -0
- data/lib/azure/armrest/insights/diagnostic_service.rb +1 -1
- data/lib/azure/armrest/resource_group_based_service.rb +4 -6
- data/lib/azure/armrest/resource_provider_service.rb +1 -1
- data/lib/azure/armrest/resource_service.rb +2 -2
- data/lib/azure/armrest/subscription_service.rb +1 -1
- data/lib/azure/armrest/version.rb +1 -1
- data/lib/azure/armrest/virtual_machine_service.rb +1 -2
- metadata +3 -2
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: b525251ef80821ff56d3acea755a8861afda77fa
|
4
|
+
data.tar.gz: 7b349ae37b233c3c0f120c7dfbbcc7572cab8ec3
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 9ff548c71449012c821ee00355ab71dd2d58b47594d76257c0fe3237da3a8fad55233b1fee8e17769655cb18633af1923c6225083c6f4ef056a30300e6ae5613
|
7
|
+
data.tar.gz: 202570079f1463b424937e400352c46f5ad7bf36889e57d261eced1908aee1b9a9a26ae96b230edc0d4b9277f2ebf46aa7dee42ef28fd20aee22436499d83d04
|
data/CHANGES
CHANGED
@@ -1,3 +1,10 @@
|
|
1
|
+
= 0.5.0 - 20-Dec-2016
|
2
|
+
* Added the Azure::Armrest::Environment class. The Configuration#environment
|
3
|
+
option now takes an Environment instance. There are two predefined instances
|
4
|
+
that you can use - Public or USGovernment. The default is Public.
|
5
|
+
* Fixed bugs caused by altering the base_url. This affected the tags and
|
6
|
+
tenants methods, as well as the VirtualMachineService#series method.
|
7
|
+
|
1
8
|
= 0.4.2 - 19-Dec-2016
|
2
9
|
* Added the delete_by_id method, so you can now delete by ID string.
|
3
10
|
* Added the TemplateDeploymentService#delete_associated_resources method.
|
data/lib/azure/armrest.rb
CHANGED
@@ -7,29 +7,15 @@ require 'cache_method'
|
|
7
7
|
|
8
8
|
# The Azure module serves as a namespace.
|
9
9
|
module Azure
|
10
|
-
|
11
10
|
# The Armrest module mostly serves as a namespace, but also contains any
|
12
11
|
# common constants shared by subclasses.
|
13
12
|
module Armrest
|
14
|
-
# The default (public) Azure resource
|
15
|
-
RESOURCE = "https://management.azure.com/"
|
16
|
-
|
17
|
-
# The resource for US Government clients
|
18
|
-
USGOV_RESOURCE = "https://management.core.usgovcloudapi.net/"
|
19
|
-
|
20
|
-
# The default (public) authority resource
|
21
|
-
AUTHORITY = "https://login.microsoftonline.com/"
|
22
|
-
|
23
|
-
# The authority for US Government clients
|
24
|
-
USGOV_AUTHORITY = "https://login-us.microsoftonline.com/"
|
25
|
-
|
26
|
-
# Environment string used to indicate US Government
|
27
|
-
USGOV_ENVIRONMENT = 'usgov'
|
28
13
|
end
|
29
14
|
end
|
30
15
|
|
31
16
|
require 'azure/armrest/version'
|
32
17
|
require 'azure/armrest/configuration'
|
18
|
+
require 'azure/armrest/environment'
|
33
19
|
require 'azure/armrest/exception'
|
34
20
|
require 'azure/armrest/armrest_collection'
|
35
21
|
require 'azure/armrest/armrest_service'
|
@@ -46,7 +46,11 @@ module Azure
|
|
46
46
|
end
|
47
47
|
|
48
48
|
# Base URL used for REST calls. Modify within method calls as needed.
|
49
|
-
@base_url = File.join(
|
49
|
+
@base_url = File.join(
|
50
|
+
configuration.environment.resource_url,
|
51
|
+
'subscriptions',
|
52
|
+
configuration.subscription_id
|
53
|
+
)
|
50
54
|
|
51
55
|
set_service_api_version(options, service_name)
|
52
56
|
end
|
@@ -135,13 +139,7 @@ module Azure
|
|
135
139
|
# Returns a list of tags for the current subscription.
|
136
140
|
#
|
137
141
|
def tags
|
138
|
-
url = url_with_api_version(
|
139
|
-
configuration.api_version,
|
140
|
-
@base_url,
|
141
|
-
'subscriptions',
|
142
|
-
configuration.subscription_id,
|
143
|
-
'tagNames'
|
144
|
-
)
|
142
|
+
url = url_with_api_version(configuration.api_version, base_url, 'tagNames')
|
145
143
|
resp = rest_get(url)
|
146
144
|
JSON.parse(resp.body)["value"].map{ |hash| Azure::Armrest::Tag.new(hash) }
|
147
145
|
end
|
@@ -149,7 +147,7 @@ module Azure
|
|
149
147
|
# Returns a list of tenants that can be accessed.
|
150
148
|
#
|
151
149
|
def tenants
|
152
|
-
url = url_with_api_version(configuration.api_version,
|
150
|
+
url = url_with_api_version(configuration.api_version, configuration.resource_url, 'tenants')
|
153
151
|
resp = rest_get(url)
|
154
152
|
JSON.parse(resp.body)['value'].map{ |hash| Azure::Armrest::Tenant.new(hash) }
|
155
153
|
end
|
@@ -64,14 +64,9 @@ module Azure
|
|
64
64
|
# Maximum number of threads to use within methods that use Parallel for thread pooling.
|
65
65
|
attr_accessor :max_threads
|
66
66
|
|
67
|
-
# The environment
|
68
|
-
|
69
|
-
|
70
|
-
# The authority URL used to acquire a valid token.
|
71
|
-
attr_accessor :resource_url
|
72
|
-
|
73
|
-
# The resource URL used to acquire a valid token.
|
74
|
-
attr_accessor :authority_url
|
67
|
+
# The environment object which determines various endpoint URL's. The
|
68
|
+
# default is Azure::Armrest::Environment::Public.
|
69
|
+
attr_accessor :environment
|
75
70
|
|
76
71
|
# Yields a new Azure::Armrest::Configuration objects. Note that you must
|
77
72
|
# specify a client_id, client_key, tenant_id. The subscription_id is optional
|
@@ -106,8 +101,7 @@ module Azure
|
|
106
101
|
:proxy => ENV['http_proxy'],
|
107
102
|
:ssl_version => 'TLSv1',
|
108
103
|
:max_threads => 10,
|
109
|
-
:
|
110
|
-
:resource_url => Azure::Armrest::RESOURCE
|
104
|
+
:environment => Azure::Armrest::Environment::Public
|
111
105
|
}.merge(args.symbolize_keys)
|
112
106
|
|
113
107
|
# Avoid thread safety issues for VCR testing.
|
@@ -218,28 +212,6 @@ module Azure
|
|
218
212
|
|
219
213
|
private
|
220
214
|
|
221
|
-
# Sets the environment to authenticate against. The environment
|
222
|
-
# must support ActiveDirectory.
|
223
|
-
#
|
224
|
-
def environment=(env)
|
225
|
-
return if env == environment
|
226
|
-
set_auth_and_resource_urls(env)
|
227
|
-
@environment = env
|
228
|
-
end
|
229
|
-
|
230
|
-
# Sets the authority_url and resource_url accessors depending on the
|
231
|
-
# environment.
|
232
|
-
#--
|
233
|
-
# Only two supported at the moment, but more likely to be added.
|
234
|
-
#
|
235
|
-
def set_auth_and_resource_urls(env)
|
236
|
-
case env.to_s.downcase
|
237
|
-
when Azure::Armrest::USGOV_ENVIRONMENT
|
238
|
-
@authority_url = Azure::Armrest::USGOV_AUTHORITY
|
239
|
-
@resource_url = Azure::Armrest::USGOV_RESOURCE
|
240
|
-
end
|
241
|
-
end
|
242
|
-
|
243
215
|
# Validate the subscription ID for the given credentials. Returns the
|
244
216
|
# subscription ID if valid.
|
245
217
|
#
|
@@ -307,7 +279,7 @@ module Azure
|
|
307
279
|
end
|
308
280
|
|
309
281
|
def fetch_token
|
310
|
-
token_url = File.join(authority_url, tenant_id, 'oauth2
|
282
|
+
token_url = File.join(environment.authority_url, tenant_id, 'oauth2', 'token')
|
311
283
|
|
312
284
|
response = JSON.parse(
|
313
285
|
ArmrestService.send(
|
@@ -320,7 +292,7 @@ module Azure
|
|
320
292
|
:grant_type => grant_type,
|
321
293
|
:client_id => client_id,
|
322
294
|
:client_secret => client_key,
|
323
|
-
:resource => resource_url
|
295
|
+
:resource => environment.resource_url
|
324
296
|
}
|
325
297
|
)
|
326
298
|
)
|
@@ -0,0 +1,124 @@
|
|
1
|
+
module Azure
|
2
|
+
module Armrest
|
3
|
+
class Environment
|
4
|
+
# A list of valid keys that can be passed to the constructor
|
5
|
+
VALID_KEYS = [
|
6
|
+
:name,
|
7
|
+
:active_directory_authority,
|
8
|
+
:active_directory_resource_id,
|
9
|
+
:gallery_url,
|
10
|
+
:graph_url,
|
11
|
+
:graph_api_version,
|
12
|
+
:key_vault_dns_suffix,
|
13
|
+
:key_vault_service_resource_id,
|
14
|
+
:publish_settings_file_url,
|
15
|
+
:resource_manager_url,
|
16
|
+
:service_management_url,
|
17
|
+
:sql_database_dns_suffix,
|
18
|
+
:storage_suffix,
|
19
|
+
:traffic_manager_dns_suffix
|
20
|
+
]
|
21
|
+
|
22
|
+
# The Environment name
|
23
|
+
attr_reader :name
|
24
|
+
|
25
|
+
# The authority used to acquire an AD token
|
26
|
+
attr_reader :active_directory_authority
|
27
|
+
|
28
|
+
# The resource ID used to obtain an AD token
|
29
|
+
attr_reader :active_directory_resource_id
|
30
|
+
|
31
|
+
# The template gallery endpoint
|
32
|
+
attr_reader :gallery_url
|
33
|
+
|
34
|
+
# The Active Directory resource ID
|
35
|
+
attr_reader :graph_url
|
36
|
+
|
37
|
+
# The api-version for Active Directory
|
38
|
+
attr_reader :graph_api_version
|
39
|
+
|
40
|
+
# The KeyValut service DNS suffix
|
41
|
+
attr_reader :key_vault_dns_suffix
|
42
|
+
|
43
|
+
# The KeyVault service resource ID
|
44
|
+
attr_reader :key_vault_service_resource_id
|
45
|
+
|
46
|
+
# The publish settings file URL
|
47
|
+
attr_reader :publish_settings_file_url
|
48
|
+
|
49
|
+
# The resource management endpoint
|
50
|
+
attr_reader :resource_manager_url
|
51
|
+
|
52
|
+
# The service management URL
|
53
|
+
attr_reader :service_management_url
|
54
|
+
|
55
|
+
# The DNS suffix for SQL Server instances
|
56
|
+
attr_reader :sql_database_dns_suffix
|
57
|
+
|
58
|
+
# The endpoint suffix for storage accounts
|
59
|
+
attr_reader :storage_suffix
|
60
|
+
|
61
|
+
# The DNS suffix for TrafficManager
|
62
|
+
attr_reader :traffic_manager_dns_suffix
|
63
|
+
|
64
|
+
# Creates a new Azure::Armrest::Environment object. At a minimum, the
|
65
|
+
# options hash must include the :name, :active_directory_authority and
|
66
|
+
# :active_directory_resource_id.
|
67
|
+
#
|
68
|
+
# Note that there are pre-generated environments already for Public
|
69
|
+
# and US Government environments.
|
70
|
+
#
|
71
|
+
def initialize(options)
|
72
|
+
options.symbolize_keys.each do |key, value|
|
73
|
+
raise ArgumentError, "Invalid key '#{key}'" unless VALID_KEYS.include?(key)
|
74
|
+
instance_variable_set("@#{key}", value)
|
75
|
+
end
|
76
|
+
|
77
|
+
[:name, :active_directory_authority, :resource_manager_url].each do |key|
|
78
|
+
unless instance_variable_get("@#{key}")
|
79
|
+
raise ArgumentError, "Mandatory argument '#{key}' not set"
|
80
|
+
end
|
81
|
+
end
|
82
|
+
end
|
83
|
+
|
84
|
+
alias authority_url active_directory_authority
|
85
|
+
alias resource_url resource_manager_url
|
86
|
+
|
87
|
+
# Pre-generated environments
|
88
|
+
|
89
|
+
Public = self.new(
|
90
|
+
:name => 'Public',
|
91
|
+
:active_directory_authority => 'https://login.microsoftonline.com/',
|
92
|
+
:active_directory_resource_id => 'https://management.core.windows.net/',
|
93
|
+
:gallery_url => 'https://gallery.azure.com/',
|
94
|
+
:graph_url => 'https://graph.windows.net/',
|
95
|
+
:graph_api_version => '1.6',
|
96
|
+
:key_vault_dns_suffix => 'vault.azure.net',
|
97
|
+
:key_vault_service_resource_id => 'https://vault.azure.net',
|
98
|
+
:publish_settings_file_url => 'https://manage.windowsazure.com/publishsettings/index',
|
99
|
+
:resource_manager_url => 'https://management.azure.com/',
|
100
|
+
:service_management_url => 'https://management.core.windows.net/',
|
101
|
+
:sql_database_dns_suffix => 'database.windows.net',
|
102
|
+
:storage_suffix => 'core.windows.net',
|
103
|
+
:traffic_manager_dns_suffix => 'trafficmanager.net',
|
104
|
+
)
|
105
|
+
|
106
|
+
USGovernment = self.new(
|
107
|
+
:name => 'US Government',
|
108
|
+
:active_directory_authority => 'https://login-us.microsoftonline.com/',
|
109
|
+
:active_directory_resource_id => 'https://management.core.usgovcloudapi.net/',
|
110
|
+
:gallery_url => 'https://gallery.usgovcloudapi.net/',
|
111
|
+
:graph_url => 'https://graph.windows.net/',
|
112
|
+
:graph_api_version => '1.6',
|
113
|
+
:key_vault_dns_suffix => 'vault.usgovcloudapi.net',
|
114
|
+
:key_vault_service_resource_id => 'https://vault.usgovcloudapi.net',
|
115
|
+
:publish_settings_file_url => 'https://manage.windowsazure.us/publishsettings/index',
|
116
|
+
:resource_manager_url => 'https://management.usgovcloudapi.net/',
|
117
|
+
:service_management_url => 'https://management.core.usgovcloudapi.net/',
|
118
|
+
:sql_database_dns_suffix => 'database.usgovcloudapi.net',
|
119
|
+
:storage_suffix => 'core.usgovcloudapi.net',
|
120
|
+
:traffic_manager_dns_suffix => 'usgovtrafficmanager.net',
|
121
|
+
)
|
122
|
+
end
|
123
|
+
end
|
124
|
+
end
|
@@ -107,7 +107,7 @@ module Azure
|
|
107
107
|
info['subservice_name'])
|
108
108
|
service_name = info['subservice_name'] || info['service_name'] || 'resourceGroups'
|
109
109
|
|
110
|
-
url = File.join(configuration.resource_url, id_string) + "?api-version=#{api_version}"
|
110
|
+
url = File.join(configuration.environment.resource_url, id_string) + "?api-version=#{api_version}"
|
111
111
|
|
112
112
|
model_class = SERVICE_NAME_MAP.fetch(service_name.downcase) do
|
113
113
|
raise ArgumentError, "unable to map service name #{service_name} to model"
|
@@ -120,10 +120,8 @@ module Azure
|
|
120
120
|
|
121
121
|
def delete_by_id(id_string)
|
122
122
|
info = parse_id_string(id_string)
|
123
|
-
api_version = api_version_lookup(info['provider'],
|
124
|
-
|
125
|
-
info['subservice_name'])
|
126
|
-
url = File.join(configuration.resource_url, id_string) + "?api-version=#{api_version}"
|
123
|
+
api_version = api_version_lookup(info['provider'], info['service_name'], info['subservice_name'])
|
124
|
+
url = File.join(configuration.environment.resource_url, id_string) + "?api-version=#{api_version}"
|
127
125
|
|
128
126
|
delete_by_url(url, id_string)
|
129
127
|
end
|
@@ -217,7 +215,7 @@ module Azure
|
|
217
215
|
# arguments provided, and appends it with the api_version.
|
218
216
|
#
|
219
217
|
def build_url(resource_group = nil, *args)
|
220
|
-
url = File.join(configuration.resource_url, build_id_string(resource_group, *args))
|
218
|
+
url = File.join(configuration.environment.resource_url, build_id_string(resource_group, *args))
|
221
219
|
url << "?api-version=#{@api_version}"
|
222
220
|
end
|
223
221
|
|
@@ -61,7 +61,7 @@ module Azure
|
|
61
61
|
end
|
62
62
|
|
63
63
|
def _list_all
|
64
|
-
url = File.join(configuration.resource_url, 'providers')
|
64
|
+
url = File.join(configuration.environment.resource_url, 'providers')
|
65
65
|
url << "?api-version=#{@api_version}"
|
66
66
|
response = rest_get(url)
|
67
67
|
JSON.parse(response)['value']
|
@@ -56,7 +56,7 @@ module Azure
|
|
56
56
|
#
|
57
57
|
def move(source_group, source_subscription = configuration.subscription_id)
|
58
58
|
url = File.join(
|
59
|
-
configuration.resource_url,
|
59
|
+
configuration.environment.resource_url,
|
60
60
|
'subscriptions',
|
61
61
|
source_subscription,
|
62
62
|
'resourcegroups',
|
@@ -78,7 +78,7 @@ module Azure
|
|
78
78
|
#
|
79
79
|
def check_resource(resource_name, resource_type)
|
80
80
|
body = JSON.dump(:Name => resource_name, :Type => resource_type)
|
81
|
-
url = File.join(
|
81
|
+
url = File.join(configuration.environment.resource_url, 'providers', provider, 'checkresourcename')
|
82
82
|
url << "?api-version=#{@api_version}"
|
83
83
|
|
84
84
|
response = rest_post(url, body)
|
@@ -28,8 +28,7 @@ module Azure
|
|
28
28
|
end
|
29
29
|
|
30
30
|
url = url_with_api_version(
|
31
|
-
version,
|
32
|
-
'providers', provider, 'locations', location, 'vmSizes'
|
31
|
+
version, base_url, 'providers', provider, 'locations', location, 'vmSizes'
|
33
32
|
)
|
34
33
|
|
35
34
|
JSON.parse(rest_get(url))['value'].map{ |hash| VirtualMachineSize.new(hash) }
|
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.5.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-12-
|
14
|
+
date: 2016-12-20 00:00:00.000000000 Z
|
15
15
|
dependencies:
|
16
16
|
- !ruby/object:Gem::Dependency
|
17
17
|
name: json
|
@@ -238,6 +238,7 @@ files:
|
|
238
238
|
- lib/azure/armrest/availability_set_service.rb
|
239
239
|
- lib/azure/armrest/billing/usage_service.rb
|
240
240
|
- lib/azure/armrest/configuration.rb
|
241
|
+
- lib/azure/armrest/environment.rb
|
241
242
|
- lib/azure/armrest/exception.rb
|
242
243
|
- lib/azure/armrest/insights/alert_service.rb
|
243
244
|
- lib/azure/armrest/insights/diagnostic_service.rb
|