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);
            }
        }
Пример #4
0
        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);
        }