fog-azure-rm-temp 0.0.3 → 0.0.4

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.
Files changed (55) hide show
  1. checksums.yaml +4 -4
  2. data/CHANGELOG.md +0 -5
  3. data/fog-azure-rm.gemspec +1 -1
  4. data/lib/fog/azurerm/compute.rb +2 -0
  5. data/lib/fog/azurerm/docs/storage.md +66 -0
  6. data/lib/fog/azurerm/models/compute/creation_data.rb +4 -2
  7. data/lib/fog/azurerm/models/compute/data_disk.rb +26 -0
  8. data/lib/fog/azurerm/models/compute/managed_disk.rb +5 -4
  9. data/lib/fog/azurerm/models/compute/server.rb +24 -3
  10. data/lib/fog/azurerm/models/storage/recovery_vault.rb +50 -0
  11. data/lib/fog/azurerm/models/storage/recovery_vaults.rb +27 -0
  12. data/lib/fog/azurerm/requests/compute/attach_data_disk_to_vm.rb +49 -13
  13. data/lib/fog/azurerm/requests/compute/detach_data_disk_from_vm.rb +1 -2
  14. data/lib/fog/azurerm/requests/storage/create_or_update_recovery_vault.rb +54 -0
  15. data/lib/fog/azurerm/requests/storage/delete_recovery_vault.rb +35 -0
  16. data/lib/fog/azurerm/requests/storage/disable_backup_protection.rb +60 -0
  17. data/lib/fog/azurerm/requests/storage/enable_backup_protection.rb +61 -0
  18. data/lib/fog/azurerm/requests/storage/get_all_backup_jobs.rb +56 -0
  19. data/lib/fog/azurerm/requests/storage/get_backup_container.rb +53 -0
  20. data/lib/fog/azurerm/requests/storage/get_backup_item.rb +58 -0
  21. data/lib/fog/azurerm/requests/storage/get_backup_job_for_vm.rb +53 -0
  22. data/lib/fog/azurerm/requests/storage/get_backup_protection_policy.rb +64 -0
  23. data/lib/fog/azurerm/requests/storage/get_recovery_vault.rb +49 -0
  24. data/lib/fog/azurerm/requests/storage/list_recovery_vaults.rb +48 -0
  25. data/lib/fog/azurerm/requests/storage/set_recovery_vault_context.rb +36 -0
  26. data/lib/fog/azurerm/requests/storage/start_backup.rb +54 -0
  27. data/lib/fog/azurerm/storage.rb +18 -1
  28. data/lib/fog/azurerm/version.rb +1 -1
  29. data/test/api_stub.rb +2 -0
  30. data/test/api_stub/models/compute/server.rb +62 -0
  31. data/test/api_stub/models/storage/recovery_vault.rb +23 -0
  32. data/test/api_stub/requests/compute/virtual_machine.rb +77 -0
  33. data/test/api_stub/requests/storage/recovery_vault.rb +189 -0
  34. data/test/models/{storage → compute}/test_data_disk.rb +2 -2
  35. data/test/models/compute/test_server.rb +27 -1
  36. data/test/models/storage/test_recovery_vault.rb +61 -0
  37. data/test/models/storage/test_recovery_vaults.rb +47 -0
  38. data/test/requests/compute/test_attach_data_disk_to_vm.rb +21 -6
  39. data/test/requests/storage/test_create_recovery_vault.rb +35 -0
  40. data/test/requests/storage/test_delete_recovery_vault.rb +34 -0
  41. data/test/requests/storage/test_disable_backup_protection.rb +52 -0
  42. data/test/requests/storage/test_enable_backup_protection.rb +66 -0
  43. data/test/requests/storage/test_get_all_backup_jobs.rb +35 -0
  44. data/test/requests/storage/test_get_backup_container.rb +35 -0
  45. data/test/requests/storage/test_get_backup_item.rb +35 -0
  46. data/test/requests/storage/test_get_backup_job_for_vm.rb +26 -0
  47. data/test/requests/storage/test_get_backup_protection_policy.rb +35 -0
  48. data/test/requests/storage/test_get_recovery_vault.rb +35 -0
  49. data/test/requests/storage/test_list_recovery_vault.rb +35 -0
  50. data/test/requests/storage/test_set_recovery_vault_context.rb +34 -0
  51. data/test/requests/storage/test_start_backup.rb +55 -0
  52. data/test/test_helper.rb +14 -0
  53. metadata +38 -13
  54. data/.arclint +0 -8
  55. 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
@@ -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
@@ -1,5 +1,5 @@
1
1
  module Fog
2
2
  module AzureRM
3
- VERSION = '0.0.3'.freeze
3
+ VERSION = '0.0.4'.freeze
4
4
  end
5
5
  end
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