private List <T> CreateVMContextList <T>(string serviceName, NSM.DeploymentGetResponse deployment, List <NSM.Role> vmRoles) where T : PVM.PersistentVMRoleContext, new() { var roleContexts = new List <T>(); foreach (var vm in vmRoles) { var roleInstance = deployment.RoleInstances.FirstOrDefault( r => r.RoleName == vm.RoleName); if (roleInstance == null) { WriteWarning( string.Format(Resources.RoleInstanceCanNotBeFoundWithName, vm.RoleName)); } roleContexts.Add( CreateVMContext <T>( serviceName, vm, roleInstance, deployment)); } return(roleContexts); }
private List <T> GetVMContextList <T>(string serviceName, NSM.DeploymentGetResponse deployment) where T : PVM.PersistentVMRoleContext, new() { var vmRoles = new List <NSM.Role>(deployment.Roles.Where( r => string.IsNullOrEmpty(Name) || r.RoleName.Equals(Name, StringComparison.InvariantCultureIgnoreCase))); return(GetVMContextList <T>(serviceName, deployment, vmRoles)); }
protected override void ExecuteCommand() { ServiceManagementProfile.Initialize(); base.ExecuteCommand(); if (string.IsNullOrEmpty(ServiceName)) { var roleContexts = new List <PVM.PersistentVMRoleListContext>(); foreach (var service in this.ComputeClient.HostedServices.List()) { NSM.DeploymentGetResponse deployment = null; try { deployment = this.ComputeClient.Deployments.GetBySlot( service.ServiceName, NSM.DeploymentSlot.Production); } catch (CloudException e) { if (e.Response.StatusCode != HttpStatusCode.NotFound) { throw; } } if (deployment != null) { roleContexts.AddRange( GetVMContextList <PVM.PersistentVMRoleListContext>( service.ServiceName, deployment).AsEnumerable()); } } WriteObject(roleContexts, true); } else if (CurrentDeploymentNewSM != null) { var roleContexts = GetVMContextList <PVM.PersistentVMRoleContext>( ServiceName, CurrentDeploymentNewSM); WriteObject(roleContexts, true); } else { WriteWarning( string.Format(Resources.NoDeploymentFoundInService, ServiceName)); } }
private List <T> GetVMContextList <T>(string serviceName, NSM.DeploymentGetResponse deployment) where T : PVM.PersistentVMRoleContext, new() { Func <NSM.Role, bool> typeMatched = r => string.Equals(r.RoleType, PersistentVMRoleStr, StringComparison.OrdinalIgnoreCase); Func <NSM.Role, bool> nameMatched = r => string.IsNullOrEmpty(this.Name) || r.RoleName.Equals(this.Name, StringComparison.InvariantCultureIgnoreCase); var vmRoles = new List <NSM.Role>(deployment.Roles.Where(r => typeMatched(r) && nameMatched(r))); return(CreateVMContextList <T>(serviceName, deployment, vmRoles)); }
/// <summary> /// Walks through hosted services and returns back the ResourceExtensionStatus reported by Azure guest agent /// </summary> /// <param name="context"></param> /// <returns></returns> private List <NSM.ResourceExtensionStatus> GetResourceExtensionStatusList(VirtualMachineSqlServerExtensionContext context) { List <NSM.ResourceExtensionStatus> extensionStatusList = new List <NSM.ResourceExtensionStatus>(); // List all hosted services WriteVerboseWithTimestamp("Listing hosted services..."); NSM.HostedServiceListResponse response = this.ComputeClient.HostedServices.List(); WriteVerboseWithTimestamp("Listing hosted services completed."); foreach (var service in response) { NSM.DeploymentGetResponse deployment = null; try { deployment = this.ComputeClient.Deployments.GetBySlot( service.ServiceName, NSM.DeploymentSlot.Production); } catch (CloudException e) { if (e.Response.StatusCode != HttpStatusCode.NotFound) { throw; } } if (deployment != null) { // Enumerate Role instances , check if role name exists foreach (NSM.RoleInstance ri in deployment.RoleInstances) { if (ri.RoleName.Equals(context.RoleName, System.StringComparison.InvariantCulture)) { WriteVerboseWithTimestamp("Found Role Instance:" + context.RoleName); extensionStatusList = new List <NSM.ResourceExtensionStatus>(ri.ResourceExtensionStatusList); return(extensionStatusList); } } } } if (extensionStatusList.Count == 0) { WriteVerboseWithTimestamp("Could not locate role instance for role name:" + context.RoleName); } return(extensionStatusList); }
private NSM.DeploymentGetResponse CreateDeploymentGetResponse(string serviceName, IList <NSM.Role> roles, IList <NSM.RoleInstance> roleInstances) { var response = new NSM.DeploymentGetResponse { Name = serviceName, Configuration = "config", Status = Management.Compute.Models.DeploymentStatus.Starting, PersistentVMDowntime = new NSM.PersistentVMDowntime { EndTime = DateTime.Now, StartTime = DateTime.Now, Status = "", }, LastModifiedTime = DateTime.Now, Roles = roles, RoleInstances = roleInstances }; return(response); }
/// <summary> /// Retrieves dsc extension status for all virtual machine's in a cloud service or a given virtual machine from the deployment object /// </summary> /// <param name="deployment">Deployment that exists in the service</param> /// <returns></returns> internal List <VirtualMachineDscExtensionStatusContext> GetVirtualMachineDscStatusContextList(NSM.DeploymentGetResponse deployment) { var vmDscStatusContexts = new List <VirtualMachineDscExtensionStatusContext>(); //filter the deployment info for a vm, if specified. var vmRoles = new List <NSM.Role>(deployment.Roles.Where( r => (string.IsNullOrEmpty(Name) && string.IsNullOrEmpty(VmName)) || r.RoleName.Equals(Name, StringComparison.InvariantCultureIgnoreCase) || r.RoleName.Equals(VmName, StringComparison.InvariantCultureIgnoreCase))); foreach (var vm in vmRoles) { var roleInstance = deployment.RoleInstances.FirstOrDefault( r => r.RoleName == vm.RoleName); if (roleInstance == null) { WriteWarning( string.Format(CultureInfo.CurrentUICulture, Resources.RoleInstanceCanNotBeFoundWithName, vm.RoleName)); } var vmDscStatusContext = CreateDscStatusContext( vm, roleInstance); if (vmDscStatusContext != null) { vmDscStatusContexts.Add(vmDscStatusContext); } } return(vmDscStatusContexts); }
private T CreateVMContext <T>(string serviceName, NSM.Role vmRole, NSM.RoleInstance roleInstance, NSM.DeploymentGetResponse deployment) where T : PVM.PersistentVMRoleContext, new() { var vmContext = new T { ServiceName = serviceName, DeploymentName = deployment == null ? string.Empty : deployment.Name, DNSName = deployment == null || deployment.Uri == null ? string.Empty : deployment.Uri.AbsoluteUri, Name = vmRole == null ? string.Empty : vmRole.RoleName, AvailabilitySetName = vmRole == null ? string.Empty : vmRole.AvailabilitySetName, Label = vmRole == null ? string.Empty : vmRole.Label, InstanceSize = vmRole == null ? string.Empty : vmRole.RoleSize, InstanceStatus = roleInstance == null ? string.Empty : roleInstance.InstanceStatus, IpAddress = roleInstance == null ? string.Empty : roleInstance.IPAddress, PublicIPAddress = roleInstance == null ? string.Empty : roleInstance.PublicIPs == null || !roleInstance.PublicIPs.Any() ? string.Empty : roleInstance.PublicIPs.First().Address, PublicIPName = roleInstance == null ? string.Empty : roleInstance.PublicIPs == null || !roleInstance.PublicIPs.Any() ? string.Empty : !string.IsNullOrEmpty(roleInstance.PublicIPs.First().Name) ? roleInstance.PublicIPs.First().Name : PersistentVMHelper.GetPublicIPName(vmRole), PublicIPDomainNameLabel = roleInstance == null ? string.Empty : roleInstance.PublicIPs == null || !roleInstance.PublicIPs.Any() ? string.Empty : roleInstance.PublicIPs.First().DomainNameLabel, PublicIPFqdns = roleInstance == null ? new List <string>() : roleInstance.PublicIPs == null || !roleInstance.PublicIPs.Any() ? new List <string>() : roleInstance.PublicIPs.First().Fqdns.ToList(), InstanceStateDetails = roleInstance == null ? string.Empty : roleInstance.InstanceStateDetails, PowerState = roleInstance == null ? string.Empty : roleInstance.PowerState.ToString(), HostName = roleInstance == null ? string.Empty : roleInstance.HostName, InstanceErrorCode = roleInstance == null ? string.Empty : roleInstance.InstanceErrorCode, InstanceName = roleInstance == null ? string.Empty : roleInstance.InstanceName, InstanceFaultDomain = roleInstance == null ? string.Empty : roleInstance.InstanceFaultDomain.HasValue ? roleInstance.InstanceFaultDomain.Value.ToString(CultureInfo.InvariantCulture) : null, InstanceUpgradeDomain = roleInstance == null ? string.Empty : roleInstance.InstanceUpgradeDomain.HasValue ? roleInstance.InstanceUpgradeDomain.Value.ToString(CultureInfo.InvariantCulture) : null, Status = roleInstance == null ? string.Empty : roleInstance.InstanceStatus, GuestAgentStatus = roleInstance == null ? null : ServiceManagementProfile.Mapper.Map <PVM.GuestAgentStatus>(roleInstance.GuestAgentStatus), MaintenanceStatus = roleInstance == null ? null : ServiceManagementProfile.Mapper.Map <PVM.MaintenanceStatus>(roleInstance.MaintenanceStatus), ResourceExtensionStatusList = roleInstance == null ? null : ServiceManagementProfile.Mapper.Map <List <PVM.ResourceExtensionStatus> >(roleInstance.ResourceExtensionStatusList), OperationId = deployment == null ? string.Empty : deployment.RequestId, OperationStatus = deployment == null ? string.Empty : deployment.StatusCode.ToString(), OperationDescription = CommandRuntime.ToString(), NetworkInterfaces = roleInstance == null ? null : ServiceManagementProfile.Mapper.Map <PVM.NetworkInterfaceList>(roleInstance.NetworkInterfaces), VirtualNetworkName = deployment == null ? null : deployment.VirtualNetworkName, RemoteAccessCertificateThumbprint = roleInstance == null ? string.Empty : roleInstance.RemoteAccessCertificateThumbprint, VM = new PVM.PersistentVM { AvailabilitySetName = vmRole == null ? string.Empty : vmRole.AvailabilitySetName, Label = vmRole == null ? string.Empty : vmRole.Label, RoleName = vmRole == null ? string.Empty : vmRole.RoleName, RoleSize = vmRole == null ? string.Empty : vmRole.RoleSize, RoleType = vmRole == null ? string.Empty : vmRole.RoleType, DefaultWinRmCertificateThumbprint = vmRole == null ? string.Empty : vmRole.DefaultWinRmCertificateThumbprint, ProvisionGuestAgent = vmRole == null ? null : vmRole.ProvisionGuestAgent, ResourceExtensionReferences = vmRole == null ? null : ServiceManagementProfile.Mapper.Map <PVM.ResourceExtensionReferenceList>(vmRole.ResourceExtensionReferences), DataVirtualHardDisks = vmRole == null ? null : ServiceManagementProfile.Mapper.Map <Collection <PVM.DataVirtualHardDisk> >(vmRole.DataVirtualHardDisks), OSVirtualHardDisk = vmRole == null ? null : ServiceManagementProfile.Mapper.Map <PVM.OSVirtualHardDisk>(vmRole.OSVirtualHardDisk), ConfigurationSets = vmRole == null ? null : PersistentVMHelper.MapConfigurationSets(vmRole.ConfigurationSets), DebugSettings = (vmRole == null || vmRole.DebugSettings == null) ? null : ServiceManagementProfile.Mapper.Map <PVM.DebugSettings>(vmRole.DebugSettings), MigrationState = vmRole == null ? string.Empty : vmRole.MigrationState, LicenseType = vmRole == null ? string.Empty : vmRole.LicenseType } }; return(vmContext); }
private NSM.DeploymentGetResponse CreateDeploymentGetResponse(string serviceName, IList<NSM.Role> roles, IList<NSM.RoleInstance> roleInstances) { var response = new NSM.DeploymentGetResponse { Name = serviceName, Configuration = "config", Status = Management.Compute.Models.DeploymentStatus.Starting, PersistentVMDowntime = new NSM.PersistentVMDowntime { EndTime = DateTime.Now, StartTime = DateTime.Now, Status = "", }, LastModifiedTime = DateTime.Now, Roles = roles, RoleInstances = roleInstances }; return response; }