fog-azure-rm-temp 0.0.3 → 0.0.4
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/CHANGELOG.md +0 -5
- data/fog-azure-rm.gemspec +1 -1
- data/lib/fog/azurerm/compute.rb +2 -0
- data/lib/fog/azurerm/docs/storage.md +66 -0
- data/lib/fog/azurerm/models/compute/creation_data.rb +4 -2
- data/lib/fog/azurerm/models/compute/data_disk.rb +26 -0
- data/lib/fog/azurerm/models/compute/managed_disk.rb +5 -4
- data/lib/fog/azurerm/models/compute/server.rb +24 -3
- data/lib/fog/azurerm/models/storage/recovery_vault.rb +50 -0
- data/lib/fog/azurerm/models/storage/recovery_vaults.rb +27 -0
- data/lib/fog/azurerm/requests/compute/attach_data_disk_to_vm.rb +49 -13
- data/lib/fog/azurerm/requests/compute/detach_data_disk_from_vm.rb +1 -2
- data/lib/fog/azurerm/requests/storage/create_or_update_recovery_vault.rb +54 -0
- data/lib/fog/azurerm/requests/storage/delete_recovery_vault.rb +35 -0
- data/lib/fog/azurerm/requests/storage/disable_backup_protection.rb +60 -0
- data/lib/fog/azurerm/requests/storage/enable_backup_protection.rb +61 -0
- data/lib/fog/azurerm/requests/storage/get_all_backup_jobs.rb +56 -0
- data/lib/fog/azurerm/requests/storage/get_backup_container.rb +53 -0
- data/lib/fog/azurerm/requests/storage/get_backup_item.rb +58 -0
- data/lib/fog/azurerm/requests/storage/get_backup_job_for_vm.rb +53 -0
- data/lib/fog/azurerm/requests/storage/get_backup_protection_policy.rb +64 -0
- data/lib/fog/azurerm/requests/storage/get_recovery_vault.rb +49 -0
- data/lib/fog/azurerm/requests/storage/list_recovery_vaults.rb +48 -0
- data/lib/fog/azurerm/requests/storage/set_recovery_vault_context.rb +36 -0
- data/lib/fog/azurerm/requests/storage/start_backup.rb +54 -0
- data/lib/fog/azurerm/storage.rb +18 -1
- data/lib/fog/azurerm/version.rb +1 -1
- data/test/api_stub.rb +2 -0
- data/test/api_stub/models/compute/server.rb +62 -0
- data/test/api_stub/models/storage/recovery_vault.rb +23 -0
- data/test/api_stub/requests/compute/virtual_machine.rb +77 -0
- data/test/api_stub/requests/storage/recovery_vault.rb +189 -0
- data/test/models/{storage → compute}/test_data_disk.rb +2 -2
- data/test/models/compute/test_server.rb +27 -1
- data/test/models/storage/test_recovery_vault.rb +61 -0
- data/test/models/storage/test_recovery_vaults.rb +47 -0
- data/test/requests/compute/test_attach_data_disk_to_vm.rb +21 -6
- data/test/requests/storage/test_create_recovery_vault.rb +35 -0
- data/test/requests/storage/test_delete_recovery_vault.rb +34 -0
- data/test/requests/storage/test_disable_backup_protection.rb +52 -0
- data/test/requests/storage/test_enable_backup_protection.rb +66 -0
- data/test/requests/storage/test_get_all_backup_jobs.rb +35 -0
- data/test/requests/storage/test_get_backup_container.rb +35 -0
- data/test/requests/storage/test_get_backup_item.rb +35 -0
- data/test/requests/storage/test_get_backup_job_for_vm.rb +26 -0
- data/test/requests/storage/test_get_backup_protection_policy.rb +35 -0
- data/test/requests/storage/test_get_recovery_vault.rb +35 -0
- data/test/requests/storage/test_list_recovery_vault.rb +35 -0
- data/test/requests/storage/test_set_recovery_vault_context.rb +34 -0
- data/test/requests/storage/test_start_backup.rb +55 -0
- data/test/test_helper.rb +14 -0
- metadata +38 -13
- data/.arclint +0 -8
- data/lib/fog/azurerm/models/storage/data_disk.rb +0 -27
@@ -0,0 +1,49 @@
|
|
1
|
+
module Fog
|
2
|
+
module Storage
|
3
|
+
class AzureRM
|
4
|
+
# Real class for Recovery Vault request
|
5
|
+
class Real
|
6
|
+
def get_recovery_vault(resource_group, name)
|
7
|
+
msg = "Retrieving Recovery Vault #{name} from Resource Group #{resource_group}"
|
8
|
+
Fog::Logger.debug msg
|
9
|
+
resource_url = "#{AZURE_RESOURCE}/subscriptions/#{@subscription_id}/resourceGroups/#{resource_group}/providers/Microsoft.RecoveryServices/vaults?api-version=#{REST_CLIENT_API_VERSION[1]}"
|
10
|
+
begin
|
11
|
+
token = Fog::Credentials::AzureRM.get_token(@tenant_id, @client_id, @client_secret)
|
12
|
+
recovery_vault_response = RestClient.get(
|
13
|
+
resource_url,
|
14
|
+
accept: 'application/json',
|
15
|
+
content_type: 'application/json',
|
16
|
+
authorization: token
|
17
|
+
)
|
18
|
+
rescue RestClient::Exception => e
|
19
|
+
raise_azure_exception(e, msg)
|
20
|
+
end
|
21
|
+
Fog::Logger.debug "Recovery Vault #{name} from Resource Group #{resource_group} retrieved successfully"
|
22
|
+
recovery_vault = Fog::JSON.decode(recovery_vault_response)['value']
|
23
|
+
recovery_vault.select { |vault| vault['name'].eql? name }[0]
|
24
|
+
end
|
25
|
+
end
|
26
|
+
|
27
|
+
# Mock class for Recovery Vault request
|
28
|
+
class Mock
|
29
|
+
def get_recovery_vault(*)
|
30
|
+
body = '{
|
31
|
+
"value": [{
|
32
|
+
"location": "westus",
|
33
|
+
"name": "fog-test-vault",
|
34
|
+
"properties": {
|
35
|
+
"provisioningState": "Succeeded"
|
36
|
+
},
|
37
|
+
"id": "/subscriptions/########-####-####-####-############/resourceGroups/fog-test-rg/providers/Microsoft.RecoveryServices/vaults/fog-test-vault",
|
38
|
+
"type": "Microsoft.RecoveryServices/vaults",
|
39
|
+
"sku": {
|
40
|
+
"name": "standard"
|
41
|
+
}
|
42
|
+
}]
|
43
|
+
}'
|
44
|
+
Fog::JSON.decode(body)['value'][0]
|
45
|
+
end
|
46
|
+
end
|
47
|
+
end
|
48
|
+
end
|
49
|
+
end
|
@@ -0,0 +1,48 @@
|
|
1
|
+
module Fog
|
2
|
+
module Storage
|
3
|
+
class AzureRM
|
4
|
+
# Real class for Recovery Vault request
|
5
|
+
class Real
|
6
|
+
def list_recovery_vaults(resource_group)
|
7
|
+
msg = "Listing Recovery Vaults in Resource Group #{resource_group}"
|
8
|
+
Fog::Logger.debug msg
|
9
|
+
resource_url = "#{AZURE_RESOURCE}/subscriptions/#{@subscription_id}/resourceGroups/#{resource_group}/providers/Microsoft.RecoveryServices/vaults?api-version=#{REST_CLIENT_API_VERSION[1]}"
|
10
|
+
begin
|
11
|
+
token = Fog::Credentials::AzureRM.get_token(@tenant_id, @client_id, @client_secret)
|
12
|
+
recovery_vaults_response = RestClient.get(
|
13
|
+
resource_url,
|
14
|
+
accept: 'application/json',
|
15
|
+
content_type: 'application/json',
|
16
|
+
authorization: token
|
17
|
+
)
|
18
|
+
rescue RestClient::Exception => e
|
19
|
+
raise_azure_exception(e, msg)
|
20
|
+
end
|
21
|
+
Fog::Logger.debug "Recovery Vaults in Resource Group #{resource_group} listed successfully"
|
22
|
+
Fog::JSON.decode(recovery_vaults_response)['value']
|
23
|
+
end
|
24
|
+
end
|
25
|
+
|
26
|
+
# Mock class for Recovery Vault Request
|
27
|
+
class Mock
|
28
|
+
def list_recovery_vaults(*)
|
29
|
+
body = '{
|
30
|
+
"value": [{
|
31
|
+
"location": "westus",
|
32
|
+
"name": "fog-test-vault",
|
33
|
+
"properties": {
|
34
|
+
"provisioningState": "Succeeded"
|
35
|
+
},
|
36
|
+
"id": "/subscriptions/########-####-####-####-############/resourceGroups/fog-test-rg/providers/Microsoft.RecoveryServices/vaults/fog-test-vault",
|
37
|
+
"type": "Microsoft.RecoveryServices/vaults",
|
38
|
+
"sku": {
|
39
|
+
"name": "standard"
|
40
|
+
}
|
41
|
+
}]
|
42
|
+
}'
|
43
|
+
Fog::JSON.decode(body)['value']
|
44
|
+
end
|
45
|
+
end
|
46
|
+
end
|
47
|
+
end
|
48
|
+
end
|
@@ -0,0 +1,36 @@
|
|
1
|
+
module Fog
|
2
|
+
module Storage
|
3
|
+
class AzureRM
|
4
|
+
# Real class for Recovery Vault request
|
5
|
+
class Real
|
6
|
+
def set_recovery_vault_context(resource_group, name)
|
7
|
+
msg = "Set context for Recovery Vault #{name}"
|
8
|
+
Fog::Logger.debug msg
|
9
|
+
|
10
|
+
resource_url = "#{AZURE_RESOURCE}/subscriptions/#{@subscription_id}/resourceGroups/#{resource_group}/providers/Microsoft.RecoveryServices/vaults/#{name}?api-version=#{REST_CLIENT_API_VERSION[1]}"
|
11
|
+
begin
|
12
|
+
token = Fog::Credentials::AzureRM.get_token(@tenant_id, @client_id, @client_secret)
|
13
|
+
RestClient.get(
|
14
|
+
resource_url,
|
15
|
+
accept: 'application/json',
|
16
|
+
content_type: 'application/json',
|
17
|
+
authorization: token
|
18
|
+
)
|
19
|
+
rescue RestClient::Exception => e
|
20
|
+
raise_azure_exception(e, msg)
|
21
|
+
end
|
22
|
+
Fog::Logger.debug "Successfully set context for Recovery Vault #{name}"
|
23
|
+
true
|
24
|
+
end
|
25
|
+
end
|
26
|
+
|
27
|
+
# Mock class for Recovery Vault request
|
28
|
+
class Mock
|
29
|
+
def set_recovery_vault_context(*)
|
30
|
+
Fog::Logger.debug 'Successfully set context for Recovery Vault {name}'
|
31
|
+
true
|
32
|
+
end
|
33
|
+
end
|
34
|
+
end
|
35
|
+
end
|
36
|
+
end
|
@@ -0,0 +1,54 @@
|
|
1
|
+
IAAS_VM_BACKUP_REQUEST = 'IaasVMBackupRequest'.freeze
|
2
|
+
|
3
|
+
module Fog
|
4
|
+
module Storage
|
5
|
+
class AzureRM
|
6
|
+
# Real class for Recovery Vault request
|
7
|
+
class Real
|
8
|
+
def start_backup(resource_group, name, vm_name, vm_resource_group)
|
9
|
+
msg = "Starting backup for VM #{vm_name}"
|
10
|
+
Fog::Logger.debug msg
|
11
|
+
|
12
|
+
job = get_backup_job_for_vm(name, resource_group, vm_name, vm_resource_group, 'Backup')
|
13
|
+
|
14
|
+
unless job.nil?
|
15
|
+
Fog::Logger.debug "Backup already in progress for VM #{vm_name} in Recovery Vault #{name}"
|
16
|
+
return false
|
17
|
+
end
|
18
|
+
|
19
|
+
backup_items = get_backup_item(resource_group, name)
|
20
|
+
backup_item = backup_items.select { |item| (item['properties']['friendlyName'].eql? vm_name.downcase) && (vm_resource_group.eql? get_resource_group_from_id(item['properties']['virtualMachineId'])) }[0]
|
21
|
+
|
22
|
+
resource_url = "#{AZURE_RESOURCE}/subscriptions/#{@subscription_id}/resourceGroups/#{resource_group}/providers/Microsoft.RecoveryServices/vaults/#{name}/backupFabrics/Azure/protectionContainers/iaasvmcontainer;#{backup_item['name']}/protectedItems/vm;#{backup_item['name']}/backup?api-version=#{REST_CLIENT_API_VERSION[1]}"
|
23
|
+
body = {
|
24
|
+
properties: {
|
25
|
+
objectType: IAAS_VM_BACKUP_REQUEST
|
26
|
+
}
|
27
|
+
}
|
28
|
+
begin
|
29
|
+
token = Fog::Credentials::AzureRM.get_token(@tenant_id, @client_id, @client_secret)
|
30
|
+
RestClient.post(
|
31
|
+
resource_url,
|
32
|
+
body.to_json,
|
33
|
+
accept: 'application/json',
|
34
|
+
content_type: 'application/json',
|
35
|
+
authorization: token
|
36
|
+
)
|
37
|
+
rescue RestClient::Exception => e
|
38
|
+
raise_azure_exception(e, msg)
|
39
|
+
end
|
40
|
+
Fog::Logger.debug "Successfully started backup for VM #{vm_name} in Recovery Vault #{name}"
|
41
|
+
true
|
42
|
+
end
|
43
|
+
end
|
44
|
+
|
45
|
+
# Mock class for Recovery Vault request
|
46
|
+
class Mock
|
47
|
+
def start_backup(*)
|
48
|
+
Fog::Logger.debug 'Successfully started backup for VM {vm_name} in Recovery Vault {name}'
|
49
|
+
true
|
50
|
+
end
|
51
|
+
end
|
52
|
+
end
|
53
|
+
end
|
54
|
+
end
|
data/lib/fog/azurerm/storage.rb
CHANGED
@@ -64,14 +64,31 @@ module Fog
|
|
64
64
|
request :save_page_blob
|
65
65
|
request :multipart_save_block_blob
|
66
66
|
|
67
|
+
# Azure Recovery Vault requests
|
68
|
+
request :create_or_update_recovery_vault
|
69
|
+
request :get_recovery_vault
|
70
|
+
request :list_recovery_vaults
|
71
|
+
request :delete_recovery_vault
|
72
|
+
request :enable_backup_protection
|
73
|
+
request :set_recovery_vault_context
|
74
|
+
request :get_backup_protection_policy
|
75
|
+
request :start_backup
|
76
|
+
request :get_backup_item
|
77
|
+
request :get_backup_container
|
78
|
+
request :disable_backup_protection
|
79
|
+
request :get_all_backup_jobs
|
80
|
+
request :get_all_backup_jobs
|
81
|
+
request :get_backup_job_for_vm
|
82
|
+
|
67
83
|
model_path 'fog/azurerm/models/storage'
|
68
84
|
model :storage_account
|
69
85
|
collection :storage_accounts
|
70
|
-
model :data_disk
|
71
86
|
model :directory
|
72
87
|
collection :directories
|
73
88
|
model :file
|
74
89
|
collection :files
|
90
|
+
model :recovery_vault
|
91
|
+
collection :recovery_vaults
|
75
92
|
|
76
93
|
# This class provides the mock implementation for unit tests.
|
77
94
|
class Mock
|
data/lib/fog/azurerm/version.rb
CHANGED
data/test/api_stub.rb
CHANGED
@@ -18,6 +18,7 @@ module ApiStub
|
|
18
18
|
autoload :StorageAccount, File.expand_path('api_stub/models/storage/storageaccount', __dir__)
|
19
19
|
autoload :File, ::File.expand_path('api_stub/models/storage/file', __dir__)
|
20
20
|
autoload :Directory, ::File.expand_path('api_stub/models/storage/directory', __dir__)
|
21
|
+
autoload :RecoveryVault, ::File.expand_path('api_stub/models/storage/recovery_vault', __dir__)
|
21
22
|
end
|
22
23
|
|
23
24
|
module Network
|
@@ -80,6 +81,7 @@ module ApiStub
|
|
80
81
|
autoload :StorageAccount, File.expand_path('api_stub/requests/storage/storageaccount', __dir__)
|
81
82
|
autoload :File, ::File.expand_path('api_stub/requests/storage/file', __dir__)
|
82
83
|
autoload :Directory, ::File.expand_path('api_stub/requests/storage/directory', __dir__)
|
84
|
+
autoload :RecoveryVault, ::File.expand_path('api_stub/requests/storage/recovery_vault', __dir__)
|
83
85
|
end
|
84
86
|
|
85
87
|
module Network
|
@@ -124,6 +124,68 @@ module ApiStub
|
|
124
124
|
compute_client.deserialize(vm_mapper, Fog::JSON.decode(body), 'result.body').value
|
125
125
|
end
|
126
126
|
|
127
|
+
def self.attach_managed_disk_response(compute_client)
|
128
|
+
body = {
|
129
|
+
'id' => '/subscriptions/########-####-####-####-############/resourceGroups/fog-test-rg/providers/Microsoft.Compute/virtualMachines/fog-test-server',
|
130
|
+
'name' => 'fog-test-server',
|
131
|
+
'location' => 'West US',
|
132
|
+
'properties' => {
|
133
|
+
'hardwareProfile' => {
|
134
|
+
'vmSize' => 'Basic_A0'
|
135
|
+
},
|
136
|
+
'storageProfile' => {
|
137
|
+
'imageReference' => {
|
138
|
+
'publisher' => 'Canonical',
|
139
|
+
'offer' => 'UbuntuServer',
|
140
|
+
'sku' => '14.04.2-LTS',
|
141
|
+
'version' => 'latest'
|
142
|
+
},
|
143
|
+
'osDisk' => {
|
144
|
+
'name' => 'fog-test-server_os_disk',
|
145
|
+
'vhd' => {
|
146
|
+
'uri' => 'http://storageAccount.blob.core.windows.net/vhds/fog-test-server_os_disk.vhd'
|
147
|
+
}
|
148
|
+
},
|
149
|
+
'dataDisks' => [
|
150
|
+
{
|
151
|
+
'name' => 'disk1',
|
152
|
+
'diskSizeGB' => '10',
|
153
|
+
'lun' => 0,
|
154
|
+
'vhd' => {
|
155
|
+
'uri' => 'http://mystorage1.blob.core.windows.net/vhds/disk1.vhd'
|
156
|
+
}
|
157
|
+
},
|
158
|
+
{
|
159
|
+
'lun' => 1, # add new managed datadisk
|
160
|
+
'name' => "datadisk2",
|
161
|
+
'managedDisk'=> {
|
162
|
+
'id'=> '/subscriptions/{subscription-id}/resourceGroups/myresourcegroup1/providers/Microsoft.Compute/disks/myDisk2',
|
163
|
+
'storageAccountType'=> 'Standard_LRS'
|
164
|
+
},
|
165
|
+
'createOption'=> 'attach'
|
166
|
+
}
|
167
|
+
]
|
168
|
+
},
|
169
|
+
'osProfile' => {
|
170
|
+
'computerName' => 'fog-test-server',
|
171
|
+
'adminUsername' => 'shaffan',
|
172
|
+
'linuxConfiguration' => {
|
173
|
+
'disablePasswordAuthentication' => false
|
174
|
+
}
|
175
|
+
},
|
176
|
+
'networkProfile' => {
|
177
|
+
'networkInterfaces' => [
|
178
|
+
{
|
179
|
+
'id' => '/subscriptions/########-####-####-####-############/resourceGroups/fog-test-rg/providers/Microsoft.Network/networkInterfaces/fogtestnetworkinterface'
|
180
|
+
}
|
181
|
+
]
|
182
|
+
}
|
183
|
+
}
|
184
|
+
}
|
185
|
+
vm_mapper = Azure::ARM::Compute::Models::VirtualMachine.mapper
|
186
|
+
compute_client.deserialize(vm_mapper, body, 'result.body')
|
187
|
+
end
|
188
|
+
|
127
189
|
def self.attach_data_disk_response(compute_client)
|
128
190
|
body = {
|
129
191
|
'id' => '/subscriptions/########-####-####-####-############/resourceGroups/fog-test-rg/providers/Microsoft.Compute/virtualMachines/fog-test-server',
|
@@ -0,0 +1,23 @@
|
|
1
|
+
module ApiStub
|
2
|
+
module Models
|
3
|
+
module Storage
|
4
|
+
# Mock class for Recovery Vault model
|
5
|
+
class RecoveryVault
|
6
|
+
def self.create_method_response
|
7
|
+
{
|
8
|
+
'id' => '/subscriptions/#{67f2116d}#######-####-####-####-############/resourceGroups/fog-test-rg/providers/Microsoft.RecoveryServices/vaults/fog-test-vault',
|
9
|
+
'location' => 'westus',
|
10
|
+
'name' => 'fog-test-vault',
|
11
|
+
'properties' => {
|
12
|
+
'provisioningState' => 'Succeeded'
|
13
|
+
},
|
14
|
+
'type' => 'Microsoft.RecoveryServices/vaults',
|
15
|
+
'sku' => {
|
16
|
+
'name' => 'standard'
|
17
|
+
}
|
18
|
+
}
|
19
|
+
end
|
20
|
+
end
|
21
|
+
end
|
22
|
+
end
|
23
|
+
end
|
@@ -142,6 +142,83 @@ module ApiStub
|
|
142
142
|
vhd_path: 'https://fogstrg.blob.core.windows.net/customvhd/windows-image.vhd'
|
143
143
|
}
|
144
144
|
end
|
145
|
+
|
146
|
+
def self.get_managed_disk_response(compute_client)
|
147
|
+
body = {
|
148
|
+
'id'=> '/subscriptions/{subscription_id}/resourceGroups/ManagedRG/providers/Microsoft.Compute/disks/ManagedDataDisk1',
|
149
|
+
'name'=> 'ManagedDataDisk1',
|
150
|
+
'type'=> 'Microsoft.Compute/disks',
|
151
|
+
'location'=> 'eastus',
|
152
|
+
'account_type'=> 'Premium_LRS',
|
153
|
+
|
154
|
+
'time_created'=> {
|
155
|
+
'datetime'=> '((2458025j,52461s,709327300n),+0s,2299161j)'
|
156
|
+
},
|
157
|
+
|
158
|
+
'creation_data'=> {
|
159
|
+
'create_option'=> 'Empty'
|
160
|
+
},
|
161
|
+
|
162
|
+
'disk_size_gb'=> 100,
|
163
|
+
'provisioning_state'=> 'Succeeded'
|
164
|
+
}
|
165
|
+
vm_mapper = Azure::ARM::Compute::Models::Disk.mapper
|
166
|
+
compute_client.deserialize(vm_mapper, body, 'result.body')
|
167
|
+
end
|
168
|
+
|
169
|
+
def self.get_vm_with_managed_disk_response(compute_client)
|
170
|
+
body = {
|
171
|
+
'id' => '/subscriptions/{subscription_id}/resourceGroups/ManagedRG/providers/Microsoft.Compute/virtualMachines/ManagedVM',
|
172
|
+
'name' => 'ManagedVM',
|
173
|
+
'type' => 'Microsoft.Compute/virtualMachines',
|
174
|
+
'location' => 'eastus',
|
175
|
+
'hardware_profile' =>
|
176
|
+
{'vm_size' => 'Standard_D2s_v3'},
|
177
|
+
'storage_profile'=>
|
178
|
+
{
|
179
|
+
'image_reference'=>
|
180
|
+
{ 'publisher' => 'Canonical',
|
181
|
+
'offer' => 'UbuntuServer',
|
182
|
+
'sku' => '16.04-LTS',
|
183
|
+
'version' => 'latest'
|
184
|
+
},
|
185
|
+
'os_disk'=>
|
186
|
+
{
|
187
|
+
'os_type' => 'Linux',
|
188
|
+
'name' => 'ManagedVM_OsDisk_1_d00cc277b8904c79ae5a777aa3fa5ac3',
|
189
|
+
'caching' => 'ReadWrite',
|
190
|
+
'create_option' => 'FromImage',
|
191
|
+
'disk_size_gb' =>30,
|
192
|
+
'managed_disk' => {
|
193
|
+
'id' => '/subscriptions/{subscription_id}/resourceGroups/ManagedRG/providers/Microsoft.Compute/disks/ManagedVM_OsDisk_1_d00cc277b8904c79ae5a777aa3fa5ac3',
|
194
|
+
'storage_account_type' => 'Premium_LRS'
|
195
|
+
}
|
196
|
+
},
|
197
|
+
'data_disks' => [
|
198
|
+
{ 'lun'=> 0,
|
199
|
+
'name' => 'ManagedDataDisk1',
|
200
|
+
'caching' => 'None',
|
201
|
+
'create_option' => 'Attach',
|
202
|
+
'disk_size_gb' =>100,
|
203
|
+
'managed_disk' => {
|
204
|
+
'id' => '/subscriptions/{subscription_id}/resourceGroups/MANAGEDRG/providers/Microsoft.Compute/disks/ManagedDataDisk1',
|
205
|
+
'storage_account_type' => 'Premium_LRS'
|
206
|
+
}
|
207
|
+
}]
|
208
|
+
},
|
209
|
+
'network_profile' => {
|
210
|
+
'network_interfaces' => [
|
211
|
+
{
|
212
|
+
'id' => '/subscriptions/{subscription_id}/resourceGroups/ManagedRG/providers/Microsoft.Network/networkInterfaces/managedvm992'
|
213
|
+
}
|
214
|
+
]
|
215
|
+
},
|
216
|
+
'provisioning_state' => 'Succeeded',
|
217
|
+
'vm_id' => '73f38ae6-4767-4325-bd78-9ba4e74337d9'
|
218
|
+
}
|
219
|
+
vm_mapper = Azure::ARM::Compute::Models::VirtualMachine.mapper
|
220
|
+
compute_client.deserialize(vm_mapper, body, 'result.body')
|
221
|
+
end
|
145
222
|
|
146
223
|
def self.create_virtual_machine_response(compute_client)
|
147
224
|
body = '{
|
@@ -0,0 +1,189 @@
|
|
1
|
+
module ApiStub
|
2
|
+
module Requests
|
3
|
+
module Storage
|
4
|
+
# Mock class for RecoveryVault request
|
5
|
+
class RecoveryVault
|
6
|
+
def self.create_recovery_vault_response
|
7
|
+
'{
|
8
|
+
"location": "westus",
|
9
|
+
"name": "fog-test-vault",
|
10
|
+
"properties": {
|
11
|
+
"provisioningState": "Succeeded"
|
12
|
+
},
|
13
|
+
"id": "/subscriptions/########-####-####-####-############/resourceGroups/fog-test-rg/providers/Microsoft.RecoveryServices/vaults/fog-test-vault",
|
14
|
+
"type": "Microsoft.RecoveryServices\/vaults",
|
15
|
+
"sku": {
|
16
|
+
"name": "standard"
|
17
|
+
}
|
18
|
+
}'
|
19
|
+
end
|
20
|
+
|
21
|
+
def self.get_recovery_vault_response
|
22
|
+
'{
|
23
|
+
"value": [{
|
24
|
+
"location": "westus",
|
25
|
+
"name": "fog-test-vault",
|
26
|
+
"properties": {
|
27
|
+
"provisioningState": "Succeeded"
|
28
|
+
},
|
29
|
+
"id": "/subscriptions/########-####-####-####-############/resourceGroups/fog-test-rg/providers/Microsoft.RecoveryServices/vaults/fog-test-vault",
|
30
|
+
"type": "Microsoft.RecoveryServices/vaults",
|
31
|
+
"sku": {
|
32
|
+
"name": "standard"
|
33
|
+
}
|
34
|
+
}]
|
35
|
+
}'
|
36
|
+
end
|
37
|
+
|
38
|
+
def self.get_all_backup_jobs_response
|
39
|
+
'{
|
40
|
+
"value": [{
|
41
|
+
"id": "/subscriptions/########-####-####-####-############/resourceGroups/fog-test-rg/providers/Microsoft.RecoveryServices/vaults/fog-test-vault/backupJobs/########-####-####-####-############",
|
42
|
+
"name": "########-####-####-####-############",
|
43
|
+
"type": "Microsoft.RecoveryServices/vaults/backupJobs",
|
44
|
+
"properties": {
|
45
|
+
"jobType": "AzureIaaSVMJob",
|
46
|
+
"duration": "XX:XX:XX.XXXXXXX",
|
47
|
+
"actionsInfo": [
|
48
|
+
1
|
49
|
+
],
|
50
|
+
"virtualMachineVersion": "Compute",
|
51
|
+
"entityFriendlyName": "fog-test-vm",
|
52
|
+
"backupManagementType": "AzureIaasVM",
|
53
|
+
"operation": "Backup",
|
54
|
+
"status": "InProgress",
|
55
|
+
"startTime": "2016-10-19T07:49:31.1466534Z",
|
56
|
+
"activityId": "########-####-####-####-############"
|
57
|
+
}
|
58
|
+
}]
|
59
|
+
}'
|
60
|
+
end
|
61
|
+
|
62
|
+
def self.get_backup_container_response
|
63
|
+
'{
|
64
|
+
"value": [{
|
65
|
+
"id": "/subscriptions/########-####-####-####-############/resourceGroups/fog-test-rg/providers/Microsoft.RecoveryServices/vaults/fog-test-vault/backupFabrics/Azure/protectionContainers/IaasVMContainer;iaasvmcontainerv2;fog-test-vm-rg;fog-test-vm",
|
66
|
+
"name": "IaasVMContainer;iaasvmcontainerv2;fog-test-vm-rg;fog-test-vm",
|
67
|
+
"type": "Microsoft.RecoveryServices/vaults/backupFabrics/protectionContainers",
|
68
|
+
"properties": {
|
69
|
+
"virtualMachineId": "/subscriptions/########-####-####-####-############/resourceGroups/TestRG/providers/Microsoft.Compute/virtualMachines/TestVM",
|
70
|
+
"virtualMachineVersion": "Compute",
|
71
|
+
"resourceGroup": "fog-test-vm-rg",
|
72
|
+
"friendlyName": "fog-test-vm",
|
73
|
+
"backupManagementType": "AzureIaasVM",
|
74
|
+
"registrationStatus": "Registered",
|
75
|
+
"healthStatus": "Healthy",
|
76
|
+
"containerType": "Microsoft.Compute/virtualMachines",
|
77
|
+
"protectableObjectType": "Microsoft.Compute/virtualMachines"
|
78
|
+
}
|
79
|
+
}]
|
80
|
+
}'
|
81
|
+
end
|
82
|
+
|
83
|
+
def self.get_backup_item_response
|
84
|
+
'{
|
85
|
+
"value": [{
|
86
|
+
"id": "/Subscriptions/########-####-####-####-############/resourceGroups/fog-test-rg/providers/Microsoft.RecoveryServices/vaults/fog-test-vault/backupFabrics/Azure/protectionContainers/IaasVMContainer;iaasvmcontainerv2;testrg;testvm/protectedItems/VM;fog-test-container-name",
|
87
|
+
"name": "iaasvmcontainerv2;fog-test-vm-rg;fog-test-vm",
|
88
|
+
"type": "Microsoft.RecoveryServices/vaults/backupFabrics/protectionContainers/protectedItems",
|
89
|
+
"properties": {
|
90
|
+
"friendlyName": "fog-test-vm",
|
91
|
+
"virtualMachineId": "/subscriptions/########-####-####-####-############/resourceGroups/fog-test-vm-rg/providers/Microsoft.Compute/virtualMachines/fog-test-vm",
|
92
|
+
"protectionStatus": "Healthy",
|
93
|
+
"protectionState": "Protected",
|
94
|
+
"lastBackupStatus": "Completed",
|
95
|
+
"lastBackupTime": "2016-10-17T10:30:47.2289274Z",
|
96
|
+
"protectedItemType": "Microsoft.Compute/virtualMachines",
|
97
|
+
"backupManagementType": "AzureIaasVM",
|
98
|
+
"workloadType": "VM",
|
99
|
+
"containerName": "iaasvmcontainerv2;fog-test-vm-rg;fog-test-vm",
|
100
|
+
"sourceResourceId": "/subscriptions/########-####-####-####-############/resourceGroups/fog-test-vm-rg/providers/Microsoft.Compute/virtualMachines/fog-test-vm",
|
101
|
+
"policyId": "/subscriptions/########-####-####-####-############/resourceGroups/fog-test-rg/providers/Microsoft.RecoveryServices/vaults/fog-test-vault/backupPolicies/DefaultPolicy",
|
102
|
+
"policyName": "DefaultPolicy",
|
103
|
+
"lastRecoveryPoint": "2016-10-17T10:32:38.4666692Z"
|
104
|
+
}
|
105
|
+
}]
|
106
|
+
}'
|
107
|
+
end
|
108
|
+
|
109
|
+
def self.list_recovery_vault_response
|
110
|
+
'{
|
111
|
+
"value": [{
|
112
|
+
"location": "westus",
|
113
|
+
"name": "fog-test-vault",
|
114
|
+
"properties": {
|
115
|
+
"provisioningState": "Succeeded"
|
116
|
+
},
|
117
|
+
"id": "/subscriptions/########-####-####-####-############/resourceGroups/fog-test-vault/providers/Microsoft.RecoveryServices/vaults/fog-test-vault",
|
118
|
+
"type": "Microsoft.RecoveryServices/vaults",
|
119
|
+
"sku": {
|
120
|
+
"name": "standard"
|
121
|
+
}
|
122
|
+
}]
|
123
|
+
}'
|
124
|
+
end
|
125
|
+
|
126
|
+
def self.get_backup_protection_policy_response
|
127
|
+
'{
|
128
|
+
"value": [{
|
129
|
+
"id": "/subscriptions/########-####-####-####-############/resourceGroups/fog-test-rg/providers/Microsoft.RecoveryServices/vaults/fog-test-vault/backupPolicies/DefaultPolicy",
|
130
|
+
"name": "DefaultPolicy",
|
131
|
+
"type": "Microsoft.RecoveryServices/vaults/backupPolicies",
|
132
|
+
"properties": {
|
133
|
+
"backupManagementType": "AzureIaasVM",
|
134
|
+
"schedulePolicy": {
|
135
|
+
"schedulePolicyType": "SimpleSchedulePolicy",
|
136
|
+
"scheduleRunFrequency": "Daily",
|
137
|
+
"scheduleRunTimes": [
|
138
|
+
"2016-10-13T19:30:00Z"
|
139
|
+
],
|
140
|
+
"scheduleWeeklyFrequency": 0
|
141
|
+
},
|
142
|
+
"retentionPolicy": {
|
143
|
+
"retentionPolicyType": "LongTermRetentionPolicy",
|
144
|
+
"dailySchedule": {
|
145
|
+
"retentionTimes": [
|
146
|
+
"2016-10-13T19:30:00Z"
|
147
|
+
],
|
148
|
+
"retentionDuration": {
|
149
|
+
"count": 30,
|
150
|
+
"durationType": "Days"
|
151
|
+
}
|
152
|
+
}
|
153
|
+
},
|
154
|
+
"protectedItemsCount": 0
|
155
|
+
}
|
156
|
+
}]
|
157
|
+
}'
|
158
|
+
end
|
159
|
+
|
160
|
+
def self.get_backup_job_for_vm_response
|
161
|
+
'{
|
162
|
+
"id": "/subscriptions/########-####-####-####-############/resourceGroups/fog-test-rg/providers/Microsoft.RecoveryServices/vaults/fog-test-vault/backupJobs/########-####-####-####-############",
|
163
|
+
"name": "########-####-####-####-############",
|
164
|
+
"type": "Microsoft.RecoveryServices/vaults/backupJobs",
|
165
|
+
"properties": {
|
166
|
+
"jobType": "AzureIaaSVMJob",
|
167
|
+
"duration": "00:00:52.3309441",
|
168
|
+
"virtualMachineVersion": "Compute",
|
169
|
+
"extendedInfo": {
|
170
|
+
"tasksList": [],
|
171
|
+
"propertyBag": {
|
172
|
+
"VM Name": "fog-test-vm",
|
173
|
+
"Policy Name": "DefaultPolicy"
|
174
|
+
}
|
175
|
+
},
|
176
|
+
"entityFriendlyName": "fog-test-vm",
|
177
|
+
"backupManagementType": "AzureIaasVM",
|
178
|
+
"operation": "ConfigureBackup",
|
179
|
+
"status": "Completed",
|
180
|
+
"startTime": "2016-10-13T09:55:49.1168243Z",
|
181
|
+
"endTime": "2016-10-13T09:56:41.4477684Z",
|
182
|
+
"activityId": "383f05d9-a4bf-4b95-bb41-d39849b3a86e-2016-10-13 09:55:53Z-PS"
|
183
|
+
}
|
184
|
+
}'
|
185
|
+
end
|
186
|
+
end
|
187
|
+
end
|
188
|
+
end
|
189
|
+
end
|