private static async Task SetupAndTearDownVirtualMachine(VMManagementControllerParameters managementControllerParameters) { using (VMManagementController controller = new VMManagementController(managementControllerParameters)) { // Retrieve a list of available images and display a choice of Windows images Console.WriteLine("Please choose an OS image to use:"); var images = await controller.GetImagesList(); var windowsImages = images.Where(i => i.OperatingSystemType == "Windows" && i.PublisherName == "Microsoft Windows Server Group"); for (int i = 0; i < windowsImages.Count(); i++) { Console.WriteLine(i + 1 + ". " + windowsImages.ElementAt(i).Label); } var imageId = Console.ReadLine(); // Keep a reference to the chosen image var imageToGet = windowsImages.ElementAt(int.Parse(imageId) - 1); // Start the steps to create the VM Console.WriteLine("1. Creating Storage Account named {0} in Region {1}...", managementControllerParameters.StorageAccountName, managementControllerParameters.Region); // Create the Storage Account await controller.CreateStorageAccount(); Console.WriteLine("...Complete"); Console.WriteLine("2. Creating a Cloud Service named {0} in Region {1}", managementControllerParameters.CloudServiceName, managementControllerParameters.Region); ConsoleContinuePrompt("Create the Cloud Service"); // Create the Cloud Service await controller.CreateCloudService(); Console.WriteLine("...Complete"); Console.WriteLine("3. Create the Virtual Machine"); ConsoleContinuePrompt("Create the VM"); // Create the Virtual Machine await controller.CreateVirtualMachine(imageToGet.Name); // Wait for the Virtual Machine to be ready controller.PollVMStatus("ReadyRole", 5, (s) => { Console.WriteLine("Waiting... Current status: " + s); }); Console.WriteLine("...Complete. You can now log on the Virtual Machine."); Console.WriteLine("4. Shut down the Virtual Machine and deallocate resources"); ConsoleContinuePrompt("Shutdown the VM"); // Shutdown the Virtual Machine await controller.StopVirtualMachine(true); // Wait for the Virtual Machine to be stopped controller.PollVMStatus("StoppedDeallocated", 5, (s) => { Console.WriteLine("Waiting... Current status: " + s); }); Console.WriteLine("...Complete."); Console.WriteLine("5. Start the Virtual Machine again"); ConsoleContinuePrompt("Start the VM"); // Shutdown the Virtual Machine await controller.StartVirtualMachine(); // Wait for the Virtual Machine to be ready controller.PollVMStatus("ReadyRole", 5, (s) => { Console.WriteLine("Waiting... Current status: " + s); }); Console.WriteLine("...Complete. You can now log back on the Virtual Machine."); Console.WriteLine("6. Delete Virtual Machine"); ConsoleContinuePrompt("Delete the VM"); // Delete the Virtual Machine await controller.DeleteVirtualMachine(); // Wait for the disk to disappear controller.PollVHDBlob(5, () => { Console.WriteLine("Waiting..."); }); Console.WriteLine("...Complete"); Console.WriteLine("7. Delete Storage Account {0}", managementControllerParameters.StorageAccountName); ConsoleContinuePrompt("Delete the Storage Account"); // Delete the Storage Account await controller.DeleteStorageAccount(); Console.WriteLine("...Complete"); } }
private static async Task SetupAndTearDownVirtualMachine(VMManagementControllerParameters managementControllerParameters) { using (VMManagementController controller = new VMManagementController(managementControllerParameters)) { // Retrieve a list of available images and display a choice of Windows images Console.WriteLine("Please choose an OS image to use:"); var images = await controller.GetImagesList(); var windowsImages = images.Where(i => i.OperatingSystemType == "Windows" && i.PublisherName == "Microsoft Windows Server Group"); for (int i = 0; i < windowsImages.Count(); i++) { Console.WriteLine(i + 1 + ". " + windowsImages.ElementAt(i).Label); } var imageId = Console.ReadLine(); // Keep a reference to the chosen image var imageToGet = windowsImages.ElementAt(int.Parse(imageId) - 1); // Start the steps to create the VM Console.WriteLine("1. Creating Storage Account named {0} in Region {1}...", managementControllerParameters.StorageAccountName, managementControllerParameters.Region); // Create the Storage Account await controller.CreateStorageAccount(); Console.WriteLine("...Complete"); Console.WriteLine("2. Creating a Cloud Service named {0} in Region {1}", managementControllerParameters.CloudServiceName, managementControllerParameters.Region); ConsoleContinuePrompt("Create the Cloud Service"); // Create the Cloud Service await controller.CreateCloudService(); Console.WriteLine("...Complete"); Console.WriteLine("3. Create the Virtual Machine"); ConsoleContinuePrompt("Create the VM"); // Create the Virtual Machine await controller.CreateVirtualMachine(imageToGet.Name); // Wait for the Virtual Machine to be ready controller.PollVMStatus("ReadyRole", 5, (s) => { Console.WriteLine("Waiting... Current status: " + s); }); Console.WriteLine("...Complete. You can now log on the Virtual Machine."); Console.WriteLine("4. Shut down the Virtual Machine and deallocate resources"); ConsoleContinuePrompt("Shutdown the VM"); // Shutdown the Virtual Machine await controller.StopVirtualMachine(true); // Wait for the Virtual Machine to be stopped controller.PollVMStatus("StoppedDeallocated", 5, (s) => { Console.WriteLine("Waiting... Current status: " + s); }); Console.WriteLine("...Complete."); Console.WriteLine("5. Start the Virtual Machine again"); ConsoleContinuePrompt("Start the VM"); // Shutdown the Virtual Machine await controller.StartVirtualMachine(); // Wait for the Virtual Machine to be ready controller.PollVMStatus("ReadyRole", 5, (s) => { Console.WriteLine("Waiting... Current status: " + s); }); Console.WriteLine("...Complete. You can now log back on the Virtual Machine."); Console.WriteLine("6. Delete Virtual Machine"); ConsoleContinuePrompt("Delete the VM"); // Delete the Virtual Machine await controller.DeleteVirtualMachine(); // Wait for the disk to disappear controller.PollVHDBlob(5, () => { Console.WriteLine("Waiting..."); }); Console.WriteLine("...Complete"); Console.WriteLine("7. Delete Storage Account {0}", managementControllerParameters.StorageAccountName); ConsoleContinuePrompt("Delete the Storage Account"); // Delete the Storage Account await controller.DeleteStorageAccount(); Console.WriteLine("...Complete"); } }