Пример #1
0
        private void TestVMWithOSProfile(
            bool useWindowsProfile,
            Action <VirtualMachine> vmCustomizer = null,
            Action <VirtualMachine> vmValidator  = null)
        {
            string rgName             = TestUtilities.GenerateName(TestPrefix);
            string storageAccountName = TestUtilities.GenerateName(TestPrefix);
            string asName             = TestUtilities.GenerateName("as");

            string imgRefId = GetPlatformOSImage(useWindowsProfile);

            VirtualMachine inputVM;

            try
            {
                StorageAccount storageAccountOutput = CreateStorageAccount(rgName, storageAccountName);

                VirtualMachine vm = CreateVM(rgName, asName, storageAccountOutput, imgRefId, out inputVM, vmCustomizer);

                // TODO: Remove these 2 lines once tested against prod (re-recording occurs).
                // These 2 lines are needed since the previous operation does a Get, which in the old recording does not
                // return the CreateOptionType required field.
                vm.StorageProfile.DataDisks.ForEach(dd => dd.CreateOption = DiskCreateOptionTypes.Empty);
                vm.StorageProfile.OSDisk.CreateOption = DiskCreateOptionTypes.Empty;

                VirtualMachineGetResponse getVMWithInstanceViewResponse =
                    m_CrpClient.VirtualMachines.GetWithInstanceView(rgName, inputVM.Name);
                Assert.True(getVMWithInstanceViewResponse.StatusCode == HttpStatusCode.OK);
                ValidateVMInstanceView(inputVM, getVMWithInstanceViewResponse.VirtualMachine);

                var lroResponse = m_CrpClient.VirtualMachines.CreateOrUpdate(rgName, vm);
                Assert.True(lroResponse.Status == ComputeOperationStatus.Succeeded);
                if (vmValidator != null)
                {
                    vmValidator(vm);
                }

                var deleteOperationResponse = m_CrpClient.VirtualMachines.BeginDeleting(rgName, vm.Name);
                Assert.True(deleteOperationResponse.StatusCode == HttpStatusCode.Accepted);

                // TODO: VM delete operation takes too long, disable it for now
                // lroResponse = m_CrpClient.VirtualMachines.Delete(rgName, vm.Name);
                // Assert.True(lroResponse.Status == ComputeOperationStatus.Succeeded);
            }
            finally
            {
                if (m_ResourcesClient != null)
                {
                    // TODO: RG delete operation takes too long, disable it for now
                    // var deleteResourceGroupResponse = m_ResourcesClient.ResourceGroups.Delete(rgName);
                    // Assert.True(deleteResourceGroupResponse.StatusCode == HttpStatusCode.OK);
                    var deleteResourceGroupResponse = m_ResourcesClient.ResourceGroups.BeginDeleting(rgName);
                    Assert.True(deleteResourceGroupResponse.StatusCode == HttpStatusCode.Accepted);
                }
            }
        }
        public static PSVirtualMachineInstanceView ToPSVirtualMachineInstanceView(
            this VirtualMachineGetResponse response,
            string resourceGroupName = null,
            string vmName            = null)
        {
            if (response == null)
            {
                return(null);
            }

            return(response.VirtualMachine.InstanceView.ToPSVirtualMachineInstanceView(resourceGroupName, vmName));
        }
