private Task <HostedServiceGetDetailedResponse> CreateGetDetailedResponse(string serviceName) { var service = Services.FirstOrDefault(s => s.Name == serviceName); Task <HostedServiceGetDetailedResponse> resultTask; if (service != null) { var response = new HostedServiceGetDetailedResponse { ServiceName = service.Name, StatusCode = HttpStatusCode.OK, }; if (service.ProductionDeployment != null) { response.Deployments.Add(CreateDeploymentResponse(service.ProductionDeployment)); } if (service.StagingDeployment != null) { response.Deployments.Add(CreateDeploymentResponse(service.StagingDeployment)); } resultTask = Tasks.FromResult(response); } else { resultTask = Tasks.FromException <HostedServiceGetDetailedResponse>(ClientMocks.Make404Exception()); } return(resultTask); }
public async Task <Byte[]> GetRdpAsync(string virtualMachineName, string cloudServiceName) { VirtualMachineGetRemoteDesktopFileResponse response = null; using (var computeClient = new ComputeManagementClient(_credentials)) { var VMOperations = computeClient.VirtualMachines; var details = await computeClient.HostedServices.GetDetailedAsync(cloudServiceName); HostedServiceGetDetailedResponse cs = await computeClient.HostedServices.GetDetailedAsync(cloudServiceName); Console.WriteLine("Found cloud service: " + cloudServiceName); Console.WriteLine("Fetching deployment."); //var deployment = cs.Deployments.ToList().First(x => x.Name == virtualMachineName); var deployment = cs.Deployments.ToList().First(x => x.Name == "brent1"); if (deployment != null) { response = await VirtualMachineOperationsExtensions.GetRemoteDesktopFileAsync(VMOperations, cloudServiceName, deployment.Name, virtualMachineName); } } return(response.RemoteDesktopFile); }
private void VerifyDeploymentExists(HostedServiceGetDetailedResponse cloudService, DeploymentSlot slot) { bool exists = false; if (cloudService.Deployments != null) { exists = cloudService.Deployments.Any(d => d.DeploymentSlot == slot); } if (!exists) { throw new Exception(string.Format(Resources.CannotFindDeployment, cloudService.ServiceName, slot)); } }
private bool DeploymentExists(string name, DeploymentSlot slot) { HostedServiceGetDetailedResponse cloudService = GetCloudService(name); try { VerifyDeploymentExists(cloudService, slot); return(true); } catch (Exception) { return(false); } }
private void SetCloudServiceState(string name, DeploymentSlot slot, CloudServiceState state) { HostedServiceGetDetailedResponse cloudService = GetCloudService(name); VerifyDeploymentExists(cloudService, slot); ComputeClient.Deployments.UpdateStatusByDeploymentSlot(cloudService.ServiceName, slot, new DeploymentUpdateStatusParameters { Status = state == CloudServiceState.Start ? UpdatedDeploymentStatus.Running : UpdatedDeploymentStatus.Suspended }); }
private bool DeploymentExists(string name, DeploymentSlot slot, out string deploymentName) { HostedServiceGetDetailedResponse cloudService = GetCloudService(name); deploymentName = null; try { VerifyDeploymentExists(cloudService, slot, out deploymentName); return true; } catch (Exception) { return false; } }
private void VerifyDeploymentExists(HostedServiceGetDetailedResponse cloudService, DeploymentSlot slot) { bool exists = false; if (cloudService.Deployments != null) { exists = cloudService.Deployments.Any(d => d.DeploymentSlot == slot ); } if (!exists) { throw new Exception(string.Format(Resources.CannotFindDeployment, cloudService.ServiceName, slot)); } }
/// <summary> /// Writes selected fields of the give HostedServiceGetDetailedResponse /// object out to the console. /// </summary> /// <param name="service"> /// The HostedServiceGetDetailedResponse object to display. /// </param> private static void DisplayServiceInformation(HostedServiceGetDetailedResponse service) { Console.WriteLine("Service Name {0}:", service.ServiceName); Console.WriteLine(" Date Created = {0}", service.Properties.DateCreated); Console.WriteLine(" Date Last Modified = {0}", service.Properties.DateLastModified); Console.WriteLine(" Description = {0}", service.Properties.Description); Console.WriteLine(" Label = {0}", service.Properties.Label); Console.WriteLine(" Location = {0}", service.Properties.Location); Console.WriteLine(" Status = {0}", service.Properties.Status); #if false foreach (string size in service.ComputeCapabilities.VirtualMachinesRoleSizes) { Console.WriteLine("VM Role Size = {0}", size); } Console.WriteLine("URI = {0}", service.Uri); #endif if (service.Deployments.Count == 0) { Console.WriteLine(" No current deployments!"); } foreach (HostedServiceGetDetailedResponse.Deployment deployment in service.Deployments) { Console.WriteLine(); Console.WriteLine(" Deployment Name {0}:", deployment.Name); Console.WriteLine(" Created = {0}", deployment.CreatedTime); Console.WriteLine(" Label = {0}", deployment.Label); Console.WriteLine(" Slot = {0}", deployment.DeploymentSlot); Console.WriteLine(" Status = {0}", deployment.Status); Console.WriteLine(" Instances = {0}", deployment.RoleInstances.Count); ////Console.WriteLine(deployment.Configuration); } }
/// <summary> /// Main program entry point. /// </summary> /// <param name="args">The parameter is unused.</param> private static void Main(string[] args) { Console.WriteLine(); // Set some defaults. string packageFilename = DefaultPackageFilename; string configurationFilename = DefaultConfigurationFilename; int instanceCount = DefaultInstanceCount; string command = "status"; // Parse command line arguments. if (args.Length > 0) { command = args[0].ToLower(); if (args.Length > 1) { if (command == "start") { if (!int.TryParse(args[1], out instanceCount)) { Usage(-1); } } else { packageFilename = args[1]; } if (args.Length > 2) { configurationFilename = args[2]; } } } // Get our Azure account information. AzureAccount azureAccount = GetOurAzureAccount(); // Perform user requested action. CloudBlockBlob packageBlob; switch (command) { case "create": azureAccount.CreateServiceSpecification(NuBuildServiceName, "West US"); break; case "deploy": // Upload our package (.cspkg file) to a blob. // We name the blob after the package filename. string blobName = Path.GetFileNameWithoutExtension(packageFilename); packageBlob = GetPackageBlob(azureAccount, blobName); packageBlob.UploadFromFile(packageFilename, System.IO.FileMode.Open); // Create a new deployment using the desired package blob. // TODO: Provide an unique name for each deployment? // REVIEW: Upload to "Staging" slot instead? string configuration = File.ReadAllText(configurationFilename); azureAccount.DeployService(NuBuildServiceName, "Production", DeploymentSlot.Production, configuration, packageBlob.Uri, startImmediately: true); Console.WriteLine("Issued deployment request"); break; case "start": // Create a new deployment using a hard-coded configuration and a previously uploaded blob. ServiceConfiguration config = new ServiceConfiguration( NuBuildServiceName, "4", "*", "2014-06.2.4", "CloudExecutionWorker", instanceCount); packageBlob = GetPackageBlob(azureAccount, NuBuildServicePackageName); azureAccount.DeployService(NuBuildServiceName, "Production", DeploymentSlot.Production, config.ToXml(), packageBlob.Uri, startImmediately: true); Console.WriteLine("Issued deployment request"); break; case "status": HostedServiceGetDetailedResponse serviceInfo = azureAccount.GetServiceInformation(NuBuildServiceName); DisplayServiceInformation(serviceInfo); break; case "stop": // Delete the Azure deployment. // This stops the currently running service, but leaves the // configuration for this service in the Azure database. azureAccount.DeleteDeployment(NuBuildServiceName, DeploymentSlot.Production); break; case "test": ////azureAccount.TestSomething(); ServiceConfiguration testConfig = new ServiceConfiguration(NuBuildServiceName, "4", "*", "2014-06.2.4", "CloudExecutionWorker", 42); Console.WriteLine(testConfig.ToXml()); break; case "upload": // Upload our package (.cspkg file) to a blob. packageBlob = GetPackageBlob(azureAccount, NuBuildServicePackageName); packageBlob.UploadFromFile(packageFilename, System.IO.FileMode.Open); Console.WriteLine("Uploaded package"); break; case "/?": case "help": Usage(0); break; default: Usage(-1); break; } }
private Task<HostedServiceGetDetailedResponse> CreateGetDetailedResponse(string serviceName) { var service = Services.FirstOrDefault(s => s.Name == serviceName); Task<HostedServiceGetDetailedResponse> resultTask; if (service != null) { var response = new HostedServiceGetDetailedResponse { ServiceName = service.Name, StatusCode = HttpStatusCode.OK, }; if (service.ProductionDeployment != null) { response.Deployments.Add(CreateDeploymentResponse(service.ProductionDeployment)); } if (service.StagingDeployment != null) { response.Deployments.Add(CreateDeploymentResponse(service.StagingDeployment)); } resultTask = Tasks.FromResult(response); } else { resultTask = Tasks.FromException<HostedServiceGetDetailedResponse>(ClientMocks.Make404Exception()); } return resultTask; }