/// <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); }
/// <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; }