fog-azure-rm-temp 0.0.4 → 0.0.5
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/.arclint +8 -0
- data/.travis.yml +28 -14
- data/CHANGELOG.md +77 -0
- data/CONTRIBUTORS.md +4 -0
- data/fog-azure-rm.gemspec +3 -2
- data/lib/fog/azurerm.rb +1 -0
- data/lib/fog/azurerm/async_response.rb +9 -1
- data/lib/fog/azurerm/compute.rb +3 -1
- data/lib/fog/azurerm/constants.rb +11 -3
- data/lib/fog/azurerm/dns.rb +3 -1
- data/lib/fog/azurerm/docs/application_gateway.md +119 -117
- data/lib/fog/azurerm/docs/compute.md +299 -202
- data/lib/fog/azurerm/docs/dns.md +44 -43
- data/lib/fog/azurerm/docs/key_vault.md +31 -28
- data/lib/fog/azurerm/docs/network.md +407 -404
- data/lib/fog/azurerm/docs/resources.md +52 -49
- data/lib/fog/azurerm/docs/sql.md +56 -54
- data/lib/fog/azurerm/docs/storage.md +92 -157
- data/lib/fog/azurerm/docs/traffic_manager.md +55 -53
- data/lib/fog/azurerm/models/application_gateway/gateway.rb +5 -1
- data/lib/fog/azurerm/models/compute/availability_set.rb +4 -1
- data/lib/fog/azurerm/models/compute/managed_disk.rb +0 -1
- data/lib/fog/azurerm/models/compute/server.rb +61 -11
- data/lib/fog/azurerm/models/compute/servers.rb +2 -2
- data/lib/fog/azurerm/models/dns/a_record.rb +15 -0
- data/lib/fog/azurerm/models/dns/cname_record.rb +15 -0
- data/lib/fog/azurerm/models/dns/record_set.rb +20 -8
- data/lib/fog/azurerm/models/key_vault/vault.rb +3 -1
- data/lib/fog/azurerm/models/network/load_balancer.rb +3 -1
- data/lib/fog/azurerm/models/network/local_network_gateway.rb +3 -1
- data/lib/fog/azurerm/models/network/network_interface.rb +3 -1
- data/lib/fog/azurerm/models/network/network_security_group.rb +4 -2
- data/lib/fog/azurerm/models/network/public_ip.rb +4 -2
- data/lib/fog/azurerm/models/network/virtual_network.rb +4 -2
- data/lib/fog/azurerm/models/resources/resource_group.rb +3 -1
- data/lib/fog/azurerm/models/sql/sql_database.rb +3 -3
- data/lib/fog/azurerm/models/sql/sql_server.rb +3 -2
- data/lib/fog/azurerm/models/storage/directories.rb +6 -1
- data/lib/fog/azurerm/models/storage/file.rb +2 -0
- data/lib/fog/azurerm/models/storage/storage_account.rb +4 -1
- data/lib/fog/azurerm/models/storage/storage_accounts.rb +7 -0
- data/lib/fog/azurerm/models/traffic_manager/traffic_manager_profile.rb +3 -1
- data/lib/fog/azurerm/requests/application_gateway/check_ag_exists.rb +1 -1
- data/lib/fog/azurerm/requests/application_gateway/create_or_update_application_gateway.rb +1 -0
- data/lib/fog/azurerm/requests/compute/attach_data_disk_to_vm.rb +2 -2
- data/lib/fog/azurerm/requests/compute/check_availability_set_exists.rb +1 -1
- data/lib/fog/azurerm/requests/compute/check_managed_disk_exists.rb +1 -1
- data/lib/fog/azurerm/requests/compute/check_vm_exists.rb +1 -1
- data/lib/fog/azurerm/requests/compute/check_vm_extension_exists.rb +2 -2
- data/lib/fog/azurerm/requests/compute/create_availability_set.rb +4 -2
- data/lib/fog/azurerm/requests/compute/create_image.rb +68 -0
- data/lib/fog/azurerm/requests/compute/create_virtual_machine.rb +302 -135
- data/lib/fog/azurerm/requests/compute/delete_image.rb +29 -0
- data/lib/fog/azurerm/requests/compute/get_image.rb +45 -0
- data/lib/fog/azurerm/requests/compute/get_virtual_machine.rb +4 -2
- data/lib/fog/azurerm/requests/dns/check_record_set_exists.rb +1 -1
- data/lib/fog/azurerm/requests/dns/check_zone_exists.rb +3 -2
- data/lib/fog/azurerm/requests/dns/create_or_update_record_set.rb +3 -2
- data/lib/fog/azurerm/requests/dns/create_or_update_zone.rb +1 -2
- data/lib/fog/azurerm/requests/key_vault/check_vault_exists.rb +1 -1
- data/lib/fog/azurerm/requests/key_vault/create_or_update_vault.rb +1 -0
- data/lib/fog/azurerm/requests/network/check_express_route_cir_auth_exists.rb +1 -1
- data/lib/fog/azurerm/requests/network/check_express_route_circuit_exists.rb +1 -1
- data/lib/fog/azurerm/requests/network/check_load_balancer_exists.rb +1 -1
- data/lib/fog/azurerm/requests/network/check_local_net_gateway_exists.rb +1 -1
- data/lib/fog/azurerm/requests/network/check_net_sec_group_exists.rb +1 -1
- data/lib/fog/azurerm/requests/network/check_net_sec_rule_exists.rb +1 -1
- data/lib/fog/azurerm/requests/network/check_network_interface_exists.rb +1 -1
- data/lib/fog/azurerm/requests/network/check_public_ip_exists.rb +1 -1
- data/lib/fog/azurerm/requests/network/check_subnet_exists.rb +1 -1
- data/lib/fog/azurerm/requests/network/check_virtual_network_exists.rb +1 -1
- data/lib/fog/azurerm/requests/network/check_vnet_gateway_connection_exists.rb +1 -1
- data/lib/fog/azurerm/requests/network/check_vnet_gateway_exists.rb +1 -1
- data/lib/fog/azurerm/requests/network/create_load_balancer.rb +4 -4
- data/lib/fog/azurerm/requests/network/create_or_update_express_route_circuit.rb +1 -1
- data/lib/fog/azurerm/requests/network/create_or_update_local_network_gateway.rb +1 -2
- data/lib/fog/azurerm/requests/network/create_or_update_network_interface.rb +4 -3
- data/lib/fog/azurerm/requests/network/create_or_update_network_security_group.rb +4 -3
- data/lib/fog/azurerm/requests/network/create_or_update_public_ip.rb +5 -3
- data/lib/fog/azurerm/requests/network/create_or_update_virtual_network.rb +4 -3
- data/lib/fog/azurerm/requests/network/create_or_update_virtual_network_gateway_connection.rb +1 -1
- data/lib/fog/azurerm/requests/resources/check_azure_resource_exists.rb +4 -4
- data/lib/fog/azurerm/requests/resources/create_resource_group.rb +2 -1
- data/lib/fog/azurerm/requests/resources/delete_resource_tag.rb +4 -4
- data/lib/fog/azurerm/requests/resources/tag_resource.rb +4 -4
- data/lib/fog/azurerm/requests/sql/create_or_update_database.rb +13 -10
- data/lib/fog/azurerm/requests/sql/create_or_update_sql_server.rb +8 -5
- data/lib/fog/azurerm/requests/storage/check_storage_account_exists.rb +1 -1
- data/lib/fog/azurerm/requests/storage/create_storage_account.rb +4 -2
- data/lib/fog/azurerm/requests/traffic_manager/check_traffic_manager_endpoint_exists.rb +1 -1
- data/lib/fog/azurerm/requests/traffic_manager/check_traffic_manager_profile_exists.rb +1 -1
- data/lib/fog/azurerm/requests/traffic_manager/create_or_update_traffic_manager_profile.rb +13 -3
- data/lib/fog/azurerm/storage.rb +0 -18
- data/lib/fog/azurerm/utilities/general.rb +21 -10
- data/lib/fog/azurerm/version.rb +1 -1
- data/rake-script.sh +7 -1
- data/rakefile +1 -1
- data/test/api_stub.rb +19 -2
- data/test/api_stub/models/compute/server.rb +21 -5
- data/test/api_stub/requests/compute/image.rb +41 -0
- data/test/api_stub/requests/compute/virtual_machine.rb +60 -62
- data/test/api_stub/requests/resources/resource_group.rb +1 -1
- data/test/integration/application_gateway.rb +8 -1
- data/test/integration/availability_set.rb +9 -2
- data/test/integration/external_load_balancer.rb +2 -1
- data/test/integration/internal_load_balancer.rb +2 -1
- data/test/integration/key_vault.rb +2 -1
- data/test/integration/managed_disk.rb +10 -5
- data/test/integration/network_interface.rb +2 -1
- data/test/integration/network_security_group.rb +2 -1
- data/test/integration/public_ip.rb +2 -1
- data/test/integration/record_set.rb +5 -5
- data/test/integration/resource_group.rb +5 -2
- data/test/integration/resource_tag.rb +4 -2
- data/test/integration/server.rb +113 -23
- data/test/integration/server_custom_image.rb +120 -20
- data/test/integration/sql_server.rb +10 -2
- data/test/integration/storage_account.rb +32 -20
- data/test/integration/traffic_manager.rb +6 -1
- data/test/integration/virtual_network.rb +2 -1
- data/test/integration/virtual_network_gateway_connection.rb +3 -3
- data/test/models/application_gateway/test_gateway.rb +2 -1
- data/test/models/compute/test_availability_set.rb +2 -1
- data/test/models/compute/test_managed_disk.rb +2 -1
- data/test/models/compute/test_server.rb +13 -4
- data/test/models/dns/test_zone.rb +2 -1
- data/test/models/key_vault/test_vault.rb +2 -1
- data/test/models/network/test_load_balancer.rb +2 -1
- data/test/models/network/test_network_interface.rb +2 -1
- data/test/models/network/test_network_security_group.rb +2 -1
- data/test/models/network/test_public_ip.rb +2 -1
- data/test/models/network/test_virtual_network.rb +2 -1
- data/test/models/resources/test_resource_group.rb +2 -1
- data/test/models/sql/test_database.rb +2 -1
- data/test/models/sql/test_sql_server.rb +2 -1
- data/test/models/storage/test_storage_account.rb +2 -1
- data/test/models/traffic_manager/test_traffic_manager_profile.rb +2 -1
- data/test/requests/application_gateway/test_check_ag_exists.rb +11 -4
- data/test/requests/compute/test_attach_data_disk_to_vm.rb +2 -2
- data/test/requests/compute/test_check_availability_set_exists.rb +9 -2
- data/test/requests/compute/test_check_managed_disk_exists.rb +9 -2
- data/test/requests/compute/test_check_vm_exists.rb +9 -2
- data/test/requests/compute/test_check_vm_extension_exists.rb +9 -2
- data/test/requests/compute/test_create_image.rb +27 -0
- data/test/requests/compute/test_create_virtual_machine.rb +41 -17
- data/test/requests/compute/test_delete_image.rb +23 -0
- data/test/requests/compute/test_get_image.rb +23 -0
- data/test/requests/dns/test_check_record_set_exists.rb +9 -2
- data/test/requests/dns/test_check_zone_exists.rb +16 -2
- data/test/requests/key_vault/test_check_vault_exists.rb +9 -2
- data/test/requests/network/test_check_express_route_cir_auth_exists.rb +9 -2
- data/test/requests/network/test_check_express_route_circuit_exists.rb +9 -2
- data/test/requests/network/test_check_load_balancer_exists.rb +9 -2
- data/test/requests/network/test_check_local_net_gateway_exists.rb +11 -4
- data/test/requests/network/test_check_net_sec_group_exists.rb +9 -2
- data/test/requests/network/test_check_net_sec_rule_exists.rb +9 -2
- data/test/requests/network/test_check_network_interface_exists.rb +9 -2
- data/test/requests/network/test_check_public_ip_exists.rb +9 -2
- data/test/requests/network/test_check_subnet_exists.rb +9 -2
- data/test/requests/network/test_check_virtual_network_exists.rb +10 -4
- data/test/requests/network/test_check_vnet_gateway_connection_exists.rb +9 -2
- data/test/requests/network/test_check_vnet_gateway_exists.rb +9 -2
- data/test/requests/network/test_create_load_balancer.rb +3 -2
- data/test/requests/network/test_create_network_interface.rb +4 -3
- data/test/requests/network/test_create_or_update_network_security_group.rb +3 -2
- data/test/requests/network/test_create_or_update_virtual_network.rb +5 -3
- data/test/requests/network/test_create_public_ip.rb +3 -2
- data/test/requests/network/test_update_public_ip.rb +3 -2
- data/test/requests/resources/test_create_resource_group.rb +3 -2
- data/test/requests/resources/test_delete_resource_tag.rb +3 -3
- data/test/requests/resources/test_tag_resource.rb +3 -3
- data/test/requests/storage/test_check_storage_account_exists.rb +8 -1
- data/test/requests/traffic_manager/test_check_traffic_manager_endpoint_exists.rb +9 -2
- data/test/requests/traffic_manager/test_check_traffic_manager_profile_exists.rb +9 -2
- data/test/test_helper.rb +5 -14
- metadata +67 -75
- data/lib/fog/azurerm/models/storage/recovery_vault.rb +0 -50
- data/lib/fog/azurerm/models/storage/recovery_vaults.rb +0 -27
- data/lib/fog/azurerm/requests/storage/create_or_update_recovery_vault.rb +0 -54
- data/lib/fog/azurerm/requests/storage/delete_recovery_vault.rb +0 -35
- data/lib/fog/azurerm/requests/storage/disable_backup_protection.rb +0 -60
- data/lib/fog/azurerm/requests/storage/enable_backup_protection.rb +0 -61
- data/lib/fog/azurerm/requests/storage/get_all_backup_jobs.rb +0 -56
- data/lib/fog/azurerm/requests/storage/get_backup_container.rb +0 -53
- data/lib/fog/azurerm/requests/storage/get_backup_item.rb +0 -58
- data/lib/fog/azurerm/requests/storage/get_backup_job_for_vm.rb +0 -53
- data/lib/fog/azurerm/requests/storage/get_backup_protection_policy.rb +0 -64
- data/lib/fog/azurerm/requests/storage/get_recovery_vault.rb +0 -49
- data/lib/fog/azurerm/requests/storage/list_recovery_vaults.rb +0 -48
- data/lib/fog/azurerm/requests/storage/set_recovery_vault_context.rb +0 -36
- data/lib/fog/azurerm/requests/storage/start_backup.rb +0 -54
- data/test/api_stub/models/storage/recovery_vault.rb +0 -23
- data/test/api_stub/requests/storage/recovery_vault.rb +0 -189
- data/test/models/storage/test_recovery_vault.rb +0 -61
- data/test/models/storage/test_recovery_vaults.rb +0 -47
- data/test/requests/storage/test_create_recovery_vault.rb +0 -35
- data/test/requests/storage/test_delete_recovery_vault.rb +0 -34
- data/test/requests/storage/test_disable_backup_protection.rb +0 -52
- data/test/requests/storage/test_enable_backup_protection.rb +0 -66
- data/test/requests/storage/test_get_all_backup_jobs.rb +0 -35
- data/test/requests/storage/test_get_backup_container.rb +0 -35
- data/test/requests/storage/test_get_backup_item.rb +0 -35
- data/test/requests/storage/test_get_backup_job_for_vm.rb +0 -26
- data/test/requests/storage/test_get_backup_protection_policy.rb +0 -35
- data/test/requests/storage/test_get_recovery_vault.rb +0 -35
- data/test/requests/storage/test_list_recovery_vault.rb +0 -35
- data/test/requests/storage/test_set_recovery_vault_context.rb +0 -34
- data/test/requests/storage/test_start_backup.rb +0 -55
@@ -1,53 +0,0 @@
|
|
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
|
@@ -1,64 +0,0 @@
|
|
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
|
@@ -1,49 +0,0 @@
|
|
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
|
@@ -1,48 +0,0 @@
|
|
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
|
@@ -1,36 +0,0 @@
|
|
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
|
@@ -1,54 +0,0 @@
|
|
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
|
@@ -1,23 +0,0 @@
|
|
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
|
@@ -1,189 +0,0 @@
|
|
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
|