コード例 #1
0
 public void DeallocateVM()
 {
     if (virtualMachine == null)
     {
         return;
     }
     virtualMachine.Deallocate();
 }
コード例 #2
0
        public void StopVirtualMachine(String resourceId)
        {
            Microsoft.Azure.Management.Fluent.IAzure azureCredentials =
                new AzureCredentialProvider().LoginAzure();

            Console.WriteLine("Deallocating Virtual Machine...");

            IVirtualMachine virtualMachine = azureCredentials.VirtualMachines.GetById(resourceId);

            virtualMachine.PowerOff();
            virtualMachine.Deallocate();
        }
コード例 #3
0
        public Status SetPowerState()
        {
            Status status     = Status.NoChange;
            bool   isRunning  = false;
            string powerState = virtualMachine.PowerState.ToString();

            // Determine if VMs are being managed
            bool manage_vm = Convert.ToBoolean(settings.First(s => s.name == "manage_vms").value);

            // Only operate on the machine if it is running or deallocated
            // There are many states that the vm could be in so this needs to be guarded
            logger.LogDebug("{0} - {1}: Power state - {2}", resourceGroup.GetName(), GetName(), powerState);

            if (powerState.ToLower() == "powerstate/running" ||
                powerState.ToLower() == "powerstate/deallocated")
            {
                // Set the isRunning flag
                if (powerState.ToLower() == "powerstate/running")
                {
                    isRunning = true;
                }

                // Perform checks to see if this machine should be running
                bool permitted = ShouldBeRunning();

                if (isRunning && !permitted)
                {
                    logger.LogInformation("action=stop, resource_group={resourceGroup}, vm_name={vmName}, manage_vm={manage_vm}, message=Stop machine", resourceGroup.GetName(), GetName(), manage_vm.ToString());

                    if (manage_vm)
                    {
                        virtualMachine.Deallocate();
                    }

                    status = Status.Stopped;
                }

                if (!isRunning && permitted)
                {
                    logger.LogInformation("action=start, resource_group={resourceGroup}, vm_name={vmName}, manage_vm={manage_vm}, message=Start machine", resourceGroup.GetName(), GetName(), manage_vm.ToString());

                    if (manage_vm)
                    {
                        virtualMachine.Start();
                    }

                    status = Status.Started;
                }
            }

            return(status);
        }
コード例 #4
0
        private IVirtualMachineCustomImage PrepareCustomImage(string rgName, Region region, IAzure azure)
        {
            string vmName   = TestUtilities.GenerateName("muldvm");
            string uname    = "javauser";
            string password = "******";
            KnownLinuxVirtualMachineImage linuxImage = KnownLinuxVirtualMachineImage.UbuntuServer16_04_Lts;
            string          publicIpDnsLabel         = TestUtilities.GenerateName("pip");
            string          storageName = TestUtilities.GenerateName("stg");
            IVirtualMachine linuxVM     = azure.VirtualMachines
                                          .Define(vmName)
                                          .WithRegion(region)
                                          .WithExistingResourceGroup(rgName)
                                          .WithNewPrimaryNetwork("10.0.0.0/28")
                                          .WithPrimaryPrivateIPAddressDynamic()
                                          .WithNewPrimaryPublicIPAddress(publicIpDnsLabel)
                                          .WithPopularLinuxImage(linuxImage)
                                          .WithRootUsername(uname)
                                          .WithRootPassword(password)
                                          .WithUnmanagedDisks()
                                          .DefineUnmanagedDataDisk("disk-1")
                                          .WithNewVhd(30)
                                          .WithCaching(CachingTypes.ReadWrite)
                                          .Attach()
                                          .DefineUnmanagedDataDisk("disk-2")
                                          .WithNewVhd(60)
                                          .WithCaching(CachingTypes.ReadOnly)
                                          .Attach()
                                          .WithSize(VirtualMachineSizeTypes.Parse("Standard_D2a_v4"))
                                          .WithNewStorageAccount(storageName)
                                          .WithOSDiskCaching(CachingTypes.ReadWrite)
                                          .Create();

            //
            TestHelper.DeprovisionAgentInLinuxVM(linuxVM.GetPrimaryPublicIPAddress().Fqdn, 22, uname, password);
            //
            linuxVM.Deallocate();
            linuxVM.Generalize();
            //
            string vhdBasedImageName = TestUtilities.GenerateName("img");
            //
            var creatableDisk = azure
                                .VirtualMachineCustomImages
                                .Define(vhdBasedImageName)
                                .WithRegion(region)
                                .WithExistingResourceGroup(rgName)
                                .WithLinuxFromVhd(linuxVM.OSUnmanagedDiskVhdUri, OperatingSystemStateTypes.Generalized)
                                .WithOSDiskCaching(linuxVM.OSDiskCachingType);

            foreach (IVirtualMachineUnmanagedDataDisk disk in linuxVM.UnmanagedDataDisks.Values)
            {
                creatableDisk.DefineDataDiskImage()
                .WithLun(disk.Lun)
                .FromVhd(disk.VhdUri)
                .WithDiskCaching(disk.CachingType)
                .WithDiskSizeInGB(disk.Size + 10)         // Resize each data disk image by +10GB
                .Attach();
            }
            //
            IVirtualMachineCustomImage customImage = creatableDisk.Create();

            return(customImage);
        }