avst-cloud 0.1.14 → 0.1.17
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +8 -8
- data/avst-cloud.gemspec +2 -2
- data/bin/avst-cloud-azure-rm +6 -3
- data/lib/avst-cloud/azure_rm_connection.rb +84 -36
- metadata +6 -6
checksums.yaml
CHANGED
@@ -1,15 +1,15 @@
|
|
1
1
|
---
|
2
2
|
!binary "U0hBMQ==":
|
3
3
|
metadata.gz: !binary |-
|
4
|
-
|
4
|
+
MzFkODdkZDM1M2NiZTcxNDkxMTEzN2E3N2U5OWU3NjE1NTU0ZDE3OQ==
|
5
5
|
data.tar.gz: !binary |-
|
6
|
-
|
6
|
+
MjUyZTIwYzMyNTA1Mzk1MGZjZWYxZTU5MzQ1OTk4MDY1MmNmNWZjNA==
|
7
7
|
SHA512:
|
8
8
|
metadata.gz: !binary |-
|
9
|
-
|
10
|
-
|
11
|
-
|
9
|
+
MjM5ZTZjY2RhZjMzNDliOGVmMDBhNzljOWNiODY0MDhjZmJmZmJhMzZmMWU1
|
10
|
+
NTk3YTdmOWYyYzVjMTgzZDZhODIyNGJlMTAxYThhMzc2NmZjNjVhNjk2YTA5
|
11
|
+
ZWRjYzgwODc1OTViYzM0OTljYzM1ZGVlNjJhZjgyY2ZjOWZhNDI=
|
12
12
|
data.tar.gz: !binary |-
|
13
|
-
|
14
|
-
|
15
|
-
|
13
|
+
NTFlOTI3ZDYyZWQ0NTdjYzNhMjRkYzA2NGNhNDk2Yzc0MzUyN2IzYzU3OWNm
|
14
|
+
MTgzMjNiODE4NzA2NTc5ZTY3NmZmODkyZDA5Mzg4YjI5ZWQ5YjY0YTUyOWVm
|
15
|
+
Zjc3ZmY1NDlhYTEzZGY3YjVhOTcyNDY0MWI4MzMzZmZkOTllNWY=
|
data/avst-cloud.gemspec
CHANGED
@@ -4,7 +4,7 @@ $LOAD_PATH.unshift(lib) unless $LOAD_PATH.include?(lib)
|
|
4
4
|
|
5
5
|
Gem::Specification.new do |spec|
|
6
6
|
spec.name = "avst-cloud"
|
7
|
-
spec.version = '0.1.
|
7
|
+
spec.version = '0.1.17'
|
8
8
|
spec.authors = ["Martin Brehovsky", "Jon Bevan", "Matthew Hope"]
|
9
9
|
spec.email = ["mbrehovsky@adaptavist.com", "jbevan@adaptavist.com", "mhope@adaptavist.com"]
|
10
10
|
spec.summary = %q{Automated creation, bootstrapping and provisioning of servers }
|
@@ -20,7 +20,7 @@ Gem::Specification.new do |spec|
|
|
20
20
|
spec.add_development_dependency "rake"
|
21
21
|
spec.add_dependency "fog"
|
22
22
|
spec.add_dependency "fog-azure"
|
23
|
-
spec.add_dependency "fog-azure-rm"
|
23
|
+
spec.add_dependency "fog-azure-rm", "0.0.3"
|
24
24
|
spec.add_dependency "azure"
|
25
25
|
spec.add_dependency "capistrano", "3.2.1"
|
26
26
|
spec.add_dependency "capistrano-rvm"
|
data/bin/avst-cloud-azure-rm
CHANGED
@@ -35,7 +35,7 @@ publisher = 'Canonical'
|
|
35
35
|
offer = 'UbuntuServer'
|
36
36
|
sku = '14.04.2-LTS'
|
37
37
|
version = 'latest'
|
38
|
-
|
38
|
+
platform = nil # defaults to Linux
|
39
39
|
server_name = "hostname1"
|
40
40
|
user = "ubuntu"
|
41
41
|
# Must comply to Azure pass guidelines
|
@@ -55,6 +55,7 @@ dns_list = nil
|
|
55
55
|
network_address_list = nil
|
56
56
|
address_prefix = nil
|
57
57
|
use_public_ip = true # will return public ip, if set to false, private will be used by bootstrap
|
58
|
+
create_public_ip_configuration = true # in case you do not want to create public ip config set to false, ip_configuration_name needs to be set anyway, defaults to true
|
58
59
|
serv = conn.create_server(server_name,
|
59
60
|
user,
|
60
61
|
password,
|
@@ -62,7 +63,8 @@ serv = conn.create_server(server_name,
|
|
62
63
|
offer,
|
63
64
|
sku,
|
64
65
|
version,
|
65
|
-
|
66
|
+
platform,
|
67
|
+
location,
|
66
68
|
resource_group,
|
67
69
|
vm_size,
|
68
70
|
storage_account_name,
|
@@ -76,7 +78,8 @@ serv = conn.create_server(server_name,
|
|
76
78
|
dns_list,
|
77
79
|
network_address_list,
|
78
80
|
address_prefix,
|
79
|
-
use_public_ip
|
81
|
+
use_public_ip,
|
82
|
+
create_public_ip_configuration)
|
80
83
|
|
81
84
|
# serv = conn.server(server_name, resource_group ,user, password)
|
82
85
|
# puts serv.inspect
|
@@ -27,7 +27,7 @@ module AvstCloud
|
|
27
27
|
@subscription_id = subscription_id
|
28
28
|
end
|
29
29
|
|
30
|
-
def server(server_name, resource_group, root_user, root_password, use_public_ip=true)
|
30
|
+
def server(server_name, resource_group, root_user, root_password, use_public_ip=true, network_interface_resource_group=nil, public_ip_resource_group=nil )
|
31
31
|
server = find_fog_server(server_name, resource_group)
|
32
32
|
if !root_user
|
33
33
|
root_user = get_root_user
|
@@ -35,22 +35,24 @@ module AvstCloud
|
|
35
35
|
ip_address = nil
|
36
36
|
if (server.network_interface_card_id)
|
37
37
|
network_interface_card_name = server.network_interface_card_id.split("/")[-1]
|
38
|
-
|
38
|
+
network_interface_resource_group = resource_group unless network_interface_resource_group
|
39
|
+
nic = connect_to_networks.network_interfaces(resource_group: network_interface_resource_group).get(network_interface_card_name)
|
39
40
|
if nic
|
40
41
|
if use_public_ip
|
41
42
|
if nic.public_ip_address_id
|
42
43
|
ip_configuration_name = nic.public_ip_address_id.split("/")[-1]
|
43
|
-
|
44
|
+
public_ip_resource_group = network_interface_resource_group unless public_ip_resource_group
|
45
|
+
pip = connect_to_networks.public_ips(resource_group: public_ip_resource_group).get(ip_configuration_name)
|
44
46
|
ip_address = pip.ip_address
|
45
47
|
else
|
46
|
-
logger.debug "Can not find public ip for server #{server_name} in resource_group #{
|
48
|
+
logger.debug "Can not find public ip for server #{server_name} in resource_group #{public_ip_resource_group}"
|
47
49
|
raise "Can not find public ip"
|
48
50
|
end
|
49
51
|
else
|
50
52
|
ip_address = nic.private_ip_address
|
51
53
|
end
|
52
54
|
else
|
53
|
-
logger.debug "Can not find network interface card for server #{server_name} in resource_group #{
|
55
|
+
logger.debug "Can not find network interface card for server #{server_name} in resource_group #{network_interface_resource_group}"
|
54
56
|
raise "Can not find network interface card"
|
55
57
|
end
|
56
58
|
else
|
@@ -68,6 +70,7 @@ module AvstCloud
|
|
68
70
|
offer,
|
69
71
|
sku,
|
70
72
|
version,
|
73
|
+
platform,
|
71
74
|
location,
|
72
75
|
resource_group,
|
73
76
|
vm_size,
|
@@ -82,12 +85,19 @@ module AvstCloud
|
|
82
85
|
dns_list,
|
83
86
|
network_address_list,
|
84
87
|
address_prefix,
|
85
|
-
use_public_ip
|
88
|
+
use_public_ip,
|
89
|
+
create_public_ip_configuration,
|
90
|
+
storage_account_resource_group=nil,
|
91
|
+
virtual_network_resource_group=nil,
|
92
|
+
network_interface_resource_group=nil,
|
93
|
+
public_ip_resource_group=nil,
|
94
|
+
subnet_resource_group=nil
|
95
|
+
)
|
86
96
|
|
87
97
|
location = location || 'West Europe'
|
88
98
|
user = user || get_root_user
|
89
99
|
vm_size = vm_size || "Basic_A0"
|
90
|
-
|
100
|
+
platform = platform || "Linux"
|
91
101
|
# Check that resource_group exists if not create one
|
92
102
|
check_create_resource_group(resource_group, location)
|
93
103
|
|
@@ -108,13 +118,26 @@ module AvstCloud
|
|
108
118
|
logger.debug "offer - #{offer}"
|
109
119
|
logger.debug "sku - #{sku}"
|
110
120
|
logger.debug "version - #{version}"
|
121
|
+
logger.debug "platform - #{platform}"
|
122
|
+
|
123
|
+
storage_account_resource_group = resource_group unless storage_account_resource_group
|
124
|
+
virtual_network_resource_group = resource_group unless virtual_network_resource_group
|
125
|
+
network_interface_resource_group = virtual_network_resource_group unless network_interface_resource_group
|
126
|
+
public_ip_resource_group = virtual_network_resource_group unless public_ip_resource_group
|
127
|
+
subnet_resource_group = virtual_network_resource_group unless subnet_resource_group
|
128
|
+
|
129
|
+
logger.debug "storage_account_resource_group - #{storage_account_resource_group}"
|
130
|
+
logger.debug "network_interface_resource_group - #{network_interface_resource_group}"
|
131
|
+
logger.debug "virtual_network_resource_group - #{virtual_network_resource_group}"
|
132
|
+
logger.debug "public_ip_resource_group - #{public_ip_resource_group}"
|
133
|
+
logger.debug "subnet_resource_group - #{subnet_resource_group}"
|
111
134
|
|
112
135
|
# Check that storage_account exists if not create one
|
113
|
-
check_create_storage_account(storage_account_name, location,
|
136
|
+
check_create_storage_account(storage_account_name, location, storage_account_resource_group)
|
114
137
|
|
115
138
|
# Check if network_interface_card_id exists if not create one
|
116
139
|
# If not, create one for virtual network provided with subnet, security group and also public ip name
|
117
|
-
ip_address = check_create_network_interface(network_interface_name,
|
140
|
+
ip_address = check_create_network_interface(network_interface_name, network_interface_resource_group, location, virtual_network_name, subnet_name, ip_configuration_name, private_ip_allocation_method, public_ip_allocation_method, subnet_address_list, dns_list, network_address_list, address_prefix, use_public_ip, create_public_ip_configuration, virtual_network_resource_group, public_ip_resource_group, subnet_resource_group)
|
118
141
|
|
119
142
|
# create server
|
120
143
|
server = connect.servers.create(
|
@@ -126,11 +149,12 @@ module AvstCloud
|
|
126
149
|
username: user,
|
127
150
|
password: password,
|
128
151
|
disable_password_authentication: false,
|
129
|
-
network_interface_card_id: "/subscriptions/#{@subscription_id}/resourceGroups/#{
|
152
|
+
network_interface_card_id: "/subscriptions/#{@subscription_id}/resourceGroups/#{network_interface_resource_group}/providers/Microsoft.Network/networkInterfaces/#{network_interface_name}",
|
130
153
|
publisher: publisher,
|
131
154
|
offer: offer,
|
132
155
|
sku: sku,
|
133
|
-
version: version
|
156
|
+
version: version,
|
157
|
+
platform: platform
|
134
158
|
)
|
135
159
|
|
136
160
|
result_server = AvstCloud::AzureRmServer.new(server, server_name, ip_address, user, password)
|
@@ -147,18 +171,27 @@ module AvstCloud
|
|
147
171
|
logger.debug "#{storage_acc.inspect}"
|
148
172
|
end
|
149
173
|
|
150
|
-
def check_create_network_interface(network_interface_name, resource_group, location, virtual_network_name, subnet_name, ip_configuration_name, private_ip_allocation_method="Dynamic", public_ip_allocation_method="Static", subnet_address_list=nil, dns_list=nil, network_address_list=nil, address_prefix=nil, use_public_ip=true)
|
174
|
+
def check_create_network_interface(network_interface_name, resource_group, location, virtual_network_name, subnet_name, ip_configuration_name, private_ip_allocation_method="Dynamic", public_ip_allocation_method="Static", subnet_address_list=nil, dns_list=nil, network_address_list=nil, address_prefix=nil, use_public_ip=true, create_public_ip_configuration=true, virtual_network_resource_group=nil, public_ip_resource_group=nil, subnet_resource_group=nil)
|
151
175
|
nic = connect_to_networks.network_interfaces(resource_group: resource_group).get(network_interface_name)
|
152
176
|
|
153
177
|
# check/create ip_configuration_name exists
|
154
|
-
|
178
|
+
if create_public_ip_configuration
|
179
|
+
public_ip_resource_group = resource_group unless public_ip_resource_group
|
180
|
+
public_ip = check_create_ip_configuration(ip_configuration_name, public_ip_resource_group, location, public_ip_allocation_method)
|
181
|
+
public_ip_address_id = "/subscriptions/#{@subscription_id}/resourceGroups/#{public_ip_resource_group}/providers/Microsoft.Network/publicIPAddresses/#{ip_configuration_name}"
|
182
|
+
else
|
183
|
+
use_public_ip = false
|
184
|
+
end
|
155
185
|
unless nic
|
186
|
+
# default virtual_network_resource_group to network interface resource group
|
187
|
+
virtual_network_resource_group = resource_group unless virtual_network_resource_group
|
156
188
|
# check/create virtual_network exists
|
157
|
-
vnet = check_create_virtual_network(virtual_network_name,
|
189
|
+
vnet = check_create_virtual_network(virtual_network_name, virtual_network_resource_group, location, subnet_address_list, dns_list, network_address_list)
|
158
190
|
|
191
|
+
subnet_resource_group = virtual_network_resource_group unless subnet_resource_group
|
159
192
|
# check if provided subnet exists, if nil then use default one
|
160
|
-
unless subnet_name
|
161
|
-
subnets = connect_to_networks.subnets(resource_group:
|
193
|
+
unless subnet_name
|
194
|
+
subnets = connect_to_networks.subnets(resource_group: subnet_resource_group, virtual_network_name: virtual_network_name)
|
162
195
|
if subnets.length == 0
|
163
196
|
raise "Can not decide what subnet to choose. There are no subnets for virtual network #{virtual_network_name}."
|
164
197
|
elsif subnets.length != 1
|
@@ -167,16 +200,16 @@ module AvstCloud
|
|
167
200
|
subnet_name = subnets[0].name
|
168
201
|
logger.debug "Using subnet #{subnet_name}"
|
169
202
|
end
|
170
|
-
|
171
203
|
nic = connect_to_networks.network_interfaces.create(
|
172
204
|
name: network_interface_name,
|
173
205
|
resource_group: resource_group,
|
174
206
|
location: location,
|
175
|
-
subnet_id: "/subscriptions/#{@subscription_id}/resourceGroups/#{
|
176
|
-
public_ip_address_id:
|
207
|
+
subnet_id: "/subscriptions/#{@subscription_id}/resourceGroups/#{subnet_resource_group}/providers/Microsoft.Network/virtualNetworks/#{virtual_network_name}/subnets/#{subnet_name}",
|
208
|
+
public_ip_address_id: public_ip_address_id,
|
177
209
|
ip_configuration_name: ip_configuration_name,
|
178
210
|
private_ip_allocation_method: private_ip_allocation_method
|
179
211
|
)
|
212
|
+
|
180
213
|
end
|
181
214
|
if use_public_ip
|
182
215
|
public_ip
|
@@ -185,12 +218,13 @@ module AvstCloud
|
|
185
218
|
end
|
186
219
|
end
|
187
220
|
|
188
|
-
def find_network_interface_for_server(server_name, resource_group, should_fail=false)
|
221
|
+
def find_network_interface_for_server(server_name, resource_group, should_fail=false, network_interface_resource_group=nil)
|
189
222
|
server = find_fog_server(server_name, resource_group)
|
190
223
|
network_interface = nil
|
191
224
|
if (server and server.network_interface_card_id)
|
192
225
|
network_interface_card_name = server.network_interface_card_id.split("/")[-1]
|
193
|
-
|
226
|
+
network_interface_resource_group = resource_group unless network_interface_resource_group
|
227
|
+
network_interface = connect_to_networks.network_interfaces(resource_group: network_interface_resource_group).get(network_interface_card_name)
|
194
228
|
else
|
195
229
|
logger.debug "Can not find network interface card for server #{server_name} in resource_group #{resource_group}"
|
196
230
|
raise "Can not find network interface card" if should_fail
|
@@ -240,21 +274,23 @@ module AvstCloud
|
|
240
274
|
logger.debug "Public IP deleted"
|
241
275
|
end
|
242
276
|
|
243
|
-
def destroy_ip_configuration_for_server(server_name, resource_group, should_fail=false)
|
277
|
+
def destroy_ip_configuration_for_server(server_name, resource_group, should_fail=false, network_interface_resource_group=nil, public_ip_resource_group=nil)
|
244
278
|
server = find_fog_server(server_name, resource_group)
|
245
279
|
if (server.network_interface_card_id)
|
246
280
|
network_interface_card_name = server.network_interface_card_id.split("/")[-1]
|
247
|
-
|
281
|
+
network_interface_resource_group = resource_group unless network_interface_resource_group
|
282
|
+
nic = connect_to_networks.network_interfaces(resource_group: network_interface_resource_group).get(network_interface_card_name)
|
248
283
|
if nic
|
249
284
|
if nic.public_ip_address_id
|
250
285
|
ip_configuration_name = nic.public_ip_address_id.split("/")[-1]
|
251
|
-
|
286
|
+
public_ip_resource_group = network_interface_resource_group unless public_ip_resource_group
|
287
|
+
destroy_ip_configuration(ip_configuration_name, public_ip_resource_group)
|
252
288
|
else
|
253
|
-
logger.debug "Can not find public ip for server #{server_name} in resource_group #{
|
289
|
+
logger.debug "Can not find public ip for server #{server_name} in resource_group #{network_interface_resource_group}"
|
254
290
|
raise "Can not find public ip" if should_fail
|
255
291
|
end
|
256
292
|
else
|
257
|
-
logger.debug "Can not find network interface card for server #{server_name} in resource_group #{
|
293
|
+
logger.debug "Can not find network interface card for server #{server_name} in resource_group #{network_interface_resource_group}"
|
258
294
|
raise "Can not find network interface card" if should_fail
|
259
295
|
end
|
260
296
|
else
|
@@ -286,22 +322,24 @@ module AvstCloud
|
|
286
322
|
logger.debug "Subnet deleted"
|
287
323
|
end
|
288
324
|
|
289
|
-
def destroy_subnet_for_server(server_name, resource_group, should_fail=false)
|
325
|
+
def destroy_subnet_for_server(server_name, resource_group, should_fail=false, network_interface_resource_group=nil, subnet_resource_group=nil)
|
290
326
|
server = find_fog_server(server_name, resource_group)
|
291
327
|
if (server.network_interface_card_id)
|
292
328
|
network_interface_card_name = server.network_interface_card_id.split("/")[-1]
|
293
|
-
|
329
|
+
network_interface_resource_group = resource_group unless network_interface_resource_group
|
330
|
+
nic = connect_to_networks.network_interfaces(resource_group: network_interface_resource_group).get(network_interface_card_name)
|
294
331
|
if nic
|
295
332
|
if nic.subnet_id
|
296
333
|
subnet_id_name = nic.subnet_id.split("/")[-1]
|
297
334
|
virtual_network_name = nic.subnet_id.split("virtualNetworks/")[-1].split("/")[0]
|
335
|
+
subnet_resource_group = network_interface_resource_group unless subnet_resource_group
|
298
336
|
destroy_subnet(subnet_id_name, resource_group, virtual_network_name)
|
299
337
|
else
|
300
|
-
logger.debug "Can not find subnet for server #{server_name} in resource_group #{
|
338
|
+
logger.debug "Can not find subnet for server #{server_name} in resource_group #{network_interface_resource_group}"
|
301
339
|
raise "Can not find subnet" if should_fail
|
302
340
|
end
|
303
341
|
else
|
304
|
-
logger.debug "Can not find network interface card for server #{server_name} in resource_group #{
|
342
|
+
logger.debug "Can not find network interface card for server #{server_name} in resource_group #{network_interface_resource_group}"
|
305
343
|
raise "Can not find network interface card" if should_fail
|
306
344
|
end
|
307
345
|
else
|
@@ -330,21 +368,23 @@ module AvstCloud
|
|
330
368
|
vnet
|
331
369
|
end
|
332
370
|
|
333
|
-
def destroy_virtual_network_for_server(server_name, resource_group, should_fail=false)
|
371
|
+
def destroy_virtual_network_for_server(server_name, resource_group, should_fail=false, network_interface_resource_group=nil, subnet_resource_group=nil)
|
334
372
|
server = find_fog_server(server_name, resource_group)
|
335
373
|
if (server.network_interface_card_id)
|
336
374
|
network_interface_card_name = server.network_interface_card_id.split("/")[-1]
|
337
|
-
|
375
|
+
network_interface_resource_group = resource_group unless network_interface_resource_group
|
376
|
+
nic = connect_to_networks.network_interfaces(resource_group: network_interface_resource_group).get(network_interface_card_name)
|
338
377
|
if nic
|
339
378
|
if nic.subnet_id
|
340
379
|
virtual_network_name = nic.subnet_id.split("virtualNetworks/")[-1].split("/")[0]
|
380
|
+
subnet_resource_group = virtual_network_resource_group unless subnet_resource_group
|
341
381
|
destroy_virtual_network(virtual_network_name, resource_group)
|
342
382
|
else
|
343
|
-
logger.debug "Can not find virtual network for server #{server_name} in resource_group #{
|
383
|
+
logger.debug "Can not find virtual network for server #{server_name} in resource_group #{virtual_network_resource_group}"
|
344
384
|
raise "Can not find subnet" if should_fail
|
345
385
|
end
|
346
386
|
else
|
347
|
-
logger.debug "Can not find network interface card for server #{server_name} in resource_group #{
|
387
|
+
logger.debug "Can not find network interface card for server #{server_name} in resource_group #{virtual_network_resource_group}"
|
348
388
|
raise "Can not find network interface card" if should_fail
|
349
389
|
end
|
350
390
|
else
|
@@ -381,14 +421,22 @@ module AvstCloud
|
|
381
421
|
if (server and server.storage_account_name)
|
382
422
|
storage_account_name = server.storage_account_name
|
383
423
|
end
|
424
|
+
# storage account name not provided as part of server, trying to get it from os_disk_vhd_uri
|
425
|
+
unless storage_account_name
|
426
|
+
if server.os_disk_vhd_uri != nil
|
427
|
+
# os_disk_vhd_uri="http://storage_account_name.blob.core.windows.net/vhds/servername_os_disk.vhd"
|
428
|
+
storage_account_name = server.os_disk_vhd_uri.split(".")[0].split("/")[-1]
|
429
|
+
end
|
430
|
+
end
|
384
431
|
storage_account_name
|
385
432
|
end
|
386
433
|
|
387
|
-
def destroy_storage_account_for_server(server_name, resource_group, should_fail=false)
|
434
|
+
def destroy_storage_account_for_server(server_name, resource_group, should_fail=false, storage_account_resource_group=nil)
|
388
435
|
server = find_fog_server(server_name, resource_group)
|
389
436
|
if (server.storage_account_name)
|
390
437
|
storage_account_name = server.storage_account_name
|
391
|
-
|
438
|
+
storage_account_resource_group = resource_group unless storage_account_resource_group
|
439
|
+
destroy_storage_account(storage_account_name, storage_account_resource_group)
|
392
440
|
else
|
393
441
|
logger.debug "Can not find storage account for server #{server_name} in resource_group #{resource_group}"
|
394
442
|
raise "Can not find storage account" if should_fail
|
metadata
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: avst-cloud
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.1.
|
4
|
+
version: 0.1.17
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Martin Brehovsky
|
@@ -10,7 +10,7 @@ authors:
|
|
10
10
|
autorequire:
|
11
11
|
bindir: bin
|
12
12
|
cert_chain: []
|
13
|
-
date: 2016-
|
13
|
+
date: 2016-07-04 00:00:00.000000000 Z
|
14
14
|
dependencies:
|
15
15
|
- !ruby/object:Gem::Dependency
|
16
16
|
name: bundler
|
@@ -72,16 +72,16 @@ dependencies:
|
|
72
72
|
name: fog-azure-rm
|
73
73
|
requirement: !ruby/object:Gem::Requirement
|
74
74
|
requirements:
|
75
|
-
- -
|
75
|
+
- - '='
|
76
76
|
- !ruby/object:Gem::Version
|
77
|
-
version:
|
77
|
+
version: 0.0.3
|
78
78
|
type: :runtime
|
79
79
|
prerelease: false
|
80
80
|
version_requirements: !ruby/object:Gem::Requirement
|
81
81
|
requirements:
|
82
|
-
- -
|
82
|
+
- - '='
|
83
83
|
- !ruby/object:Gem::Version
|
84
|
-
version:
|
84
|
+
version: 0.0.3
|
85
85
|
- !ruby/object:Gem::Dependency
|
86
86
|
name: azure
|
87
87
|
requirement: !ruby/object:Gem::Requirement
|