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,54 @@
1
+ module Fog
2
+ module Storage
3
+ class AzureRM
4
+ # Real class for Recovery Vault request
5
+ class Real
6
+ def create_or_update_recovery_vault(resource_group, location, name)
7
+ msg = "Creating/Updating Recovery Vault #{name} in Resource Group #{resource_group}"
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
+ body = {
12
+ location: location,
13
+ tags: {},
14
+ sku: { name: 'standard' },
15
+ properties: {}
16
+ }
17
+ begin
18
+ token = Fog::Credentials::AzureRM.get_token(@tenant_id, @client_id, @client_secret)
19
+ response = RestClient.put(
20
+ resource_url,
21
+ body.to_json,
22
+ accept: 'application/json',
23
+ content_type: 'application/json',
24
+ authorization: token
25
+ )
26
+ rescue RestClient::Exception => e
27
+ raise_azure_exception(e, msg)
28
+ end
29
+ Fog::Logger.debug "Recovery Vault #{name} created/updated successfully"
30
+ Fog::JSON.decode(response)
31
+ end
32
+ end
33
+
34
+ # Mock class for Recovery Vault request
35
+ class Mock
36
+ def create_or_update_recovery_vault(*)
37
+ recovery_vault = '{
38
+ "location": "westus",
39
+ "name": "fog-test-vault",
40
+ "properties": {
41
+ "provisioningState": "Succeeded"
42
+ },
43
+ "id": "/subscriptions/########-####-####-####-############/resourceGroups/fog-test-rg/providers/Microsoft.RecoveryServices/vaults/fog-test-vault",
44
+ "type": "Microsoft.RecoveryServices/vaults",
45
+ "sku": {
46
+ "name": "standard"
47
+ }
48
+ }'
49
+ Fog::JSON.decode(recovery_vault)
50
+ end
51
+ end
52
+ end
53
+ end
54
+ end
@@ -0,0 +1,35 @@
1
+ module Fog
2
+ module Storage
3
+ class AzureRM
4
+ # Real class for Recovery Vault request
5
+ class Real
6
+ def delete_recovery_vault(resource_group, name)
7
+ msg = "Deleting 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/#{name}?api-version=#{REST_CLIENT_API_VERSION[1]}"
10
+ begin
11
+ token = Fog::Credentials::AzureRM.get_token(@tenant_id, @client_id, @client_secret)
12
+ RestClient.delete(
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} in Resource Group #{resource_group} deleted successfully"
22
+ true
23
+ end
24
+ end
25
+
26
+ # Mock class for Recovery Vault request
27
+ class Mock
28
+ def delete_recovery_vault(*)
29
+ Fog::Logger.debug 'Recovery Vault TestVault in Resource Group TestRG deleted successfully'
30
+ true
31
+ end
32
+ end
33
+ end
34
+ end
35
+ end
@@ -0,0 +1,60 @@
1
+ PROTECTION_STOPPED = 'ProtectionStopped'.freeze
2
+
3
+ module Fog
4
+ module Storage
5
+ class AzureRM
6
+ # Real class for Recovery Vault request
7
+ class Real
8
+ def disable_backup_protection(rv_name, rv_resource_group, vm_name, vm_resource_group)
9
+ msg = "Disabling protection for VM #{vm_name} in Recovery Vault #{rv_name}"
10
+ Fog::Logger.debug msg
11
+
12
+ set_recovery_vault_context(rv_resource_group, rv_name)
13
+ vm_id = get_virtual_machine_id(vm_resource_group, vm_name)
14
+
15
+ resource_url = "#{AZURE_RESOURCE}/subscriptions/#{@subscription_id}/resourceGroups/#{rv_resource_group}/providers/Microsoft.RecoveryServices/vaults/#{rv_name}/backupFabrics/Azure/protectionContainers/iaasvmcontainer;iaasvmcontainerv2;#{vm_resource_group.downcase};#{vm_name.downcase}/protectedItems/vm;iaasvmcontainerv2;#{vm_resource_group.downcase};#{vm_name.downcase}?api-version=#{REST_CLIENT_API_VERSION[1]}"
16
+ body = {
17
+ properties: {
18
+ protectedItemType: 'Microsoft.Compute/virtualMachines',
19
+ policyId: '',
20
+ sourceResourceId: vm_id,
21
+ protectionState: PROTECTION_STOPPED
22
+ },
23
+ tags: {}
24
+ }
25
+
26
+ begin
27
+ token = Fog::Credentials::AzureRM.get_token(@tenant_id, @client_id, @client_secret)
28
+ RestClient.put(
29
+ resource_url,
30
+ body.to_json,
31
+ accept: 'application/json',
32
+ content_type: 'application/json',
33
+ authorization: token
34
+ )
35
+ rescue RestClient::Exception => e
36
+ raise_azure_exception(e, msg)
37
+ end
38
+
39
+ Fog::Logger.debug "Successfully disabled protection for VM #{vm_name} in Recovery Vault #{rv_name}"
40
+ true
41
+ end
42
+
43
+ private
44
+
45
+ def get_virtual_machine_id(vm_resource_group, vm_name)
46
+ compute_service = Fog::Compute::AzureRM.new(tenant_id: @tenant_id, client_id: @client_id, client_secret: @client_secret, subscription_id: @subscription_id)
47
+ compute_service.get_virtual_machine(vm_resource_group, vm_name).id
48
+ end
49
+ end
50
+
51
+ # Mock class for Recovery Vault request
52
+ class Mock
53
+ def disable_backup_protection(*)
54
+ Fog::Logger.debug 'Successfully disabled protection for VM {vm_name} in Recovery Vault {rv_name}'
55
+ true
56
+ end
57
+ end
58
+ end
59
+ end
60
+ end
@@ -0,0 +1,61 @@
1
+ CONFIGURE_BACKUP = 'ConfigureBackup'.freeze
2
+
3
+ module Fog
4
+ module Storage
5
+ class AzureRM
6
+ # Real class for Recovery Vault request
7
+ class Real
8
+ def enable_backup_protection(rv_name, rv_resource_group, vm_name, vm_resource_group)
9
+ msg = "Enabling backup protection for VM #{vm_name} in Resource Group #{vm_resource_group}"
10
+ Fog::Logger.debug msg
11
+
12
+ set_recovery_vault_context(rv_resource_group, rv_name)
13
+ backup_protection_policy = get_backup_protection_policy(rv_resource_group, rv_name)
14
+ policy = backup_protection_policy.select { |item| item['name'].eql? 'DefaultPolicy' }[0]
15
+ vm_id = get_virtual_machine_id(vm_resource_group, vm_name)
16
+
17
+ resource_url = "#{AZURE_RESOURCE}/subscriptions/#{@subscription_id}/resourceGroups/#{rv_resource_group}/providers/Microsoft.RecoveryServices/vaults/#{rv_name}/backupFabrics/Azure/protectionContainers/iaasvmcontainer;iaasvmcontainerv2;#{vm_resource_group.downcase};#{vm_name.downcase}/protectedItems/vm;iaasvmcontainerv2;#{vm_resource_group.downcase};#{vm_name.downcase}?api-version=#{REST_CLIENT_API_VERSION[1]}"
18
+ body = {
19
+ properties: {
20
+ protectedItemType: 'Microsoft.Compute/virtualMachines',
21
+ policyId: policy['id'],
22
+ sourceResourceId: vm_id
23
+ },
24
+ tags: {}
25
+ }
26
+
27
+ begin
28
+ token = Fog::Credentials::AzureRM.get_token(@tenant_id, @client_id, @client_secret)
29
+ RestClient.put(
30
+ resource_url,
31
+ body.to_json,
32
+ accept: 'application/json',
33
+ content_type: 'application/json',
34
+ authorization: token
35
+ )
36
+ rescue RestClient::Exception => e
37
+ raise_azure_exception(e, msg)
38
+ end
39
+
40
+ @job = get_backup_job_for_vm(rv_name, rv_resource_group, vm_name, vm_resource_group, CONFIGURE_BACKUP)
41
+
42
+ until @job.nil?
43
+ sleep 10
44
+ @job = get_backup_job_for_vm(rv_name, rv_resource_group, vm_name, vm_resource_group, CONFIGURE_BACKUP)
45
+ end
46
+
47
+ Fog::Logger.debug "Successfully enabled backup protection for VM #{vm_name} in Resource Group #{vm_resource_group}"
48
+ true
49
+ end
50
+ end
51
+
52
+ # Mock class for Recovery Vault request
53
+ class Mock
54
+ def enable_backup_protection(*)
55
+ Fog::Logger.debug 'Successfully enabled backup protection for VM {vm_name} in Resource Group {vm_resource_group}'
56
+ true
57
+ end
58
+ end
59
+ end
60
+ end
61
+ end
@@ -0,0 +1,56 @@
1
+ module Fog
2
+ module Storage
3
+ class AzureRM
4
+ # Real class for Recovery Vault request
5
+ class Real
6
+ def get_all_backup_jobs(rv_name, rv_resource_group)
7
+ msg = "Getting all backup jobs for Recovery Vault #{rv_name}"
8
+ Fog::Logger.debug msg
9
+
10
+ resource_url = "#{AZURE_RESOURCE}/subscriptions/#{@subscription_id}/resourceGroups/#{rv_resource_group}/providers/Microsoft.RecoveryServices/vaults/#{rv_name}/backupJobs?api-version=#{REST_CLIENT_API_VERSION[1]}&$filter=status eq 'InProgress'"
11
+ begin
12
+ token = Fog::Credentials::AzureRM.get_token(@tenant_id, @client_id, @client_secret)
13
+ response = 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 retrieved backup jobs for Recovery Vault #{rv_name}"
23
+ Fog::JSON.decode(response)['value']
24
+ end
25
+ end
26
+
27
+ # Mock class for Recovery Vault request
28
+ class Mock
29
+ def get_all_backup_jobs(*)
30
+ body = '{
31
+ "value": [{
32
+ "id": "/subscriptions/########-####-####-####-############/resourceGroups/fog-test-rg/providers/Microsoft.RecoveryServices/vaults/fog-test-vault/backupJobs/########-####-####-####-############",
33
+ "name": "########-####-####-####-############",
34
+ "type": "Microsoft.RecoveryServices/vaults/backupJobs",
35
+ "properties": {
36
+ "jobType": "AzureIaaSVMJob",
37
+ "duration": "XX:XX:XX.XXXXXXX",
38
+ "actionsInfo": [
39
+ 1
40
+ ],
41
+ "virtualMachineVersion": "Compute",
42
+ "entityFriendlyName": "fog-test-vm",
43
+ "backupManagementType": "AzureIaasVM",
44
+ "operation": "Backup",
45
+ "status": "InProgress",
46
+ "startTime": "2016-10-19T07:49:31.1466534Z",
47
+ "activityId": "########-####-####-####-############"
48
+ }
49
+ }]
50
+ }'
51
+ Fog::JSON.decode(body)['value']
52
+ end
53
+ end
54
+ end
55
+ end
56
+ end
@@ -0,0 +1,53 @@
1
+ module Fog
2
+ module Storage
3
+ class AzureRM
4
+ # Real class for Recovery Vault request
5
+ class Real
6
+ def get_backup_container(resource_group, rv_name, vm_name)
7
+ msg = "Getting backup container from Recovery Vault #{rv_name}"
8
+ Fog::Logger.debug msg
9
+
10
+ resource_url = "#{AZURE_RESOURCE}/subscriptions/#{@subscription_id}/resourceGroups/#{resource_group}/providers/Microsoft.RecoveryServices/vaults/#{rv_name}/backupProtectionContainers?api-version=#{REST_CLIENT_API_VERSION[1]}&$filter=backupManagementType eq 'AzureIaasVM' and status eq 'Registered' and friendlyName eq '#{vm_name}'"
11
+ begin
12
+ token = Fog::Credentials::AzureRM.get_token(@tenant_id, @client_id, @client_secret)
13
+ response = RestClient.get(
14
+ response = 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 retrieved backup container from Recovery Vault #{rv_name}"
23
+ Fog::JSON.decode(response)['value']
24
+ end
25
+ end
26
+
27
+ # Mock class for Recovery Vault request
28
+ class Mock
29
+ def get_backup_container(*)
30
+ body = '{
31
+ "value": [{
32
+ "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",
33
+ "name": "IaasVMContainer;iaasvmcontainerv2;fog-test-vm-rg;fog-test-vm",
34
+ "type": "Microsoft.RecoveryServices/vaults/backupFabrics/protectionContainers",
35
+ "properties": {
36
+ "virtualMachineId": "/subscriptions/########-####-####-####-############/resourceGroups/TestRG/providers/Microsoft.Compute/virtualMachines/TestVM",
37
+ "virtualMachineVersion": "Compute",
38
+ "resourceGroup": "fog-test-vm-rg",
39
+ "friendlyName": "fog-test-vm",
40
+ "backupManagementType": "AzureIaasVM",
41
+ "registrationStatus": "Registered",
42
+ "healthStatus": "Healthy",
43
+ "containerType": "Microsoft.Compute/virtualMachines",
44
+ "protectableObjectType": "Microsoft.Compute/virtualMachines"
45
+ }
46
+ }]
47
+ }'
48
+ Fog::JSON.decode(body)['value']
49
+ end
50
+ end
51
+ end
52
+ end
53
+ end
@@ -0,0 +1,58 @@
1
+ module Fog
2
+ module Storage
3
+ class AzureRM
4
+ # Real class for Recovery Vault request
5
+ class Real
6
+ def get_backup_item(resource_group, rv_name)
7
+ msg = "Getting backup item from Recovery Vault #{rv_name}"
8
+ Fog::Logger.debug msg
9
+
10
+ resource_url = "#{AZURE_RESOURCE}/subscriptions/#{@subscription_id}/resourceGroups/#{resource_group}/providers/Microsoft.RecoveryServices/vaults/#{rv_name}/backupProtectedItems?api-version=#{REST_CLIENT_API_VERSION[1]}&$filter=backupManagementType eq 'AzureIaasVM' and itemType eq 'VM'"
11
+ begin
12
+ token = Fog::Credentials::AzureRM.get_token(@tenant_id, @client_id, @client_secret)
13
+ response = RestClient.get(
14
+ response = 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 retrieved backup item from Recovery Vault #{rv_name}"
23
+ Fog::JSON.decode(response)['value']
24
+ end
25
+ end
26
+
27
+ # Mock class for Recovery Vault request
28
+ class Mock
29
+ def get_backup_item(*)
30
+ body = '{
31
+ "value": [{
32
+ "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",
33
+ "name": "iaasvmcontainerv2;fog-test-vm-rg;fog-test-vm",
34
+ "type": "Microsoft.RecoveryServices/vaults/backupFabrics/protectionContainers/protectedItems",
35
+ "properties": {
36
+ "friendlyName": "fog-test-vm",
37
+ "virtualMachineId": "/subscriptions/########-####-####-####-############/resourceGroups/fog-test-vm-rg/providers/Microsoft.Compute/virtualMachines/fog-test-vm",
38
+ "protectionStatus": "Healthy",
39
+ "protectionState": "Protected",
40
+ "lastBackupStatus": "Completed",
41
+ "lastBackupTime": "2016-10-17T10:30:47.2289274Z",
42
+ "protectedItemType": "Microsoft.Compute/virtualMachines",
43
+ "backupManagementType": "AzureIaasVM",
44
+ "workloadType": "VM",
45
+ "containerName": "iaasvmcontainerv2;fog-test-vm-rg;fog-test-vm",
46
+ "sourceResourceId": "/subscriptions/########-####-####-####-############/resourceGroups/fog-test-vm-rg/providers/Microsoft.Compute/virtualMachines/fog-test-vm",
47
+ "policyId": "/subscriptions/########-####-####-####-############/resourceGroups/fog-test-rg/providers/Microsoft.RecoveryServices/vaults/fog-test-vault/backupPolicies/DefaultPolicy",
48
+ "policyName": "DefaultPolicy",
49
+ "lastRecoveryPoint": "2016-10-17T10:32:38.4666692Z"
50
+ }
51
+ }]
52
+ }'
53
+ Fog::JSON.decode(body)['value']
54
+ end
55
+ end
56
+ end
57
+ end
58
+ end
@@ -0,0 +1,53 @@
1
+ module Fog
2
+ module Storage
3
+ class AzureRM
4
+ # Real class for Recovery Vault request
5
+ class Real
6
+ def get_backup_job_for_vm(rv_name, rv_resource_group, vm_name, vm_resource_group, operation)
7
+ msg = "Getting backup job for VM #{vm_name} in Resource Group #{vm_resource_group}"
8
+ Fog::Logger.debug msg
9
+
10
+ backup_jobs = get_all_backup_jobs(rv_name, rv_resource_group)
11
+ backup_jobs = backup_jobs.select do |job|
12
+ (job['properties']['status'].eql? 'InProgress') &&
13
+ (job['properties']['entityFriendlyName'].eql? vm_name.downcase) &&
14
+ (job['properties']['operation'].eql? operation)
15
+ end
16
+
17
+ backup_jobs[0]
18
+ end
19
+ end
20
+
21
+ # Mock class for Recovery Vault request
22
+ class Mock
23
+ def get_backup_job_for_vm(*)
24
+ body = '{
25
+ "id": "/subscriptions/########-####-####-####-############/resourceGroups/fog-test-rg/providers/Microsoft.RecoveryServices/vaults/fog-test-vault/backupJobs/########-####-####-####-############",
26
+ "name": "########-####-####-####-############",
27
+ "type": "Microsoft.RecoveryServices/vaults/backupJobs",
28
+ "properties": {
29
+ "jobType": "AzureIaaSVMJob",
30
+ "duration": "00:00:52.3309441",
31
+ "virtualMachineVersion": "Compute",
32
+ "extendedInfo": {
33
+ "tasksList": [],
34
+ "propertyBag": {
35
+ "VM Name": "fog-test-vm",
36
+ "Policy Name": "DefaultPolicy"
37
+ }
38
+ },
39
+ "entityFriendlyName": "fog-test-vm",
40
+ "backupManagementType": "AzureIaasVM",
41
+ "operation": "ConfigureBackup",
42
+ "status": "Completed",
43
+ "startTime": "2016-10-13T09:55:49.1168243Z",
44
+ "endTime": "2016-10-13T09:56:41.4477684Z",
45
+ "activityId": "383f05d9-a4bf-4b95-bb41-d39849b3a86e-2016-10-13 09:55:53Z-PS"
46
+ }
47
+ }'
48
+ Fog::JSON.decode(body)
49
+ end
50
+ end
51
+ end
52
+ end
53
+ end
@@ -0,0 +1,64 @@
1
+ module Fog
2
+ module Storage
3
+ class AzureRM
4
+ # Real class for Recovery Vault request
5
+ class Real
6
+ def get_backup_protection_policy(resource_group, name)
7
+ msg = "Get backup protection policy from Resource Group #{resource_group}"
8
+ Fog::Logger.debug msg
9
+
10
+ resource_url = "#{AZURE_RESOURCE}/subscriptions/#{@subscription_id}/resourceGroups/#{resource_group}/providers/Microsoft.RecoveryServices/vaults/#{name}/backupPolicies?api-version=#{REST_CLIENT_API_VERSION[1]}&$filter=backupManagementType eq 'AzureIaasVM'"
11
+ begin
12
+ token = Fog::Credentials::AzureRM.get_token(@tenant_id, @client_id, @client_secret)
13
+ response = 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 retrieved backup protection policy from Resource Group #{resource_group}"
23
+ Fog::JSON.decode(response)['value']
24
+ end
25
+ end
26
+
27
+ # Mock class for Recovery Vault request
28
+ class Mock
29
+ body = '{
30
+ "value": [{
31
+ "id": "/subscriptions/########-####-####-####-############/resourceGroups/fog-test-rg/providers/Microsoft.RecoveryServices/vaults/fog-test-vault/backupPolicies/DefaultPolicy",
32
+ "name": "DefaultPolicy",
33
+ "type": "Microsoft.RecoveryServices/vaults/backupPolicies",
34
+ "properties": {
35
+ "backupManagementType": "AzureIaasVM",
36
+ "schedulePolicy": {
37
+ "schedulePolicyType": "SimpleSchedulePolicy",
38
+ "scheduleRunFrequency": "Daily",
39
+ "scheduleRunTimes": [
40
+ "2016-10-13T19:30:00Z"
41
+ ],
42
+ "scheduleWeeklyFrequency": 0
43
+ },
44
+ "retentionPolicy": {
45
+ "retentionPolicyType": "LongTermRetentionPolicy",
46
+ "dailySchedule": {
47
+ "retentionTimes": [
48
+ "2016-10-13T19:30:00Z"
49
+ ],
50
+ "retentionDuration": {
51
+ "count": 30,
52
+ "durationType": "Days"
53
+ }
54
+ }
55
+ },
56
+ "protectedItemsCount": 0
57
+ }
58
+ }]
59
+ }'
60
+ Fog::JSON.decode(body)['value']
61
+ end
62
+ end
63
+ end
64
+ end