private ResourceExtensionReference MakeItem( string publisherName, string extensionName, string version) { ResourceExtensionReference extension = null; if (this.computeClient != null) { var reference = this.computeClient.VirtualMachineExtensions.ListVersions( publisherName, extensionName).FirstOrDefault(); if (reference != null) { extension = MakeItem( reference.Publisher, reference.Name, reference.Name, version); } } return(extension); }
protected string GetConfiguration( ResourceExtensionReference extensionRef, string typeStr) { return(extensionRef == null ? string.Empty : GetConfiguration( extensionRef.ResourceExtensionParameterValues, typeStr)); }
protected ResourceExtensionReference NewResourceExtension() { var extensionRef = new ResourceExtensionReference(); extensionRef.Name = this.ExtensionName; extensionRef.Publisher = this.Publisher; extensionRef.Version = this.Version; extensionRef.State = IsLegacyExtension() ? null : this.Uninstall.IsPresent ? ReferenceUninstallStateStr : this.Disable.IsPresent ? ReferenceDisableStateStr : ReferenceEnableStateStr; extensionRef.ResourceExtensionParameterValues = new ResourceExtensionParameterValueList(); if (!string.IsNullOrEmpty(this.ReferenceName)) { extensionRef.ReferenceName = this.ReferenceName; } else { extensionRef.ReferenceName = extensionRef.Name; } if (!string.IsNullOrEmpty(this.PublicConfigPath)) { this.PublicConfiguration = FileUtilities.DataStore.ReadFileAsText(this.PublicConfigPath); } if (!string.IsNullOrEmpty(this.PublicConfiguration)) { extensionRef.ResourceExtensionParameterValues.Add( new ResourceExtensionParameterValue { Key = !string.IsNullOrEmpty(this.PublicConfigKey) ? this.PublicConfigKey : ExtensionName + (IsLegacyExtension() ? string.Empty : PublicTypeStr) + "ConfigParameter", Type = IsLegacyExtension() ? null : PublicTypeStr, Value = PublicConfiguration }); } if (!string.IsNullOrEmpty(this.PrivateConfigPath)) { this.PrivateConfiguration = FileUtilities.DataStore.ReadFileAsText(this.PrivateConfigPath); } if (!string.IsNullOrEmpty(this.PrivateConfiguration)) { extensionRef.ResourceExtensionParameterValues.Add( new ResourceExtensionParameterValue { Key = !string.IsNullOrEmpty(this.PrivateConfigKey) ? this.PrivateConfigKey : ExtensionName + (IsLegacyExtension() ? string.Empty : PrivateTypeStr) + "ConfigParameter", Type = IsLegacyExtension() ? null : PrivateTypeStr, SecureValue = SecureStringHelper.GetSecureString(PrivateConfiguration) }); } return(extensionRef); }
protected ResourceExtensionReference NewResourceExtension() { var extensionRef = new ResourceExtensionReference(); extensionRef.Name = this.ExtensionName; extensionRef.Publisher = this.Publisher; extensionRef.Version = this.Version; extensionRef.State = IsLegacyExtension() ? null : this.Disable.IsPresent ? ReferenceDisableStr : ReferenceEnableStr; extensionRef.ResourceExtensionParameterValues = new ResourceExtensionParameterValueList(); if (!string.IsNullOrEmpty(this.ReferenceName)) { extensionRef.ReferenceName = this.ReferenceName; } else { extensionRef.ReferenceName = extensionRef.Name; } if (!string.IsNullOrEmpty(this.PublicConfigPath)) { this.PublicConfiguration = File.ReadAllText(this.PublicConfigPath); } if (!string.IsNullOrEmpty(this.PublicConfiguration)) { extensionRef.ResourceExtensionParameterValues.Add( new ResourceExtensionParameterValue { Key = ExtensionName + (IsLegacyExtension() ? string.Empty : PublicTypeStr) + "ConfigParameter", Type = IsLegacyExtension() ? null : PublicTypeStr, Value = PublicConfiguration }); } if (!string.IsNullOrEmpty(this.PrivateConfigPath)) { this.PrivateConfiguration = File.ReadAllText(this.PrivateConfigPath); } if (!string.IsNullOrEmpty(this.PrivateConfiguration)) { extensionRef.ResourceExtensionParameterValues.Add( new ResourceExtensionParameterValue { Key = ExtensionName + (IsLegacyExtension() ? string.Empty : PrivateTypeStr) + "ConfigParameter", Type = IsLegacyExtension() ? null : PrivateTypeStr, Value = PrivateConfiguration }); } return(extensionRef); }
protected virtual void GetExtensionValues(ResourceExtensionReference extensionRef) { if (extensionRef != null && extensionRef.ResourceExtensionParameterValues != null) { Disable = string.Equals(extensionRef.State, ReferenceDisableStateStr); GetExtensionValues(extensionRef.ResourceExtensionParameterValues); } else { Disable = extensionRef == null ? true : string.Equals(extensionRef.State, ReferenceDisableStateStr); } }
protected ResourceExtensionReference GetPredicateExtension() { ResourceExtensionReference extensionRef = null; if (!ResourceExtensionReferences.Any()) { WriteWarning(Resources.ResourceExtensionReferencesIsNullOrEmpty); } else { extensionRef = ResourceExtensionReferences.FirstOrDefault(ExtensionPredicate); } return(extensionRef); }
protected override void ValidateParameters() { base.ValidateParameters(); ExtensionName = DiagnosticsExtensionType; Publisher = DiagnosticsExtensionNamespace; // If the user didn't specify an extension reference name and the input VM already has a diagnostics extension, // reuse its reference name if (string.IsNullOrEmpty(ReferenceName)) { ResourceExtensionReference diagnosticsExtension = ResourceExtensionReferences.FirstOrDefault(ExtensionPredicate); if (diagnosticsExtension != null) { ReferenceName = diagnosticsExtension.ReferenceName; } } }
public static Role AddExtension(this Role role, ResourceExtensionReference reference) { if (role.ResourceExtensionReferences == null) { role.ResourceExtensionReferences = new List <ResourceExtensionReference>(); } var existingExtension = role.ResourceExtensionReferences.FirstOrDefault(_ => _.ReferenceName == reference.ReferenceName); if (existingExtension != null) { role.ResourceExtensionReferences.Remove(existingExtension); } role.ResourceExtensionReferences.Add(reference); return(role); }
public PersistentVM GetInstance() { ResourceExtensionReference extensionRef = null; extensionRef = new ResourceExtensionReference() { Name = "ChefClient", Publisher = "Chef.Bootstrap.WindowsAzure,", Version = "11.0" }; var resourceList = new ResourceExtensionReferenceList(); resourceList.Add(extensionRef); return new PersistentVM() { ResourceExtensionReferences = resourceList, OSVirtualHardDisk = new OSVirtualHardDisk() { OS = "Windows" } }; }
protected void GetVMAccessExtensionValues(ResourceExtensionReference extensionRef) { if (extensionRef != null && extensionRef.ResourceExtensionParameterValues != null) { if (IsLegacyExtension(extensionRef.Name, extensionRef.Publisher, extensionRef.Version)) { GetVMAccessExtensionLegacyValues(extensionRef.ResourceExtensionParameterValues); } else { Disable = string.Equals(extensionRef.State, ReferenceDisableStr); GetVMAccessExtensionValues(extensionRef.ResourceExtensionParameterValues); } } else { Disable = extensionRef == null ? true : string.Equals(extensionRef.State, ReferenceDisableStr); } }
public PersistentVM GetInstance() { ResourceExtensionReference extensionRef = null; extensionRef = new ResourceExtensionReference() { Name = "ChefClient", Publisher = "Chef.Bootstrap.WindowsAzure,", Version = "11.0" }; var resourceList = new ResourceExtensionReferenceList(); resourceList.Add(extensionRef); return(new PersistentVM() { ResourceExtensionReferences = resourceList, OSVirtualHardDisk = new OSVirtualHardDisk() { OS = "Windows" } }); }
/// <summary> /// Get the SQL Extension's context /// </summary> /// <returns></returns> private VirtualMachineSqlServerExtensionContext GetExtensionContext(ResourceExtensionReference r) { VirtualMachineSqlServerExtensionContext context = new VirtualMachineSqlServerExtensionContext { ExtensionName = r.Name, Publisher = r.Publisher, ReferenceName = r.ReferenceName, Version = r.Version, State = r.State, PublicConfiguration = PublicConfiguration, PrivateConfiguration = SecureStringHelper.GetSecureString(PrivateConfiguration), RoleName = VM.GetInstance().RoleName, }; // gather extension status messages List<string> statusMessageList = new List<string>(); List<NSM.ResourceExtensionStatus> extensionStatusList = this.GetResourceExtensionStatusList(context); // enumerate over extension status list and gather status for autopatching and autobackup // Note: valid reference to an extension status list is returned by GetResourceExtensionStatusList() foreach (NSM.ResourceExtensionStatus res in extensionStatusList) { // Extension handler name in format publisher.ReferenceName string extensionHandlerName = string.Format(CultureInfo.InvariantCulture, "{0}.{1}", r.Publisher, r.ReferenceName); // skip all non-sql extensions if (!res.HandlerName.Equals(extensionHandlerName, System.StringComparison.InvariantCulture)) { continue; } if (null != res.ExtensionSettingStatus) { context.SubStatusList = res.ExtensionSettingStatus.SubStatusList; foreach (NSM.ResourceExtensionSubStatus status in res.ExtensionSettingStatus.SubStatusList) { if (null != status.FormattedMessage) { string formattedMessage = status.FormattedMessage.Message; // get current auto patching and auto backup config from extension status message if (status.Name.Equals(AutoPatchingStatusMessageName, System.StringComparison.InvariantCulture)) { context.AutoPatchingSettings = DeSerializeAutoPatchingSettings(status.Name, formattedMessage); } if (status.Name.Equals(AutoBackupStatusMessageName, System.StringComparison.InvariantCulture)) { context.AutoBackupSettings = DeSerializeAutoBackupSettings(status.Name, formattedMessage); } statusMessageList.Add(formattedMessage); } } } } context.StatusMessages = statusMessageList; return context; }
protected void GetVMAccessExtensionValues(ResourceExtensionReference extensionRef) { if (extensionRef != null && extensionRef.ResourceExtensionParameterValues != null) { if (IsLegacyExtension(extensionRef.Name, extensionRef.Publisher, extensionRef.Version)) { GetVMAccessExtensionLegacyValues(extensionRef.ResourceExtensionParameterValues); } else { Disable = string.Equals(extensionRef.State, ReferenceDisableStateStr); GetVMAccessExtensionValues(extensionRef.ResourceExtensionParameterValues); } } else { Disable = extensionRef == null ? true : string.Equals(extensionRef.State, ReferenceDisableStateStr); } }
/// <summary> /// Get the SQL Extension's context /// </summary> /// <returns></returns> private VirtualMachineSqlServerExtensionContext GetExtensionContext(ResourceExtensionReference r) { string extensionName = VirtualMachineSqlServerExtensionCmdletBase.ExtensionPublishedNamespace + "." + VirtualMachineSqlServerExtensionCmdletBase.ExtensionPublishedName; VirtualMachineSqlServerExtensionContext context = new VirtualMachineSqlServerExtensionContext { ExtensionName = r.Name, Publisher = r.Publisher, ReferenceName = r.ReferenceName, Version = r.Version, State = r.State, PublicConfiguration = PublicConfiguration, PrivateConfiguration = SecureStringHelper.GetSecureString(PrivateConfiguration), RoleName = VM.GetInstance().RoleName, }; // gather extension status messages List<string> statusMessageList = new List<string>(); List<NSM.ResourceExtensionStatus> extensionStatusList = this.GetResourceExtensionStatusList(context); // enumerate over extension status list and gather status for autopatching and autobackup // Note: valid reference to an extension status list is returned by GetResourceExtensionStatusList() foreach (NSM.ResourceExtensionStatus res in extensionStatusList) { // Expected ReferenceName = "Microsoft.SqlServer.Management.SqlIaaSAgent" if (!res.HandlerName.Equals(extensionName, System.StringComparison.InvariantCulture)) { // skip all non-sql extensions continue; } WriteVerboseWithTimestamp("Found SQL Extension:" + r.ReferenceName); if (null != res.ExtensionSettingStatus) { context.SubStatusList = res.ExtensionSettingStatus.SubStatusList; foreach (NSM.ResourceExtensionSubStatus status in res.ExtensionSettingStatus.SubStatusList) { if (null != status.FormattedMessage) { string formattedMessage = status.FormattedMessage.Message; // get current auto patching and auto backup config from extension status message if (status.Name.Equals(AutoPatchingStatusMessageName, System.StringComparison.InvariantCulture)) { context.AutoPatchingSettings = DeSerializeAutoPatchingSettings(status.Name, formattedMessage); } else if (status.Name.Equals(AutoBackupStatusMessageName, System.StringComparison.InvariantCulture)) { context.AutoBackupSettings = DeSerializeAutoBackupSettings(status.Name, formattedMessage); } else if (status.Name.Equals(KeyVaultCredentialStatusMessageName, System.StringComparison.InvariantCulture)) { context.KeyVaultCredentialSettings = DeSerializeKeyVaultCredentialSettings(status.Name, formattedMessage); } statusMessageList.Add(formattedMessage); } } } } context.StatusMessages = statusMessageList; return context; }
protected string GetConfiguration( ResourceExtensionReference extensionRef, string typeStr) { return extensionRef == null ? string.Empty : GetConfiguration( extensionRef.ResourceExtensionParameterValues, typeStr); }
protected ResourceExtensionReference NewResourceExtension() { var extensionRef = new ResourceExtensionReference(); extensionRef.Name = this.ExtensionName; extensionRef.Publisher = this.Publisher; extensionRef.Version = this.Version; extensionRef.State = IsLegacyExtension() ? null : this.Disable.IsPresent ? ReferenceDisableStr : ReferenceEnableStr; extensionRef.ResourceExtensionParameterValues = new ResourceExtensionParameterValueList(); if (!string.IsNullOrEmpty(this.ReferenceName)) { extensionRef.ReferenceName = this.ReferenceName; } else { extensionRef.ReferenceName = extensionRef.Name; } if (!string.IsNullOrEmpty(this.PublicConfigPath)) { this.PublicConfiguration = File.ReadAllText(this.PublicConfigPath); } if (!string.IsNullOrEmpty(this.PublicConfiguration)) { extensionRef.ResourceExtensionParameterValues.Add( new ResourceExtensionParameterValue { Key = ExtensionName + (IsLegacyExtension() ? string.Empty : PublicTypeStr) + "ConfigParameter", Type = IsLegacyExtension() ? null : PublicTypeStr, Value = PublicConfiguration }); } if (!string.IsNullOrEmpty(this.PrivateConfigPath)) { this.PrivateConfiguration = File.ReadAllText(this.PrivateConfigPath); } if (!string.IsNullOrEmpty(this.PrivateConfiguration)) { extensionRef.ResourceExtensionParameterValues.Add( new ResourceExtensionParameterValue { Key = ExtensionName + (IsLegacyExtension() ? string.Empty : PrivateTypeStr) + "ConfigParameter", Type = IsLegacyExtension() ? null : PrivateTypeStr, Value = PrivateConfiguration }); } return extensionRef; }
/// <summary> /// Get the SQL Extension's context /// </summary> /// <returns></returns> private VirtualMachineSqlServerExtensionContext GetExtensionContext(ResourceExtensionReference r) { VirtualMachineSqlServerExtensionContext context = new VirtualMachineSqlServerExtensionContext { ExtensionName = r.Name, Publisher = r.Publisher, ReferenceName = r.ReferenceName, Version = r.Version, State = r.State, PublicConfiguration = PublicConfiguration, PrivateConfiguration = SecureStringHelper.GetSecureString(PrivateConfiguration), RoleName = VM.GetInstance().RoleName, }; // gather extension status messages List <string> statusMessageList = new List <string>(); List <NSM.ResourceExtensionStatus> extensionStatusList = this.GetResourceExtensionStatusList(context); // enumerate over extension status list and gather status for autopatching and autobackup // Note: valid reference to an extension status list is returned by GetResourceExtensionStatusList() foreach (NSM.ResourceExtensionStatus res in extensionStatusList) { // Extension handler name in format publisher.ReferenceName string extensionHandlerName = string.Format(CultureInfo.InvariantCulture, "{0}.{1}", r.Publisher, r.ReferenceName); // skip all non-sql extensions if (!res.HandlerName.Equals(extensionHandlerName, System.StringComparison.InvariantCulture)) { continue; } if (null != res.ExtensionSettingStatus) { context.SubStatusList = res.ExtensionSettingStatus.SubStatusList; foreach (NSM.ResourceExtensionSubStatus status in res.ExtensionSettingStatus.SubStatusList) { if (null != status.FormattedMessage) { string formattedMessage = status.FormattedMessage.Message; // get current auto patching and auto backup config from extension status message if (status.Name.Equals(AutoPatchingStatusMessageName, System.StringComparison.InvariantCulture)) { context.AutoPatchingSettings = DeSerializeAutoPatchingSettings(status.Name, formattedMessage); } if (status.Name.Equals(AutoBackupStatusMessageName, System.StringComparison.InvariantCulture)) { context.AutoBackupSettings = DeSerializeAutoBackupSettings(status.Name, formattedMessage); } statusMessageList.Add(formattedMessage); } } } } context.StatusMessages = statusMessageList; return(context); }
/// <summary> /// Get the SQL Extension's context /// </summary> /// <returns></returns> private VirtualMachineSqlServerExtensionContext GetExtensionContext(ResourceExtensionReference r) { string extensionName = VirtualMachineSqlServerExtensionCmdletBase.ExtensionPublishedNamespace + "." + VirtualMachineSqlServerExtensionCmdletBase.ExtensionPublishedName; VirtualMachineSqlServerExtensionContext context = new VirtualMachineSqlServerExtensionContext { ExtensionName = r.Name, Publisher = r.Publisher, ReferenceName = r.ReferenceName, Version = r.Version, State = r.State, PublicConfiguration = PublicConfiguration, PrivateConfiguration = SecureStringHelper.GetSecureString(PrivateConfiguration), RoleName = VM.GetInstance().RoleName, }; // gather extension status messages List <string> statusMessageList = new List <string>(); List <NSM.ResourceExtensionStatus> extensionStatusList = this.GetResourceExtensionStatusList(context); // enumerate over extension status list and gather status for autopatching and autobackup // Note: valid reference to an extension status list is returned by GetResourceExtensionStatusList() foreach (NSM.ResourceExtensionStatus res in extensionStatusList) { // Expected ReferenceName = "Microsoft.SqlServer.Management.SqlIaaSAgent" if (!res.HandlerName.Equals(extensionName, System.StringComparison.InvariantCulture)) { // skip all non-sql extensions continue; } WriteVerboseWithTimestamp("Found SQL Extension:" + r.ReferenceName); if (null != res.ExtensionSettingStatus) { context.SubStatusList = res.ExtensionSettingStatus.SubStatusList; context.ExtensionStatus = res.Status; // Gather status messages because // #$ISSUE- extension.Statuses is always null, follow up with Azure team foreach (NSM.ResourceExtensionSubStatus status in res.ExtensionSettingStatus.SubStatusList) { if (null != status.FormattedMessage) { statusMessageList.Add(status.FormattedMessage.Message); } } context.StatusMessages = statusMessageList; // Extract sql configuration information from one of the sub statuses if (context.SubStatusList == null || context.SubStatusList.FirstOrDefault(s => s.Name.Equals(SqlConfigurationStatusMessageName, StringComparison.InvariantCultureIgnoreCase)) == null) { WriteWarning( String.Format( CultureInfo.CurrentUICulture, Properties.Resources.AzureVMSqlServerSqlConfigurationNotFound, context.SubStatusList)); continue; } string sqlConfiguration = context.SubStatusList.First(s => s.Name.Equals(SqlConfigurationStatusMessageName, StringComparison.InvariantCultureIgnoreCase)).FormattedMessage.Message; try { AzureVMSqlServerConfiguration settings = JsonConvert.DeserializeObject <AzureVMSqlServerConfiguration>(sqlConfiguration); context.AutoBackupSettings = settings.AutoBackup == null ? null : new AutoBackupSettings() { Enable = settings.AutoBackup.Enable, EnableEncryption = settings.AutoBackup.EnableEncryption, RetentionPeriod = settings.AutoBackup.RetentionPeriod, StorageUrl = settings.AutoBackup.StorageAccountUrl, BackupSystemDbs = settings.AutoBackup.BackupSystemDbs, BackupScheduleType = string.IsNullOrEmpty(settings.AutoBackup.BackupScheduleType) ? null : AutoBackupScheduleTypeMap[settings.AutoBackup.BackupScheduleType], FullBackupFrequency = settings.AutoBackup.FullBackupFrequency, FullBackupStartTime = settings.AutoBackup.FullBackupStartTime, FullBackupWindowHours = settings.AutoBackup.FullBackupWindowHours, LogBackupFrequency = settings.AutoBackup.LogBackupFrequency }; context.AutoPatchingSettings = settings.AutoPatching == null ? null : new AutoPatchingSettings() { Enable = settings.AutoPatching.Enable, DayOfWeek = settings.AutoPatching.DayOfWeek, MaintenanceWindowDuration = settings.AutoPatching.MaintenanceWindowDuration, MaintenanceWindowStartingHour = settings.AutoPatching.MaintenanceWindowStartingHour, PatchCategory = string.IsNullOrEmpty(settings.AutoPatching.PatchCategory) ? null : AutoPatchingCategoryMap[settings.AutoPatching.PatchCategory] }; context.KeyVaultCredentialSettings = settings.AzureKeyVault == null ? null : new KeyVaultCredentialSettings() { Enable = settings.AzureKeyVault.Enable, Credentials = settings.AzureKeyVault.CredentialsList }; context.AutoTelemetrySettings = settings.AutoTelemetryReport == null ? null : new AutoTelemetrySettings() { Region = settings.AutoTelemetryReport.Location, }; } catch (JsonException) { WriteWarning( String.Format( CultureInfo.CurrentUICulture, Properties.Resources.AzureVMSqlServerWrongConfigFormat, sqlConfiguration)); } } } return(context); }
/// <summary> /// Get the SQL Extension's context /// </summary> /// <returns></returns> private VirtualMachineSqlServerExtensionContext GetExtensionContext(ResourceExtensionReference r) { string extensionName = VirtualMachineSqlServerExtensionCmdletBase.ExtensionPublishedNamespace + "." + VirtualMachineSqlServerExtensionCmdletBase.ExtensionPublishedName; VirtualMachineSqlServerExtensionContext context = new VirtualMachineSqlServerExtensionContext { ExtensionName = r.Name, Publisher = r.Publisher, ReferenceName = r.ReferenceName, Version = r.Version, State = r.State, PublicConfiguration = PublicConfiguration, PrivateConfiguration = SecureStringHelper.GetSecureString(PrivateConfiguration), RoleName = VM.GetInstance().RoleName, }; // gather extension status messages List <string> statusMessageList = new List <string>(); List <NSM.ResourceExtensionStatus> extensionStatusList = this.GetResourceExtensionStatusList(context); // enumerate over extension status list and gather status for autopatching and autobackup // Note: valid reference to an extension status list is returned by GetResourceExtensionStatusList() foreach (NSM.ResourceExtensionStatus res in extensionStatusList) { // Expected ReferenceName = "Microsoft.SqlServer.Management.SqlIaaSAgent" if (!res.HandlerName.Equals(extensionName, System.StringComparison.InvariantCulture)) { // skip all non-sql extensions continue; } WriteVerboseWithTimestamp("Found SQL Extension:" + r.ReferenceName); if (null != res.ExtensionSettingStatus) { context.SubStatusList = res.ExtensionSettingStatus.SubStatusList; foreach (NSM.ResourceExtensionSubStatus status in res.ExtensionSettingStatus.SubStatusList) { if (null != status.FormattedMessage) { string formattedMessage = status.FormattedMessage.Message; // get current auto patching and auto backup config from extension status message if (status.Name.Equals(AutoPatchingStatusMessageName, System.StringComparison.InvariantCulture)) { context.AutoPatchingSettings = DeSerializeAutoPatchingSettings(status.Name, formattedMessage); } else if (status.Name.Equals(AutoBackupStatusMessageName, System.StringComparison.InvariantCulture)) { context.AutoBackupSettings = DeSerializeAutoBackupSettings(status.Name, formattedMessage); } else if (status.Name.Equals(KeyVaultCredentialStatusMessageName, System.StringComparison.InvariantCulture)) { context.KeyVaultCredentialSettings = DeSerializeKeyVaultCredentialSettings(status.Name, formattedMessage); } statusMessageList.Add(formattedMessage); } } } } context.StatusMessages = statusMessageList; return(context); }
protected ResourceExtensionReference NewResourceExtension() { var extensionRef = new ResourceExtensionReference(); extensionRef.Name = this.ExtensionName; extensionRef.Publisher = this.Publisher; extensionRef.Version = this.Version; extensionRef.State = IsLegacyExtension() ? null : this.Uninstall.IsPresent ? ReferenceUninstallStateStr : this.Disable.IsPresent ? ReferenceDisableStateStr : ReferenceEnableStateStr; extensionRef.ResourceExtensionParameterValues = new ResourceExtensionParameterValueList(); if (!string.IsNullOrEmpty(this.ReferenceName)) { extensionRef.ReferenceName = this.ReferenceName; } else { extensionRef.ReferenceName = extensionRef.Name; } if (!string.IsNullOrEmpty(this.PublicConfigPath)) { this.PublicConfiguration = FileUtilities.DataStore.ReadFileAsText(this.PublicConfigPath); } if (!string.IsNullOrEmpty(this.PublicConfiguration)) { extensionRef.ResourceExtensionParameterValues.Add( new ResourceExtensionParameterValue { Key = !string.IsNullOrEmpty(this.PublicConfigKey) ? this.PublicConfigKey : ExtensionName + (IsLegacyExtension() ? string.Empty : PublicTypeStr) + "ConfigParameter", Type = IsLegacyExtension() ? null : PublicTypeStr, Value = PublicConfiguration }); } if (!string.IsNullOrEmpty(this.PrivateConfigPath)) { this.PrivateConfiguration = FileUtilities.DataStore.ReadFileAsText(this.PrivateConfigPath); } if (!string.IsNullOrEmpty(this.PrivateConfiguration)) { extensionRef.ResourceExtensionParameterValues.Add( new ResourceExtensionParameterValue { Key = !string.IsNullOrEmpty(this.PrivateConfigKey) ? this.PrivateConfigKey : ExtensionName + (IsLegacyExtension() ? string.Empty : PrivateTypeStr) + "ConfigParameter", Type = IsLegacyExtension() ? null : PrivateTypeStr, SecureValue = SecureStringHelper.GetSecureString(PrivateConfiguration) }); } return extensionRef; }