fog-azure-rm 0.0.6 → 0.0.8
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/CHANGELOG.md +13 -0
- data/lib/fog/azurerm/compute.rb +6 -0
- data/lib/fog/azurerm/docs/compute.md +67 -11
- data/lib/fog/azurerm/docs/network.md +59 -0
- data/lib/fog/azurerm/docs/storage.md +107 -35
- data/lib/fog/azurerm/models/compute/server.rb +15 -9
- data/lib/fog/azurerm/models/compute/virtual_machine_extension.rb +78 -0
- data/lib/fog/azurerm/models/compute/virtual_machine_extensions.rb +30 -0
- data/lib/fog/azurerm/models/network/express_route_circuit.rb +21 -21
- data/lib/fog/azurerm/models/network/express_route_circuit_peering.rb +21 -21
- data/lib/fog/azurerm/models/network/express_route_service_provider.rb +8 -8
- data/lib/fog/azurerm/models/network/network_security_rule.rb +27 -0
- data/lib/fog/azurerm/models/network/network_security_rules.rb +31 -0
- data/lib/fog/azurerm/models/network/subnet.rb +16 -12
- data/lib/fog/azurerm/models/network/virtual_network_gateway.rb +6 -6
- data/lib/fog/azurerm/models/storage/{containers.rb → directories.rb} +10 -10
- data/lib/fog/azurerm/models/storage/{container.rb → directory.rb} +13 -13
- data/lib/fog/azurerm/models/storage/file.rb +151 -0
- data/lib/fog/azurerm/models/storage/files.rb +31 -0
- data/lib/fog/azurerm/network.rb +6 -0
- data/lib/fog/azurerm/requests/compute/create_or_update_vm_extension.rb +63 -0
- data/lib/fog/azurerm/requests/compute/create_virtual_machine.rb +45 -8
- data/lib/fog/azurerm/requests/compute/delete_vm_extension.rb +28 -0
- data/lib/fog/azurerm/requests/compute/get_vm_extension.rb +46 -0
- data/lib/fog/azurerm/requests/network/create_or_update_express_route_circuit.rb +44 -31
- data/lib/fog/azurerm/requests/network/create_or_update_express_route_circuit_peering.rb +23 -13
- data/lib/fog/azurerm/requests/network/create_or_update_network_security_rule.rb +59 -0
- data/lib/fog/azurerm/requests/network/create_or_update_virtual_network_gateway.rb +23 -15
- data/lib/fog/azurerm/requests/network/delete_network_security_rule.rb +30 -0
- data/lib/fog/azurerm/requests/network/get_available_ipaddresses_count.rb +23 -0
- data/lib/fog/azurerm/requests/network/get_network_security_rule.rb +47 -0
- data/lib/fog/azurerm/requests/network/list_network_security_groups.rb +1 -1
- data/lib/fog/azurerm/requests/network/list_network_security_rules.rb +51 -0
- data/lib/fog/azurerm/requests/storage/acquire_blob_lease.rb +29 -0
- data/lib/fog/azurerm/requests/storage/acquire_container_lease.rb +29 -0
- data/lib/fog/azurerm/requests/storage/check_blob_exist.rb +25 -0
- data/lib/fog/azurerm/requests/storage/compare_blob.rb +73 -0
- data/lib/fog/azurerm/requests/storage/copy_blob.rb +30 -0
- data/lib/fog/azurerm/requests/storage/copy_blob_from_uri.rb +30 -0
- data/lib/fog/azurerm/requests/storage/delete_blob.rb +27 -0
- data/lib/fog/azurerm/requests/storage/download_blob_to_file.rb +56 -0
- data/lib/fog/azurerm/requests/storage/get_blob_metadata.rb +37 -9
- data/lib/fog/azurerm/requests/storage/get_blob_properties.rb +53 -0
- data/lib/fog/azurerm/requests/storage/get_container_metadata.rb +2 -2
- data/lib/fog/azurerm/requests/storage/list_blobs.rb +82 -0
- data/lib/fog/azurerm/requests/storage/list_containers.rb +1 -1
- data/lib/fog/azurerm/requests/storage/release_blob_lease.rb +27 -0
- data/lib/fog/azurerm/requests/storage/release_container_lease.rb +27 -0
- data/lib/fog/azurerm/requests/storage/set_blob_metadata.rb +4 -4
- data/lib/fog/azurerm/requests/storage/set_blob_properties.rb +26 -0
- data/lib/fog/azurerm/requests/storage/set_container_metadata.rb +3 -3
- data/lib/fog/azurerm/requests/storage/upload_block_blob_from_file.rb +60 -0
- data/lib/fog/azurerm/storage.rb +26 -8
- data/lib/fog/azurerm/utilities/general.rb +14 -1
- data/lib/fog/azurerm/version.rb +1 -1
- data/test/api_stub.rb +8 -4
- data/test/api_stub/models/compute/virtual_machine_extension.rb +31 -0
- data/test/api_stub/models/network/network_security_rule.rb +30 -0
- data/test/api_stub/models/storage/{container.rb → directory.rb} +1 -1
- data/test/api_stub/models/storage/file.rb +178 -0
- data/test/api_stub/requests/compute/virtual_machine.rb +119 -0
- data/test/api_stub/requests/compute/virtual_machine_extension.rb +46 -0
- data/test/api_stub/requests/network/network_security_rule.rb +72 -0
- data/test/api_stub/requests/storage/{container.rb → directory.rb} +2 -2
- data/test/api_stub/requests/storage/file.rb +164 -0
- data/test/integration/availability_set.rb +6 -0
- data/test/integration/blob.rb +205 -0
- data/test/integration/credentials/azure.yml +4 -4
- data/test/integration/deployment.rb +9 -0
- data/test/integration/external_load_balancer.rb +9 -0
- data/test/integration/internal_load_balancer.rb +8 -0
- data/test/integration/network_security_group.rb +9 -0
- data/test/integration/network_security_rule.rb +86 -0
- data/test/integration/server.rb +62 -9
- data/test/integration/server_custom_image.rb +118 -0
- data/test/integration/subnet.rb +12 -1
- data/test/integration/virtual_machine_extension.rb +148 -0
- data/test/integration/virtual_network.rb +9 -1
- data/test/integration/virtual_network_gateway.rb +7 -29
- data/test/integration/virtual_network_gateway_connection_to_express_route.rb +116 -0
- data/test/models/compute/test_virtual_machine_extension.rb +61 -0
- data/test/models/compute/test_virtual_machine_extensions.rb +36 -0
- data/test/models/network/test_express_route_circuit.rb +4 -10
- data/test/models/network/test_express_route_circuit_peering.rb +4 -10
- data/test/models/network/test_network_interface.rb +4 -8
- data/test/models/network/test_network_security_rule.rb +14 -0
- data/test/models/network/test_network_security_rules.rb +42 -0
- data/test/models/network/test_subnet.rb +5 -0
- data/test/models/storage/test_directories.rb +106 -0
- data/test/models/storage/test_directory.rb +125 -0
- data/test/models/storage/test_file.rb +258 -0
- data/test/models/storage/test_files.rb +67 -0
- data/test/models/storage/test_storage_account.rb +2 -4
- data/test/requests/compute/test_create_virtual_machine.rb +19 -5
- data/test/requests/compute/test_create_vm_extension.rb +35 -0
- data/test/requests/compute/test_get_vm_extension.rb +26 -0
- data/test/requests/compute/test_update_vm_extension.rb +35 -0
- data/test/requests/network/test_create_or_update_network_security_rule.rb +28 -0
- data/test/requests/network/test_delete_network_security_rule.rb +25 -0
- data/test/requests/network/test_get_available_ipaddresses_count.rb +18 -0
- data/test/requests/network/test_get_network_security_rule.rb +26 -0
- data/test/requests/network/test_list_network_security_groups.rb +2 -2
- data/test/requests/network/test_list_network_security_rules.rb +26 -0
- data/test/requests/storage/test_acquire_blob_lease.rb +17 -0
- data/test/requests/storage/test_acquire_container_lease.rb +17 -0
- data/test/requests/storage/test_check_blob_exist.rb +17 -0
- data/test/requests/storage/test_compare_blob.rb +17 -0
- data/test/requests/storage/test_copy_blob.rb +17 -0
- data/test/requests/storage/test_copy_blob_from_uri.rb +17 -0
- data/test/requests/storage/test_create_container.rb +2 -2
- data/test/requests/storage/test_delete_blob.rb +22 -0
- data/test/requests/storage/test_delete_container.rb +1 -1
- data/test/requests/storage/test_download_blob_to_file.rb +25 -0
- data/test/requests/storage/test_get_blob_metadata.rb +2 -2
- data/test/requests/storage/test_get_blob_properties.rb +23 -0
- data/test/requests/storage/test_get_container_access_control_list.rb +2 -2
- data/test/requests/storage/test_get_container_metadata.rb +2 -2
- data/test/requests/storage/test_get_container_properties.rb +2 -2
- data/test/requests/storage/test_list_blobs_in_container.rb +23 -0
- data/test/requests/storage/test_list_containers.rb +2 -2
- data/test/requests/storage/test_release_blob_lease.rb +16 -0
- data/test/requests/storage/test_release_container_lease.rb +16 -0
- data/test/requests/storage/test_set_blob_metadata.rb +1 -1
- data/test/requests/storage/test_set_blob_properties.rb +16 -0
- data/test/requests/storage/test_set_container_metadata.rb +1 -1
- data/test/requests/storage/test_upload_block_blob_from_file.rb +23 -0
- data/test/test_helper.rb +116 -3
- metadata +73 -15
- data/.DS_Store +0 -0
- data/lib/fog/azurerm/fog_azure_rm_exception.rb +0 -13
- data/lib/fog/azurerm/models/storage/blob.rb +0 -13
- data/lib/fog/azurerm/models/storage/blobs.rb +0 -22
- data/test/api_stub/models/storage/blob.rb +0 -17
- data/test/api_stub/requests/storage/blob.rb +0 -24
- data/test/models/storage/test_blobs.rb +0 -32
- data/test/models/storage/test_container.rb +0 -67
- data/test/models/storage/test_containers.rb +0 -56
checksums.yaml
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
---
|
|
2
2
|
SHA1:
|
|
3
|
-
metadata.gz:
|
|
4
|
-
data.tar.gz:
|
|
3
|
+
metadata.gz: 4b685851346e42d9a032133a02a6c3a12ccf5896
|
|
4
|
+
data.tar.gz: f018a73de0ea3dcec83d57c9f355b0b76571fded
|
|
5
5
|
SHA512:
|
|
6
|
-
metadata.gz:
|
|
7
|
-
data.tar.gz:
|
|
6
|
+
metadata.gz: 42f964d72836337a5057cacf99ce98c144e62e99461ab1fe00e92c9ac83d291b7e8c6a465babc116481894d221c8ed65f70396ecb18b69c688fb5e96e7feab89
|
|
7
|
+
data.tar.gz: afcd011ce4a78237e5515eba3ff43559bfa77c9cf5b539367ad54fb33d2d893b533768f40d6b7ef89668b03a93cd87118dcec079518aad7cfc59ca22410c5f7a
|
data/CHANGELOG.md
CHANGED
|
@@ -1,3 +1,16 @@
|
|
|
1
|
+
## 0.0.7
|
|
2
|
+
|
|
3
|
+
**Added:**
|
|
4
|
+
- Compute Service - Added support to create virtual machine from a custom image.
|
|
5
|
+
- Network Service - Added Network Security Rule.
|
|
6
|
+
- Network Service - Added Get Available IP Addresses count in Subnet
|
|
7
|
+
- Compute Service - Virtual Machine Extension
|
|
8
|
+
- Added Blob count, blob exist, blob compare,blob copy, lease blob, release lease blob, delete blob, set blob properties,
|
|
9
|
+
get blob properties, set blob metadata, get blob metadata, get blob, list blob functionality for storage
|
|
10
|
+
- Added get container properties, get container metadata, set container metadata, get container, list container,
|
|
11
|
+
delete container, Get the access control list of the container
|
|
12
|
+
|
|
13
|
+
|
|
1
14
|
## 0.0.6
|
|
2
15
|
|
|
3
16
|
**Added:**
|
data/lib/fog/azurerm/compute.rb
CHANGED
|
@@ -26,12 +26,17 @@ module Fog
|
|
|
26
26
|
request :check_vm_status
|
|
27
27
|
request :attach_data_disk_to_vm
|
|
28
28
|
request :detach_data_disk_from_vm
|
|
29
|
+
request :create_or_update_vm_extension
|
|
30
|
+
request :delete_vm_extension
|
|
31
|
+
request :get_vm_extension
|
|
29
32
|
|
|
30
33
|
model_path 'fog/azurerm/models/compute'
|
|
31
34
|
model :availability_set
|
|
32
35
|
collection :availability_sets
|
|
33
36
|
model :server
|
|
34
37
|
collection :servers
|
|
38
|
+
model :virtual_machine_extension
|
|
39
|
+
collection :virtual_machine_extensions
|
|
35
40
|
|
|
36
41
|
# This class provides the mock implementation for unit tests.
|
|
37
42
|
class Mock
|
|
@@ -61,6 +66,7 @@ module Fog
|
|
|
61
66
|
@compute_mgmt_client.subscription_id = options[:subscription_id]
|
|
62
67
|
@storage_mgmt_client = ::Azure::ARM::Storage::StorageManagementClient.new(credentials)
|
|
63
68
|
@storage_mgmt_client.subscription_id = options[:subscription_id]
|
|
69
|
+
@storage_service = Fog::Storage::AzureRM.new(tenant_id: options[:tenant_id], client_id: options[:client_id], client_secret: options[:client_secret], subscription_id: options[:subscription_id])
|
|
64
70
|
end
|
|
65
71
|
end
|
|
66
72
|
end
|
|
@@ -39,14 +39,16 @@ Create a new linux server
|
|
|
39
39
|
password: '<Password for VM>',
|
|
40
40
|
disable_password_authentication: false,
|
|
41
41
|
network_interface_card_id: '/subscriptions/{Subscription-Id}/resourceGroups/{Resource-Group-Name}/providers/Microsoft.Network/networkInterfaces/{Network-Interface-Id}',
|
|
42
|
-
publisher: 'Canonical',
|
|
43
|
-
offer: 'UbuntuServer',
|
|
44
|
-
sku: '14.04.2-LTS',
|
|
45
|
-
version: 'latest',
|
|
42
|
+
publisher: 'Canonical', # Not required if custom image is being used
|
|
43
|
+
offer: 'UbuntuServer', # Not required if custom image is being used
|
|
44
|
+
sku: '14.04.2-LTS', # Not required if custom image is being used
|
|
45
|
+
version: 'latest', # Not required if custom image is being used
|
|
46
46
|
platform: 'Linux',
|
|
47
|
-
|
|
47
|
+
vhd_path: '<Path of VHD>', # Optional, if you want to create the VM from a custom image.
|
|
48
|
+
custom_data: 'echo customData', # Optional, if you want to add custom data in this VM.
|
|
48
49
|
)
|
|
49
50
|
```
|
|
51
|
+
|
|
50
52
|
Create a new windows server
|
|
51
53
|
|
|
52
54
|
```ruby
|
|
@@ -60,14 +62,16 @@ Create a new windows server
|
|
|
60
62
|
password: '<Password for VM>',
|
|
61
63
|
disable_password_authentication: false,
|
|
62
64
|
network_interface_card_id: '/subscriptions/{Subscription-Id}/resourceGroups/{Resource-Group-Name}/providers/Microsoft.Network/networkInterfaces/{Network-Interface-Id}',
|
|
63
|
-
publisher: 'MicrosoftWindowsServerEssentials',
|
|
64
|
-
offer: 'WindowsServerEssentials',
|
|
65
|
-
sku: 'WindowsServerEssentials',
|
|
66
|
-
version: 'latest',
|
|
65
|
+
publisher: 'MicrosoftWindowsServerEssentials', # Not required if custom image is being used
|
|
66
|
+
offer: 'WindowsServerEssentials', # Not required if custom image is being used
|
|
67
|
+
sku: 'WindowsServerEssentials', # Not required if custom image is being used
|
|
68
|
+
version: 'latest', # Not required if custom image is being used
|
|
67
69
|
platform: 'Windows',
|
|
68
|
-
|
|
70
|
+
vhd_path: '<Path of VHD>', # Optional, if you want to create the VM from a custom image.
|
|
71
|
+
custom_data: 'echo customData' # Optional, if you want to add custom data in this VM.
|
|
69
72
|
)
|
|
70
73
|
```
|
|
74
|
+
|
|
71
75
|
For more information about custom_data; see link: https://msdn.microsoft.com/en-us/library/azure/mt163591.aspx
|
|
72
76
|
|
|
73
77
|
## List Servers
|
|
@@ -98,7 +102,7 @@ Get a single record of Server
|
|
|
98
102
|
Get the server object and attach a Data Disk to it.
|
|
99
103
|
|
|
100
104
|
```ruby
|
|
101
|
-
server.attach_data_disk('<Disk Name>', <Size in GB>, '<Storage Account Name>)
|
|
105
|
+
server.attach_data_disk('<Disk Name>', <Size in GB>, '<Storage Account Name>')
|
|
102
106
|
```
|
|
103
107
|
|
|
104
108
|
## Detach a Data Disk from Server
|
|
@@ -171,5 +175,57 @@ Get an availability set object from the get method and then destroy that availab
|
|
|
171
175
|
availability_set.destroy
|
|
172
176
|
```
|
|
173
177
|
|
|
178
|
+
## Create Virtual Machine Extension
|
|
179
|
+
|
|
180
|
+
Installs an extension to the specified virtual machine.
|
|
181
|
+
|
|
182
|
+
```ruby
|
|
183
|
+
azure_compute_service.virtual_machine_extensions.create(
|
|
184
|
+
name: <Extension Name>,
|
|
185
|
+
resource_group: <Resource Group>,
|
|
186
|
+
location: <Location>,
|
|
187
|
+
vm_name: <Virtual Machine Name>, # Extension will be installed on this VM
|
|
188
|
+
publisher: <Extension publisher>,
|
|
189
|
+
type: <Extension type>,
|
|
190
|
+
type_handler_version: <Extension version>,
|
|
191
|
+
auto_upgrade_minor_version: <true|false>, # Optional
|
|
192
|
+
settings: {JSON object}, # Format: {"key": "value", "key": {"key": "value"}}
|
|
193
|
+
protected_settings: {JSON object}
|
|
194
|
+
)
|
|
195
|
+
```
|
|
196
|
+
|
|
197
|
+
## Get Extension from Virtual Machine
|
|
198
|
+
|
|
199
|
+
Retrieves the given extension from the virtual machine
|
|
200
|
+
|
|
201
|
+
```ruby
|
|
202
|
+
vm_extension = azure_compute_service.virtual_machine_extensions.get(
|
|
203
|
+
'<Resource Group Name>', '<Virtual Machine Name>', '<Extension Name>'
|
|
204
|
+
)
|
|
205
|
+
```
|
|
206
|
+
|
|
207
|
+
## Update Extension
|
|
208
|
+
|
|
209
|
+
Update the given extension. The attributes that can be modified are
|
|
210
|
+
- auto_upgrade_minor_version
|
|
211
|
+
- settings
|
|
212
|
+
- protected_settings
|
|
213
|
+
|
|
214
|
+
```ruby
|
|
215
|
+
vm_extension.update(
|
|
216
|
+
auto_upgrade_minor_version: <true|false>,
|
|
217
|
+
settings: {JSON object},
|
|
218
|
+
protected_settings: {JSON object}
|
|
219
|
+
)
|
|
220
|
+
```
|
|
221
|
+
|
|
222
|
+
## Destroy Extension
|
|
223
|
+
|
|
224
|
+
Destroy the given extension from the virtual machine
|
|
225
|
+
|
|
226
|
+
```ruby
|
|
227
|
+
vm_extension.destroy
|
|
228
|
+
```
|
|
229
|
+
|
|
174
230
|
## Support and Feedback
|
|
175
231
|
Your feedback is appreciated! If you have specific issues with the fog ARM, you should file an issue via Github.
|
|
@@ -201,6 +201,14 @@ Detach Route Table from Subnet
|
|
|
201
201
|
puts "#{subnet.route_table_id}"
|
|
202
202
|
```
|
|
203
203
|
|
|
204
|
+
## List Number of Available IP Addresses in Subnet
|
|
205
|
+
|
|
206
|
+
The parameter is a boolean which checks if the Virtual Network the Subnet belongs to is attached to an Express Route Circuit or not
|
|
207
|
+
|
|
208
|
+
```ruby
|
|
209
|
+
puts "#{subnet.get_available_ipaddresses_count(false)}"
|
|
210
|
+
```
|
|
211
|
+
|
|
204
212
|
## Destroy a single Subnet
|
|
205
213
|
|
|
206
214
|
Get a subnet object from the get method and then destroy that subnet.
|
|
@@ -454,6 +462,57 @@ Get a network security group object from the get method and then destroy that ne
|
|
|
454
462
|
nsg.destroy
|
|
455
463
|
```
|
|
456
464
|
|
|
465
|
+
## Create Network Security Rule
|
|
466
|
+
|
|
467
|
+
Network security rule requires a resource group and network security group to create.
|
|
468
|
+
|
|
469
|
+
```ruby
|
|
470
|
+
azure_network_service.network_security_rules.create(
|
|
471
|
+
name: '<Security Rule name>',
|
|
472
|
+
resource_group: '<Resource Group name>',
|
|
473
|
+
protocol: 'tcp',
|
|
474
|
+
network_security_group_name: '<Network Security Group name>',
|
|
475
|
+
source_port_range: '22',
|
|
476
|
+
destination_port_range: '22',
|
|
477
|
+
source_address_prefix: '0.0.0.0/0',
|
|
478
|
+
destination_address_prefix: '0.0.0.0/0',
|
|
479
|
+
access: 'Allow',
|
|
480
|
+
priority: '100',
|
|
481
|
+
direction: 'Inbound'
|
|
482
|
+
)
|
|
483
|
+
```
|
|
484
|
+
|
|
485
|
+
## List Network Security Rules
|
|
486
|
+
|
|
487
|
+
List all the network security rules in a resource group and network security group
|
|
488
|
+
|
|
489
|
+
```ruby
|
|
490
|
+
network_security_rules = azure_network_service.network_security_rules(resource_group: '<Resource Group name>',
|
|
491
|
+
network_security_group_name: '<Network Security Group name>')
|
|
492
|
+
network_security_rules.each do |network_security_rule|
|
|
493
|
+
puts network_security_rule.name
|
|
494
|
+
end
|
|
495
|
+
```
|
|
496
|
+
|
|
497
|
+
## Retrieve a single Network Security Rule
|
|
498
|
+
|
|
499
|
+
Get a single record of Network Security Rule
|
|
500
|
+
|
|
501
|
+
```ruby
|
|
502
|
+
network_security_rule = azure_network_service
|
|
503
|
+
.network_security_rules
|
|
504
|
+
.get(<Resource Group Name>','<Network Security Group name>', '<Security Rule name>')
|
|
505
|
+
puts "#{network_security_rule.name}"
|
|
506
|
+
```
|
|
507
|
+
|
|
508
|
+
## Destroy a Network Security Rule
|
|
509
|
+
|
|
510
|
+
Get a network security rule object from the get method and then destroy that network security rule.
|
|
511
|
+
|
|
512
|
+
```ruby
|
|
513
|
+
network_security_rule.destroy
|
|
514
|
+
```
|
|
515
|
+
|
|
457
516
|
## Create External Load Balancer
|
|
458
517
|
|
|
459
518
|
Create a new load balancer.
|
|
@@ -55,7 +55,7 @@ azure_storage_service = Fog::Storage.new(
|
|
|
55
55
|
Check Storage Account Name Availability.This operation checks that account name is valid and is not already in use.
|
|
56
56
|
|
|
57
57
|
```ruby
|
|
58
|
-
|
|
58
|
+
azure_storage_service.storage_accounts.check_name_availability('<Storage Account name>')
|
|
59
59
|
```
|
|
60
60
|
|
|
61
61
|
## Create Storage Account
|
|
@@ -153,77 +153,149 @@ puts "#{container.name}"
|
|
|
153
153
|
List all the storage containers in the current storage accounts.
|
|
154
154
|
|
|
155
155
|
```ruby
|
|
156
|
-
azure_storage_service.
|
|
157
|
-
puts "#{
|
|
156
|
+
azure_storage_service.directories.each do |directory|
|
|
157
|
+
puts "#{directory.name}"
|
|
158
158
|
end
|
|
159
159
|
```
|
|
160
160
|
|
|
161
|
-
## Get storage container
|
|
161
|
+
## Get the access control list of the storage container
|
|
162
|
+
|
|
163
|
+
Get the permissions for the specified container. The permissions indicate whether container data may be accessed publicly.
|
|
164
|
+
|
|
165
|
+
```ruby
|
|
166
|
+
directory = azure_storage_service.directories.get('<container name>')
|
|
167
|
+
access_control_list = directory.get_access_control_list('<container name>')
|
|
168
|
+
puts "#{access_control_list.inspect}"
|
|
169
|
+
```
|
|
170
|
+
|
|
171
|
+
## Delete the storage container
|
|
172
|
+
|
|
173
|
+
Mark the specified container for deletion. The container and any blobs contained within it are later deleted during garbage collection.
|
|
174
|
+
|
|
175
|
+
```ruby
|
|
176
|
+
directory = azure_storage_service.directories.get('<container name>')
|
|
177
|
+
result = directory.destroy
|
|
178
|
+
puts "#{result}"
|
|
179
|
+
```
|
|
180
|
+
|
|
181
|
+
## Upload a local file as a blob
|
|
182
|
+
```ruby
|
|
183
|
+
new_cloud_file = azure_storage_service.files.get('<Container name>', '<Blob name>').create(file_path: '<file path>')
|
|
184
|
+
puts "#{new_cloud_file.inspect}"
|
|
185
|
+
```
|
|
186
|
+
|
|
187
|
+
## Copy Blob from one container to another
|
|
188
|
+
```ruby
|
|
189
|
+
puts storage_data.copy_blob('<destination_container_name>', '<destination_blob_name>', '<source_container_name>', '<source_blob_name>')
|
|
190
|
+
```
|
|
191
|
+
|
|
192
|
+
## Download a blob to a local file
|
|
193
|
+
```ruby
|
|
194
|
+
blob = azure_storage_service.files.get('<Container name>', '<Blob name>').save_to_file('<file path>')
|
|
195
|
+
puts "#{blob.inspect}"
|
|
196
|
+
puts "File Size: #{::File.size <file_path>}"
|
|
197
|
+
```
|
|
198
|
+
|
|
199
|
+
## Delete the storage blob
|
|
200
|
+
|
|
201
|
+
Mark the specified blob for deletion. The blob is later deleted during garbage collection.
|
|
202
|
+
|
|
203
|
+
```ruby
|
|
204
|
+
cloud_file = azure_storage_service.files.get('<container name>', '<blob name>')
|
|
205
|
+
result = cloud_file.destroy
|
|
206
|
+
puts "#{result}"
|
|
207
|
+
```
|
|
208
|
+
|
|
209
|
+
Note that in order to delete a blob, you must delete all of its snapshots.
|
|
210
|
+
|
|
211
|
+
```ruby
|
|
212
|
+
cloud_file = azure_storage_service.files.get('<container name>', '<blob name>')
|
|
213
|
+
result = cloud_file.destroy(delete_snapshots: 'only')
|
|
214
|
+
puts "#{result}"
|
|
215
|
+
|
|
216
|
+
result = cloud_file.destroy
|
|
217
|
+
puts "#{result}"
|
|
218
|
+
```
|
|
219
|
+
|
|
220
|
+
You can delete both at the same time by specifying the option.
|
|
221
|
+
|
|
222
|
+
```ruby
|
|
223
|
+
cloud_file = azure_storage_service.files.get('<container name>', '<blob name>')
|
|
224
|
+
result = cloud_file.destroy(delete_snapshots: 'inlcude')
|
|
225
|
+
puts "#{result}"
|
|
226
|
+
```
|
|
227
|
+
|
|
228
|
+
## Properties
|
|
229
|
+
|
|
230
|
+
### Get storage container properties
|
|
162
231
|
|
|
163
232
|
Get the storage container properties. The properties will not fetch the access control list. Call `get_container_access_control_list` to fetch it.
|
|
164
233
|
|
|
165
234
|
```ruby
|
|
166
|
-
|
|
167
|
-
properties =
|
|
235
|
+
directory = azure_storage_service.directories.get('<container name>')
|
|
236
|
+
properties = directory.get_properties
|
|
168
237
|
puts "#{properties.inspect}"
|
|
169
238
|
```
|
|
170
239
|
|
|
171
|
-
|
|
240
|
+
### Get storage blob properties
|
|
172
241
|
|
|
173
|
-
Get the
|
|
242
|
+
Get the storage blob properties.
|
|
174
243
|
|
|
175
244
|
```ruby
|
|
176
|
-
|
|
177
|
-
|
|
178
|
-
puts "#{
|
|
245
|
+
cloud_file = azure_storage_service.files.get('<container name>', '<blob name>')
|
|
246
|
+
properties = cloud_file.get_properties
|
|
247
|
+
puts "#{properties.inspect}"
|
|
179
248
|
```
|
|
180
249
|
|
|
181
|
-
|
|
250
|
+
### Set storage blob properties
|
|
182
251
|
|
|
183
|
-
|
|
252
|
+
Set the storage blob properties. The properties are passed in name/value pairs.
|
|
184
253
|
|
|
185
254
|
```ruby
|
|
186
|
-
|
|
187
|
-
|
|
188
|
-
|
|
255
|
+
cloud_file = azure_storage_service.files.get('<container name>', '<blob name>')
|
|
256
|
+
properties = {
|
|
257
|
+
"content_language" => "English",
|
|
258
|
+
"content_disposition" => "attachment"
|
|
259
|
+
}
|
|
260
|
+
cloud_file.set_properties(properties)
|
|
189
261
|
```
|
|
190
262
|
|
|
191
|
-
|
|
263
|
+
## Metadata
|
|
192
264
|
|
|
193
265
|
Metadata allows us to provide descriptive information about specific containers or blobs. This is simply providing name/value pairs of data we want to set on the container or blob.
|
|
194
266
|
|
|
195
|
-
|
|
267
|
+
### Get Blob Metadata
|
|
196
268
|
|
|
197
269
|
```ruby
|
|
198
|
-
|
|
270
|
+
azure_storage_service.files.get('<Container name>', '<Blob name>').get_metadata
|
|
199
271
|
```
|
|
200
272
|
|
|
201
|
-
|
|
273
|
+
### Set Blob Metadata
|
|
202
274
|
|
|
203
275
|
```ruby
|
|
204
|
-
|
|
205
|
-
|
|
206
|
-
|
|
207
|
-
|
|
208
|
-
|
|
276
|
+
metadata = {
|
|
277
|
+
"Category" => "Images",
|
|
278
|
+
"Resolution" => "High"
|
|
279
|
+
}
|
|
280
|
+
azure_storage_service.files.get('<Container name>', '<Blob name>').set_metadata(metadata)
|
|
209
281
|
```
|
|
210
282
|
|
|
211
|
-
|
|
283
|
+
### Get Container Metadata
|
|
212
284
|
|
|
213
285
|
```ruby
|
|
214
|
-
|
|
286
|
+
azure_storage_service.directories.get_metadata('<Container name>')
|
|
215
287
|
```
|
|
216
288
|
|
|
217
|
-
|
|
289
|
+
### Set Container Metadata
|
|
218
290
|
|
|
219
291
|
```ruby
|
|
220
|
-
|
|
221
|
-
|
|
222
|
-
|
|
223
|
-
|
|
224
|
-
|
|
225
|
-
|
|
226
|
-
|
|
292
|
+
metadata = {
|
|
293
|
+
"CreatedBy" => "User",
|
|
294
|
+
"SourceMachine" => "Mymachine",
|
|
295
|
+
"category" => "guidance",
|
|
296
|
+
"docType" => "textDocuments"
|
|
297
|
+
}
|
|
298
|
+
azure_storage_service.directories.set_metadata('<Container name>', metadata)
|
|
227
299
|
```
|
|
228
300
|
|
|
229
301
|
## Support and Feedback
|
|
@@ -29,6 +29,7 @@ module Fog
|
|
|
29
29
|
attribute :network_interface_card_id
|
|
30
30
|
attribute :availability_set_id
|
|
31
31
|
attribute :custom_data
|
|
32
|
+
attribute :vhd_path
|
|
32
33
|
|
|
33
34
|
def self.parse(vm)
|
|
34
35
|
hash = {}
|
|
@@ -39,10 +40,12 @@ module Fog
|
|
|
39
40
|
hash['vm_size'] = vm.hardware_profile.vm_size
|
|
40
41
|
hash['os_disk_name'] = vm.storage_profile.os_disk.name
|
|
41
42
|
hash['os_disk_vhd_uri'] = vm.storage_profile.os_disk.vhd.uri
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
|
|
43
|
+
unless vm.storage_profile.image_reference.nil?
|
|
44
|
+
hash['publisher'] = vm.storage_profile.image_reference.publisher
|
|
45
|
+
hash['offer'] = vm.storage_profile.image_reference.offer
|
|
46
|
+
hash['sku'] = vm.storage_profile.image_reference.sku
|
|
47
|
+
hash['version'] = vm.storage_profile.image_reference.version
|
|
48
|
+
end
|
|
46
49
|
hash['username'] = vm.os_profile.admin_username
|
|
47
50
|
hash['custom_data'] = vm.os_profile.custom_data
|
|
48
51
|
hash['data_disks'] = []
|
|
@@ -60,17 +63,19 @@ module Fog
|
|
|
60
63
|
end
|
|
61
64
|
hash['network_interface_card_id'] = vm.network_profile.network_interfaces[0].id
|
|
62
65
|
hash['availability_set_id'] = vm.availability_set.id unless vm.availability_set.nil?
|
|
66
|
+
|
|
63
67
|
hash
|
|
64
68
|
end
|
|
65
69
|
|
|
66
70
|
def save
|
|
67
71
|
requires :name, :location, :resource_group, :vm_size, :storage_account_name,
|
|
68
|
-
:username, :password, :network_interface_card_id
|
|
72
|
+
:username, :password, :network_interface_card_id
|
|
69
73
|
requires :disable_password_authentication if platform.casecmp('linux').zero?
|
|
74
|
+
requires :publisher, :offer, :sku, :version if vhd_path.nil?
|
|
70
75
|
ssh_key_path = "/home/#{username}/.ssh/authorized_keys" unless ssh_key_data.nil?
|
|
71
76
|
virtual_machine_params = get_virtual_machine_params(ssh_key_path)
|
|
72
77
|
vm = service.create_virtual_machine(virtual_machine_params)
|
|
73
|
-
merge_attributes(
|
|
78
|
+
merge_attributes(Server.parse(vm))
|
|
74
79
|
end
|
|
75
80
|
|
|
76
81
|
def destroy
|
|
@@ -111,12 +116,12 @@ module Fog
|
|
|
111
116
|
|
|
112
117
|
def attach_data_disk(disk_name, disk_size, storage_account_name)
|
|
113
118
|
vm = service.attach_data_disk_to_vm(resource_group, name, disk_name, disk_size, storage_account_name)
|
|
114
|
-
merge_attributes(
|
|
119
|
+
merge_attributes(Server.parse(vm))
|
|
115
120
|
end
|
|
116
121
|
|
|
117
122
|
def detach_data_disk(disk_name)
|
|
118
123
|
vm = service.detach_data_disk_from_vm(resource_group, name, disk_name)
|
|
119
|
-
merge_attributes(
|
|
124
|
+
merge_attributes(Server.parse(vm))
|
|
120
125
|
end
|
|
121
126
|
|
|
122
127
|
private
|
|
@@ -142,7 +147,8 @@ module Fog
|
|
|
142
147
|
platform: platform,
|
|
143
148
|
provision_vm_agent: provision_vm_agent,
|
|
144
149
|
enable_automatic_updates: enable_automatic_updates,
|
|
145
|
-
custom_data: custom_data
|
|
150
|
+
custom_data: custom_data,
|
|
151
|
+
vhd_path: vhd_path
|
|
146
152
|
}
|
|
147
153
|
end
|
|
148
154
|
end
|