/// <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.ResourceExtensionConfigurationStatus CreateExtensionSettingStatus()
        {
            var extensionSettingStatus = new NSM.ResourceExtensionConfigurationStatus
            {
                Code             = 1,
                Status           = "Success",
                FormattedMessage = new NSM.GuestAgentFormattedMessage
                {
                    Message = "Dsc Configuration was applied successful"
                },
                Timestamp     = new DateTime(),
                SubStatusList = CreateResourceExtensionSubStatus(1, CreateGuestAgentFormattedMessage())
            };

            return(extensionSettingStatus);
        }
        private NSM.ResourceExtensionConfigurationStatus CreateExtensionSettingStatus()
        {
            var extensionSettingStatus = new NSM.ResourceExtensionConfigurationStatus
            {
                Code = 1,
                Status = "Success",
                FormattedMessage = new NSM.GuestAgentFormattedMessage
                {
                    Message = "Dsc Configuration was applied successful"
                },
                Timestamp = new DateTime(),
                SubStatusList = CreateResourceExtensionSubStatus(1, CreateGuestAgentFormattedMessage())
            };

            return extensionSettingStatus;
        }