Пример #3
0
        private void TestVMWithOSProfile(
            string rgName,
            bool useWindowsProfile,
            Action <VirtualMachine> vmCustomizer = null,
            Action <VirtualMachine> vmValidator  = null)
        {
            string storageAccountName = TestUtilities.GenerateName(TestPrefix);
            string asName             = TestUtilities.GenerateName("as");

            ImageReference imageRef = GetPlatformVMImage(useWindowsProfile);

            VirtualMachine inputVM;

            try
            {
                StorageAccount storageAccountOutput = CreateStorageAccount(rgName, storageAccountName);

                VirtualMachine vm = CreateVM_NoAsyncTracking(rgName, asName, storageAccountOutput, imageRef, out inputVM, vmCustomizer);

                VirtualMachineGetResponse getVMWithInstanceViewResponse = m_CrpClient.VirtualMachines.GetWithInstanceView(rgName, inputVM.Name);
                Assert.True(getVMWithInstanceViewResponse.StatusCode == HttpStatusCode.OK);
                ValidateVMInstanceView(inputVM, getVMWithInstanceViewResponse.VirtualMachine);

                var lroResponse = m_CrpClient.VirtualMachines.CreateOrUpdate(rgName, vm);
                Assert.True(lroResponse.Status == ComputeOperationStatus.Succeeded);
                if (vmValidator != null)
                {
                    vmValidator(vm);
                }

                var deleteOperationResponse = m_CrpClient.VirtualMachines.BeginDeleting(rgName, vm.Name);
                Assert.True(deleteOperationResponse.StatusCode == HttpStatusCode.Accepted);

                // TODO: VM delete operation takes too long, disable it for now
                // lroResponse = m_CrpClient.VirtualMachines.Delete(rgName, vm.Name);
                // Assert.True(lroResponse.Status == ComputeOperationStatus.Succeeded);
            }
            finally
            {
                if (m_ResourcesClient != null)
                {
                    // TODO: RG delete operation takes too long, disable it for now
                    // var deleteResourceGroupResponse = m_ResourcesClient.ResourceGroups.Delete(rgName);
                    // Assert.True(deleteResourceGroupResponse.StatusCode == HttpStatusCode.OK);
                    var deleteResourceGroupResponse = m_ResourcesClient.ResourceGroups.BeginDeleting(rgName);
                    Assert.True(deleteResourceGroupResponse.StatusCode == HttpStatusCode.Accepted);
                }
            }
        }
Пример #4
0
        /// <summary>
        /// remove the vmbackups with the metadata  key "vmbackuptag" and value snapshotTag, snapshotTag is the parameter passed in.
        /// </summary>
        /// <param name="resourceGroupName"></param>
        /// <param name="vmName"></param>
        /// <param name="virtualMachineExtensionType"></param>
        /// <param name="location"></param>
        /// <param name="virtualMachineResponse"></param>
        /// <param name="profile"></param>
        /// <param name="VirtualMachineExtensionClient"></param>
        /// <param name="snapshotTag"></param>
        public void RemoveSnapshot(AzureVMBackupConfig vmConfig, string snapshotTag, VirtualMachineExtensionBaseCmdlet virtualMachineExtensionBaseCmdlet)
        {
            VirtualMachineGetResponse virtualMachineResponse = virtualMachineExtensionBaseCmdlet.ComputeClient.ComputeManagementClient.VirtualMachines.GetWithInstanceView(vmConfig.ResourceGroupName, vmConfig.VMName);
            StorageManagementClient   storageClient          = AzureSession.ClientFactory.CreateClient <StorageManagementClient>(virtualMachineExtensionBaseCmdlet.DefaultProfile.Context, AzureEnvironment.Endpoint.ResourceManager);

            StorageCredentialsFactory storageCredentialsFactory = new StorageCredentialsFactory(vmConfig.ResourceGroupName, storageClient, virtualMachineExtensionBaseCmdlet.DefaultProfile.Context.Subscription);

            List <string> blobUris = this.GetDiskBlobUris(virtualMachineResponse.VirtualMachine);

            Dictionary <string, string> snapshotQuery = new Dictionary <string, string>();
            List <CloudPageBlob>        snapshots     = this.FindSnapshot(blobUris, snapshotQuery, storageCredentialsFactory);

            foreach (CloudPageBlob snapshot in snapshots)
            {
                snapshot.Delete();
            }
        }
Пример #5
0
        protected override void ProcessRecord()
        {
            base.ProcessRecord();

            VirtualMachineGetResponse virtualMachineResponse = this.ComputeClient.ComputeManagementClient.VirtualMachines.GetWithInstanceView(this.ResourceGroupName, VMName);
            string currentOSType = virtualMachineResponse.VirtualMachine.StorageProfile.OSDisk.OperatingSystemType;

            if (string.Equals(currentOSType, "Linux", StringComparison.InvariantCultureIgnoreCase))
            {
                AzureVMBackupExtensionUtil util     = new AzureVMBackupExtensionUtil();
                AzureVMBackupConfig        vmConfig = new AzureVMBackupConfig();
                vmConfig.ResourceGroupName           = ResourceGroupName;
                vmConfig.VMName                      = VMName;
                vmConfig.VirtualMachineExtensionType = VirtualMachineExtensionType;
                util.RemoveSnapshot(vmConfig, Tag, this);
            }
            else
            {
                ThrowTerminatingError(new ErrorRecord(new ArgumentException(string.Format(CultureInfo.CurrentUICulture, "The VM should be a Linux VM")),
                                                      "InvalidArgument",
                                                      ErrorCategory.InvalidArgument,
                                                      null));
            }
        }