public void TestDiagnosticsConfigBuilderMismatchAccountNames() { string pubJsonConfigPath = GetConfigFilePath("DiagnosticsExtensionPublicConfigWithStorageType.json"); string privJsonConfigPath = GetConfigFilePath("DiagnosticsExtensionprivateConfigWithWrongName.json"); var exception = Record.Exception(() => DiagnosticsHelper.GetConfigurationsFromFiles(pubJsonConfigPath, privJsonConfigPath, "a-resouce-id", null, null)); Assert.IsType(typeof(ArgumentException), exception); string[] configs = new[] { GetConfigFilePath("DiagnosticsExtensionConfigWithWrongName.json"), GetConfigFilePath("DiagnosticsExtensionConfigWithWrongName.xml") }; foreach (var configPath in configs) { exception = Record.Exception(() => DiagnosticsHelper.GetPrivateDiagnosticsConfiguration(configPath, "wrong-name", "a-key", "an-endpoint")); Assert.IsType(typeof(ArgumentException), exception); } }
public void TestDiagnosticsConfigBuilderWithStorageType() { string pubJsonConfigPath = GetConfigFilePath("DiagnosticsExtensionPublicConfigWithStorageType.json"); string privJsonConfigPath = GetConfigFilePath("DiagnosticsExtensionprivateConfigWithSasToken.json"); string storageTypeValue = "TableAndBlob"; var result = DiagnosticsHelper.GetConfigurationsFromFiles(pubJsonConfigPath, privJsonConfigPath, "a-resource-id", null, null); Assert.Equal <string>(storageTypeValue, result.Item1["StorageType"] as string); string[] configs = new[] { GetConfigFilePath("DiagnosticsExtensionConfigWithStorageType.json"), GetConfigFilePath("DiagnosticsExtensionConfigWithStorageType.xml") }; foreach (var configPath in configs) { var publicSettings = DiagnosticsHelper.GetPublicDiagnosticsConfigurationFromFile(configPath, "[StorageAccountName]", "dummy", null); Assert.Equal <string>(storageTypeValue, publicSettings["StorageType"] as string); } }
public void TestDiagnosticsConfigBuilderWithSasToken() { string pubJsonConfigPath = GetConfigFilePath("DiagnosticsExtensionPublicConfigWithStorageType.json"); string privJsonConfigPath = GetConfigFilePath("DiagnosticsExtensionprivateConfigWithSasToken.json"); string sasTokenValue = "This-is-a-sas-token"; var result = DiagnosticsHelper.GetConfigurationsFromFiles(pubJsonConfigPath, privJsonConfigPath, "a-resource-id", null, null); Assert.Equal <string>(sasTokenValue, result.Item2["storageAccountSasToken"] as string); string[] configs = new[] { GetConfigFilePath("DiagnosticsExtensionConfigWithSasToken.json"), GetConfigFilePath("DiagnosticsExtensionConfigWithSasToken.xml") }; foreach (var configPath in configs) { var privateSettings = DiagnosticsHelper.GetPrivateDiagnosticsConfiguration(configPath, "[StorageAccountName]", "a-key", "an-endpoint"); Assert.Null(privateSettings["storageAccountKey"]); Assert.NotNull(privateSettings["storageAccountEndPoint"]); Assert.Equal <string>(sasTokenValue, privateSettings["storageAccountSasToken"] as string); } }
protected override void ProcessRecord() { if (ShouldProcess(this.VirtualMachineScaleSet.Name, Properties.Resources.AddVmssDiagnosticsExtensionAction)) { // VirtualMachineProfile if (this.VirtualMachineScaleSet.VirtualMachineProfile == null) { this.VirtualMachineScaleSet.VirtualMachineProfile = new Microsoft.Azure.Management.Compute.Models.VirtualMachineScaleSetVMProfile(); } // ExtensionProfile if (this.VirtualMachineScaleSet.VirtualMachineProfile.ExtensionProfile == null) { this.VirtualMachineScaleSet.VirtualMachineProfile.ExtensionProfile = new Microsoft.Azure.Management.Compute.Models.VirtualMachineScaleSetExtensionProfile(); } // Extensions if (this.VirtualMachineScaleSet.VirtualMachineProfile.ExtensionProfile.Extensions == null) { this.VirtualMachineScaleSet.VirtualMachineProfile.ExtensionProfile.Extensions = new List <Microsoft.Azure.Management.Compute.Models.VirtualMachineScaleSetExtension>(); } bool shouldContinue = true; // Warning if there's already a diagnostics extension. var extensions = this.VirtualMachineScaleSet.VirtualMachineProfile.ExtensionProfile.Extensions; if (extensions.Any(DiagnosticsHelper.IsDiagnosticsExtension)) { if (Force.IsPresent || ShouldContinue(Properties.Resources.DiagnosticsExtensionOverwrittingConfirmation, Properties.Resources.DiagnosticsExtensionOverwrittingCaption)) { WriteWarning(Properties.Resources.DiagnosticsExtensionOverwriting); // Remove all existing diagnostics extensions this.VirtualMachineScaleSet.VirtualMachineProfile.ExtensionProfile.Extensions = extensions.Where(extension => !DiagnosticsHelper.IsDiagnosticsExtension(extension)).ToList(); } else { shouldContinue = false; } } if (shouldContinue) { var storageClient = AzureSession.ClientFactory.CreateArmClient <StorageManagementClient>(DefaultProfile.Context, AzureEnvironment.Endpoint.ResourceManager); // Parse configs, and auto fill incomplete parts Tuple <Hashtable, Hashtable> settings = DiagnosticsHelper.GetConfigurationsFromFiles(this.SettingFilePath, this.ProtectedSettingFilePath, this.VirtualMachineScaleSet.Id, this, storageClient); var newDiagnosticsExtension = new Microsoft.Azure.Management.Compute.Models.VirtualMachineScaleSetExtension(); newDiagnosticsExtension.Name = this.Name; newDiagnosticsExtension.Publisher = DiagnosticsExtensionConstants.ExtensionPublisher; newDiagnosticsExtension.Type = DiagnosticsExtensionConstants.ExtensionType; newDiagnosticsExtension.TypeHandlerVersion = this.TypeHandlerVersion; newDiagnosticsExtension.AutoUpgradeMinorVersion = this.AutoUpgradeMinorVersion; newDiagnosticsExtension.Settings = settings.Item1; newDiagnosticsExtension.ProtectedSettings = settings.Item2; this.VirtualMachineScaleSet.VirtualMachineProfile.ExtensionProfile.Extensions.Add(newDiagnosticsExtension); } } WriteObject(this.VirtualMachineScaleSet); }