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.
- checksums.yaml +4 -4
- data/CHANGELOG.md +0 -5
- data/fog-azure-rm.gemspec +1 -1
- data/lib/fog/azurerm/compute.rb +2 -0
- data/lib/fog/azurerm/docs/storage.md +66 -0
- data/lib/fog/azurerm/models/compute/creation_data.rb +4 -2
- data/lib/fog/azurerm/models/compute/data_disk.rb +26 -0
- data/lib/fog/azurerm/models/compute/managed_disk.rb +5 -4
- data/lib/fog/azurerm/models/compute/server.rb +24 -3
- data/lib/fog/azurerm/models/storage/recovery_vault.rb +50 -0
- data/lib/fog/azurerm/models/storage/recovery_vaults.rb +27 -0
- data/lib/fog/azurerm/requests/compute/attach_data_disk_to_vm.rb +49 -13
- data/lib/fog/azurerm/requests/compute/detach_data_disk_from_vm.rb +1 -2
- data/lib/fog/azurerm/requests/storage/create_or_update_recovery_vault.rb +54 -0
- data/lib/fog/azurerm/requests/storage/delete_recovery_vault.rb +35 -0
- data/lib/fog/azurerm/requests/storage/disable_backup_protection.rb +60 -0
- data/lib/fog/azurerm/requests/storage/enable_backup_protection.rb +61 -0
- data/lib/fog/azurerm/requests/storage/get_all_backup_jobs.rb +56 -0
- data/lib/fog/azurerm/requests/storage/get_backup_container.rb +53 -0
- data/lib/fog/azurerm/requests/storage/get_backup_item.rb +58 -0
- data/lib/fog/azurerm/requests/storage/get_backup_job_for_vm.rb +53 -0
- data/lib/fog/azurerm/requests/storage/get_backup_protection_policy.rb +64 -0
- data/lib/fog/azurerm/requests/storage/get_recovery_vault.rb +49 -0
- data/lib/fog/azurerm/requests/storage/list_recovery_vaults.rb +48 -0
- data/lib/fog/azurerm/requests/storage/set_recovery_vault_context.rb +36 -0
- data/lib/fog/azurerm/requests/storage/start_backup.rb +54 -0
- data/lib/fog/azurerm/storage.rb +18 -1
- data/lib/fog/azurerm/version.rb +1 -1
- data/test/api_stub.rb +2 -0
- data/test/api_stub/models/compute/server.rb +62 -0
- data/test/api_stub/models/storage/recovery_vault.rb +23 -0
- data/test/api_stub/requests/compute/virtual_machine.rb +77 -0
- data/test/api_stub/requests/storage/recovery_vault.rb +189 -0
- data/test/models/{storage → compute}/test_data_disk.rb +2 -2
- data/test/models/compute/test_server.rb +27 -1
- data/test/models/storage/test_recovery_vault.rb +61 -0
- data/test/models/storage/test_recovery_vaults.rb +47 -0
- data/test/requests/compute/test_attach_data_disk_to_vm.rb +21 -6
- data/test/requests/storage/test_create_recovery_vault.rb +35 -0
- data/test/requests/storage/test_delete_recovery_vault.rb +34 -0
- data/test/requests/storage/test_disable_backup_protection.rb +52 -0
- data/test/requests/storage/test_enable_backup_protection.rb +66 -0
- data/test/requests/storage/test_get_all_backup_jobs.rb +35 -0
- data/test/requests/storage/test_get_backup_container.rb +35 -0
- data/test/requests/storage/test_get_backup_item.rb +35 -0
- data/test/requests/storage/test_get_backup_job_for_vm.rb +26 -0
- data/test/requests/storage/test_get_backup_protection_policy.rb +35 -0
- data/test/requests/storage/test_get_recovery_vault.rb +35 -0
- data/test/requests/storage/test_list_recovery_vault.rb +35 -0
- data/test/requests/storage/test_set_recovery_vault_context.rb +34 -0
- data/test/requests/storage/test_start_backup.rb +55 -0
- data/test/test_helper.rb +14 -0
- metadata +38 -13
- data/.arclint +0 -8
- data/lib/fog/azurerm/models/storage/data_disk.rb +0 -27
| @@ -0,0 +1,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
         |