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.
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