Ejemplo n.º 1
0
        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),
                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 : Mapper.Map <PVM.GuestAgentStatus>(roleInstance.GuestAgentStatus),
                ResourceExtensionStatusList = roleInstance == null ? null : 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 : Mapper.Map <PVM.NetworkInterfaceList>(roleInstance.NetworkInterfaces),
                VirtualNetworkName          = deployment == null ? null : deployment.VirtualNetworkName,
                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 : Mapper.Map <PVM.ResourceExtensionReferenceList>(vmRole.ResourceExtensionReferences),
                    DataVirtualHardDisks        = vmRole == null ? null : Mapper.Map <Collection <PVM.DataVirtualHardDisk> >(vmRole.DataVirtualHardDisks),
                    OSVirtualHardDisk           = vmRole == null ? null : Mapper.Map <PVM.OSVirtualHardDisk>(vmRole.OSVirtualHardDisk),
                    ConfigurationSets           = vmRole == null ? null : PersistentVMHelper.MapConfigurationSets(vmRole.ConfigurationSets)
                }
            };

            return(vmContext);
        }
        private NSM.RoleInstance CreateRoleInstance(String roleName)
        {
            var roleInstance = new NSM.RoleInstance
            {
                RoleName = roleName,
                ResourceExtensionStatusList = CreateResourceExtensionStatus()
            };

            return(roleInstance);
        }
        /// <summary>
        /// Creates dsc extension status object for a virtual machine
        /// </summary>
        /// <param name="vmRole">Details of a role in the deployment</param>
        /// <param name="roleInstance">Details of a specific role instance</param>
        /// <returns></returns>
        internal VirtualMachineDscExtensionStatusContext CreateDscStatusContext(NSM.Role vmRole, NSM.RoleInstance roleInstance)
        {
            var message   = string.Empty;
            var extension = VirtualMachineDscExtensionCmdletBase.ExtensionPublishedNamespace + "."
                            + VirtualMachineDscExtensionCmdletBase.ExtensionPublishedName;

            NSM.ResourceExtensionConfigurationStatus extensionSettingStatus = null;

            if (roleInstance != null && roleInstance.ResourceExtensionStatusList != null)
            {
                foreach (var resourceExtensionStatus in
                         roleInstance.ResourceExtensionStatusList.Where(
                             resourceExtensionStatus => resourceExtensionStatus.HandlerName.Equals(
                                 extension, StringComparison.InvariantCultureIgnoreCase)).
                         Where(resourceExtensionStatus => resourceExtensionStatus.ExtensionSettingStatus != null))
                {
                    extensionSettingStatus = resourceExtensionStatus.ExtensionSettingStatus;

                    if (extensionSettingStatus.SubStatusList == null)
                    {
                        continue;
                    }
                    var resourceExtensionSubStatusList = extensionSettingStatus.SubStatusList;
                    var resourceExtensionSubStatus     = resourceExtensionSubStatusList.FirstOrDefault();
                    if (resourceExtensionSubStatus == null || resourceExtensionSubStatus.FormattedMessage == null ||
                        resourceExtensionSubStatus.FormattedMessage.Message == null)
                    {
                        continue;
                    }
                    message = resourceExtensionSubStatus.FormattedMessage.Message.ToString(CultureInfo.CurrentUICulture);
                    break;
                }
            }

            if (extensionSettingStatus == null)
            {
                return(null);
            }

            var dscStatusContext = new VirtualMachineDscExtensionStatusContext
            {
                ServiceName   = Service,
                Name          = vmRole == null ? string.Empty : vmRole.RoleName,
                Status        = extensionSettingStatus.Status ?? string.Empty,
                StatusCode    = extensionSettingStatus.Code ?? -1,
                StatusMessage = (extensionSettingStatus.FormattedMessage == null ||
                                 extensionSettingStatus.FormattedMessage.Message == null) ? string.Empty :
                                extensionSettingStatus.FormattedMessage.Message.ToString(CultureInfo.CurrentUICulture),
                DscConfigurationLog = !string.Empty.Equals(message) ? message.Split(new[] { "\r\n", "\n" }, StringSplitOptions.None) : new List <String>().ToArray(),
                Timestamp           = extensionSettingStatus.Timestamp == null ? DateTime.MinValue : extensionSettingStatus.Timestamp.Value
            };

            return(dscStatusContext);
        }
 private NSM.RoleInstance CreateRoleInstance(String roleName)
 {
     var roleInstance = new NSM.RoleInstance
     {
         RoleName = roleName,
         ResourceExtensionStatusList = CreateResourceExtensionStatus()
     };
     return roleInstance;
 }