Esempio n. 1
0
 private void SetServiceBus(ServiceDiagnosticSettingsResource properties)
 {
     if (this.isServiceBusParamPresent)
     {
         properties.ServiceBusRuleId = this.ServiceBusRuleId;
     }
 }
        /// <summary>
        /// Initializes a new instance of the PSServiceDiagnosticSettings class.
        /// </summary>
        public PSServiceDiagnosticSettings(ServiceDiagnosticSettingsResource serviceDiagnosticSettings)
            : base(
                id: serviceDiagnosticSettings.Id,
                location: serviceDiagnosticSettings.Location,
                metrics: serviceDiagnosticSettings.Metrics,
                logs: serviceDiagnosticSettings.Logs)
        {
            this.StorageAccountId = serviceDiagnosticSettings.StorageAccountId;
            this.ServiceBusRuleId = serviceDiagnosticSettings.ServiceBusRuleId;
            this.Metrics          = new List <PSMetricSettings>();
            foreach (MetricSettings metricSettings in serviceDiagnosticSettings.Metrics)
            {
                this.Metrics.Add(new PSMetricSettings(metricSettings));
            }

            this.Logs = new List <PSLogSettings>();
            foreach (LogSettings LogSettings in serviceDiagnosticSettings.Logs)
            {
                this.Logs.Add(new PSLogSettings(LogSettings));
            }

            this.WorkspaceId = serviceDiagnosticSettings.WorkspaceId;
            this.Name        = serviceDiagnosticSettings.Name;
            this.Tags        = serviceDiagnosticSettings.Tags;
        }
Esempio n. 3
0
 private void SetEventHubRule(ServiceDiagnosticSettingsResource properties)
 {
     if (this.isEventHubRuleParamPresent)
     {
         properties.EventHubAuthorizationRuleId = this.EventHubAuthorizationRuleId;
     }
 }
        /// <summary>
        /// Initializes a new instance of the PSServiceDiagnosticSettings class.
        /// </summary>
        public PSServiceDiagnosticSettings(ServiceDiagnosticSettingsResource serviceDiagnosticSettings)
            : base(
                id: serviceDiagnosticSettings.Id, 
                location: serviceDiagnosticSettings.Location, 
                metrics: serviceDiagnosticSettings.Metrics, 
                logs: serviceDiagnosticSettings.Logs)
        {
            this.StorageAccountId = serviceDiagnosticSettings.StorageAccountId;
            this.ServiceBusRuleId = serviceDiagnosticSettings.ServiceBusRuleId;
            this.Metrics = new List<PSMetricSettings>();
            foreach (MetricSettings metricSettings in serviceDiagnosticSettings.Metrics)
            {
                this.Metrics.Add(new PSMetricSettings(metricSettings));
            }

            this.Logs = new List<PSLogSettings>();
            foreach (LogSettings LogSettings in serviceDiagnosticSettings.Logs)
            {
                this.Logs.Add(new PSLogSettings(LogSettings));
            }

            this.WorkspaceId = serviceDiagnosticSettings.WorkspaceId;
            this.Name = serviceDiagnosticSettings.Name;
            this.Tags = serviceDiagnosticSettings.Tags;
        }
Esempio n. 5
0
 private void SetWorkspace(ServiceDiagnosticSettingsResource properties)
 {
     if (this.isWorkspaceParamPresent)
     {
         properties.WorkspaceId = this.WorkspaceId;
     }
 }
        /// <summary>
        /// Initializes a new instance of the PSServiceDiagnosticSettings class.
        /// </summary>
        public PSServiceDiagnosticSettings(ServiceDiagnosticSettingsResource serviceDiagnosticSettings)
            : base(
                name: serviceDiagnosticSettings.Name,
                id: serviceDiagnosticSettings.Id,
                location: serviceDiagnosticSettings.Location,
                type: serviceDiagnosticSettings.Type,
                metrics: serviceDiagnosticSettings.Metrics,
                logs: serviceDiagnosticSettings.Logs)
        {
            this.StorageAccountId            = serviceDiagnosticSettings.StorageAccountId;
            this.ServiceBusRuleId            = serviceDiagnosticSettings.ServiceBusRuleId;
            this.EventHubAuthorizationRuleId = serviceDiagnosticSettings.EventHubAuthorizationRuleId;
            this.Metrics = new List <MetricSettings>();
            foreach (MetricSettings metricSettings in serviceDiagnosticSettings.Metrics)
            {
                this.Metrics.Add(new PSMetricSettings(metricSettings));
            }

            this.Logs = new List <LogSettings>();
            foreach (LogSettings logSettings in serviceDiagnosticSettings.Logs)
            {
                this.Logs.Add(new PSLogSettings(logSettings));
            }

            this.WorkspaceId = serviceDiagnosticSettings.WorkspaceId;
            this.Tags        = serviceDiagnosticSettings.Tags;
        }
Esempio n. 7
0
 private void SetStorage(ServiceDiagnosticSettingsResource properties)
 {
     if (this.isStorageParamPresent)
     {
         properties.StorageAccountId = this.StorageAccountId;
     }
 }
        protected override void ProcessRecordInternal()
        {
            HashSet <string> usedParams = new HashSet <string>(this.MyInvocation.BoundParameters.Keys, StringComparer.OrdinalIgnoreCase);

            this.isStorageParamPresent      = usedParams.Contains(StorageAccountIdParamName);
            this.isServiceBusParamPresent   = usedParams.Contains(ServiceBusRuleIdParamName);
            this.isEventHubRuleParamPresent = usedParams.Contains(EventHubRuleIdParamName);
            this.isWorkspaceParamPresent    = usedParams.Contains(WorkspacetIdParamName);
            this.isEnbledParameterPresent   = usedParams.Contains(EnabledParamName);

            if (!this.isStorageParamPresent &&
                !this.isServiceBusParamPresent &&
                !this.isEventHubRuleParamPresent &&
                !this.isWorkspaceParamPresent &&
                !this.isEnbledParameterPresent)
            {
                throw new ArgumentException("No operation is specified");
            }

            ServiceDiagnosticSettingsResource getResponse = this.MonitorManagementClient.ServiceDiagnosticSettings.GetAsync(resourceUri: this.ResourceId, cancellationToken: CancellationToken.None).Result;

            ServiceDiagnosticSettingsResource properties = getResponse;

            SetStorage(properties);

            SetServiceBus(properties);

            SetEventHubRule(properties);

            SetWorkspace(properties);

            if (this.Categories == null && this.Timegrains == null)
            {
                SetAllCategoriesAndTimegrains(properties);
            }
            else
            {
                if (this.Categories != null)
                {
                    SetSelectedCategories(properties);
                }

                if (this.Timegrains != null)
                {
                    SetSelectedTimegrains(properties);
                }
            }

            if (this.RetentionEnabled.HasValue)
            {
                SetRetention(properties);
            }

            var putParameters = CopySettings(properties);

            ServiceDiagnosticSettingsResource result = this.MonitorManagementClient.ServiceDiagnosticSettings.CreateOrUpdateAsync(resourceUri: this.ResourceId, parameters: putParameters, cancellationToken: CancellationToken.None).Result;

            WriteObject(new PSServiceDiagnosticSettings(result));
        }
Esempio n. 9
0
        protected override void ProcessRecordInternal()
        {
            ServiceDiagnosticSettingsResource result = this.InsightsManagementClient.ServiceDiagnosticSettings.GetAsync(resourceUri: this.ResourceId, cancellationToken: CancellationToken.None).Result;

            PSServiceDiagnosticSettings psResult = new PSServiceDiagnosticSettings(result);

            WriteObject(psResult);
        }
        private static ServiceDiagnosticSettingsResource CopySettings(ServiceDiagnosticSettingsResource properties)
        {
            var putParameters = new ServiceDiagnosticSettingsResource(location: string.Empty);

            putParameters.Logs             = properties.Logs;
            putParameters.Metrics          = properties.Metrics;
            putParameters.ServiceBusRuleId = properties.ServiceBusRuleId;
            putParameters.StorageAccountId = properties.StorageAccountId;
            putParameters.WorkspaceId      = properties.WorkspaceId;
            return(putParameters);
        }
        public void DisableStorage()
        {
            cmdlet.MyInvocation.BoundParameters["StorageAccountId"] = null;
            cmdlet.ExecuteCmdlet();

            ServiceDiagnosticSettingsResource expectedSettings = GetDefaultSetting();

            expectedSettings.StorageAccountId = null;

            VerifyCalledOnce();
            VerifySettings(expectedSettings, this.calledSettings);
        }
        public void DisableEventHub()
        {
            cmdlet.MyInvocation.BoundParameters[SetAzureRmDiagnosticSettingCommand.ServiceBusRuleIdParamName] = null;
            cmdlet.ExecuteCmdlet();

            ServiceDiagnosticSettingsResource expectedSettings = GetDefaultSetting();

            expectedSettings.ServiceBusRuleId = null;

            VerifyCalledOnce();
            VerifySettings(expectedSettings, this.calledSettings);
        }
        public void SetWorkspace()
        {
            string newWorkspaceId = "otherworkspace";

            cmdlet.WorkspaceId = newWorkspaceId;
            cmdlet.MyInvocation.BoundParameters[SetAzureRmDiagnosticSettingCommand.WorkspacetIdParamName] = newWorkspaceId;
            cmdlet.ExecuteCmdlet();

            ServiceDiagnosticSettingsResource expectedSettings = GetDefaultSetting();

            expectedSettings.WorkspaceId = newWorkspaceId;

            VerifyCalledOnce();
            VerifySettings(expectedSettings, this.calledSettings);
        }
        public void SetSomeTimeGrains()
        {
            cmdlet.Timegrains = new List <string> {
                "PT1H"
            };
            cmdlet.Enabled = false;
            cmdlet.MyInvocation.BoundParameters[SetAzureRmDiagnosticSettingCommand.EnabledParamName] = false;
            cmdlet.ExecuteCmdlet();

            ServiceDiagnosticSettingsResource expectedSettings = GetDefaultSetting();

            expectedSettings.Metrics[1].Enabled = false;

            VerifyCalledOnce();
            VerifySettings(expectedSettings, this.calledSettings);
        }
        public void SetSomeCategories()
        {
            cmdlet.Categories = new List <string> {
                "TestCategory1"
            };
            cmdlet.Enabled = false;
            cmdlet.MyInvocation.BoundParameters[SetAzureRmDiagnosticSettingCommand.EnabledParamName] = false;
            cmdlet.ExecuteCmdlet();

            ServiceDiagnosticSettingsResource expectedSettings = GetDefaultSetting();

            expectedSettings.Logs[0].Enabled = false;

            VerifyCalledOnce();
            VerifySettings(expectedSettings, this.calledSettings);
        }
Esempio n. 16
0
        private static ServiceDiagnosticSettingsResource CopySettings(ServiceDiagnosticSettingsResource properties)
        {
            // Location is marked as required, but the get operation returns Location as null. So use an empty string instead of null to avoid validation errors
            var putParameters = new ServiceDiagnosticSettingsResource(location: properties.Location ?? string.Empty, name: properties.Name, id: properties.Id, type: properties.Type)
            {
                Logs                        = properties.Logs,
                Metrics                     = properties.Metrics,
                ServiceBusRuleId            = properties.ServiceBusRuleId,
                StorageAccountId            = properties.StorageAccountId,
                WorkspaceId                 = properties.WorkspaceId,
                Tags                        = properties.Tags,
                EventHubAuthorizationRuleId = properties.EventHubAuthorizationRuleId
            };

            return(putParameters);
        }
Esempio n. 17
0
        public SetDiagnosticSettingCommandTests(Xunit.Abstractions.ITestOutputHelper output)
        {
            ServiceManagemenet.Common.Models.XunitTracingInterceptor.AddToContext(new ServiceManagemenet.Common.Models.XunitTracingInterceptor(output));
            this.insightsDiagnosticsOperationsMock = new Mock <IServiceDiagnosticSettingsOperations>();
            this.insightsManagementClientMock      = new Mock <MonitorManagementClient>();
            this.commandRuntimeMock = new Mock <ICommandRuntime>();
            this.cmdlet             = new SetAzureRmDiagnosticSettingCommand()
            {
                CommandRuntime          = commandRuntimeMock.Object,
                MonitorManagementClient = insightsManagementClientMock.Object
            };

            this.ExistingSetting = GetDefaultSetting();

            insightsDiagnosticsOperationsMock.Setup(f => f.GetWithHttpMessagesAsync(
                                                        It.IsAny <string>(),
                                                        It.IsAny <Dictionary <string, List <string> > >(),
                                                        It.IsAny <CancellationToken>()))
            .Returns(Task.FromResult <AzureOperationResponse <ServiceDiagnosticSettingsResource> >(new AzureOperationResponse <ServiceDiagnosticSettingsResource>
            {
                Body = this.ExistingSetting
            }));

            insightsDiagnosticsOperationsMock.Setup(f => f.CreateOrUpdateWithHttpMessagesAsync(
                                                        It.IsAny <string>(),
                                                        It.IsAny <ServiceDiagnosticSettingsResource>(),
                                                        It.IsAny <Dictionary <string, List <string> > >(),
                                                        It.IsAny <CancellationToken>()))
            .Returns((string a, ServiceDiagnosticSettingsResource x, Dictionary <string, List <string> > b, CancellationToken c) =>
            {
                calledSettings = x;
                return(Task.FromResult(new AzureOperationResponse <ServiceDiagnosticSettingsResource>
                {
                    Body = x
                }));
            });

            insightsManagementClientMock.SetupGet(f => f.ServiceDiagnosticSettings).Returns(this.insightsDiagnosticsOperationsMock.Object);

            cmdlet.ResourceId = resourceId;

            // Setup Confirmation
            commandRuntimeMock.Setup(f => f.ShouldProcess(It.IsAny <string>())).Returns(true);
            commandRuntimeMock.Setup(f => f.ShouldProcess(It.IsAny <string>(), It.IsAny <string>())).Returns(true);
            commandRuntimeMock.Setup(f => f.ShouldProcess(It.IsAny <string>(), It.IsAny <string>(), It.IsAny <string>())).Returns(true);
            commandRuntimeMock.Setup(f => f.ShouldContinue(It.IsAny <string>(), It.IsAny <string>())).Returns(true);
        }
Esempio n. 18
0
        private void SetAllCategoriesAndTimegrains(ServiceDiagnosticSettingsResource properties)
        {
            if (!this.isEnbledParameterPresent)
            {
                return;
            }

            foreach (var log in properties.Logs)
            {
                log.Enabled = this.Enabled;
            }

            foreach (var metric in properties.Metrics)
            {
                metric.Enabled = this.Enabled;
            }
        }
Esempio n. 19
0
        public void LogProfiles_GetTest()
        {
            var expResponse      = CreateDiagnosticSettings();
            var handler          = new RecordedDelegatingHandler();
            var insightsClient   = GetInsightsManagementClient(handler);
            var serializedObject = Microsoft.Rest.Serialization.SafeJsonConvert.SerializeObject(expResponse, insightsClient.SerializationSettings);
            var expectedResponse = new HttpResponseMessage(HttpStatusCode.OK)
            {
                Content = new StringContent(serializedObject)
            };

            handler        = new RecordedDelegatingHandler(expectedResponse);
            insightsClient = GetInsightsManagementClient(handler);

            ServiceDiagnosticSettingsResource actualResponse = insightsClient.ServiceDiagnosticSettings.Get(resourceUri: ResourceUri);

            AreEqual(expResponse, actualResponse);
        }
Esempio n. 20
0
        private void SetSelectedCategories(ServiceDiagnosticSettingsResource properties)
        {
            if (!this.isEnbledParameterPresent)
            {
                throw new ArgumentException("Parameter 'Enabled' is required by 'Categories' parameter.");
            }

            foreach (string category in this.Categories)
            {
                LogSettings logSettings = properties.Logs.FirstOrDefault(x => string.Equals(x.Category, category, StringComparison.OrdinalIgnoreCase));

                if (logSettings == null)
                {
                    throw new ArgumentException(string.Format(CultureInfo.InvariantCulture, "Log category '{0}' is not available", category));
                }

                logSettings.Enabled = this.Enabled;
            }
        }
Esempio n. 21
0
        private void SetSelectedTimegrains(ServiceDiagnosticSettingsResource properties)
        {
            if (!this.isEnbledParameterPresent)
            {
                throw new ArgumentException("Parameter 'Enabled' is required by 'Timegrains' parameter.");
            }

            foreach (string timegrainString in this.Timegrains)
            {
                TimeSpan       timegrain      = XmlConvert.ToTimeSpan(timegrainString);
                MetricSettings metricSettings = properties.Metrics.FirstOrDefault(x => TimeSpan.Equals(x.TimeGrain, timegrain));

                if (metricSettings == null)
                {
                    throw new ArgumentException(string.Format(CultureInfo.InvariantCulture, "Metric timegrain '{0}' is not available", timegrainString));
                }
                metricSettings.Enabled = this.Enabled;
            }
        }
        private void VerifySettings(
            ServiceDiagnosticSettingsResource expectedSettings,
            ServiceDiagnosticSettingsResource actualSettings)
        {
            Assert.Equal(expectedSettings.StorageAccountId, actualSettings.StorageAccountId);
            Assert.Equal(expectedSettings.ServiceBusRuleId, actualSettings.ServiceBusRuleId);
            Assert.Equal(expectedSettings.WorkspaceId, actualSettings.WorkspaceId);
            if (expectedSettings.Logs == null)
            {
                Assert.Null(actualSettings.Logs);
            }
            else
            {
                Assert.Equal(expectedSettings.Logs.Count, actualSettings.Logs.Count);
                for (int i = 0; i < expectedSettings.Logs.Count; i++)
                {
                    var expected = expectedSettings.Logs[i];
                    var actual   = actualSettings.Logs[i];
                    Assert.Equal(expected.Category, actual.Category);
                    Assert.Equal(expected.Enabled, actual.Enabled);
                    VerifyRetentionPolicy(expected.RetentionPolicy, actual.RetentionPolicy);
                }
            }

            if (expectedSettings.Metrics == null)
            {
                Assert.Null(actualSettings.Metrics);
            }
            else
            {
                Assert.Equal(expectedSettings.Metrics.Count, actualSettings.Metrics.Count);
                for (int i = 0; i < expectedSettings.Metrics.Count; i++)
                {
                    var expected = expectedSettings.Metrics[i];
                    var actual   = actualSettings.Metrics[i];
                    Assert.Equal(expected.TimeGrain, actual.TimeGrain);
                    Assert.Equal(expected.Enabled, actual.Enabled);
                    VerifyRetentionPolicy(expected.RetentionPolicy, actual.RetentionPolicy);
                }
            }
        }
Esempio n. 23
0
        private static void AreEqual(ServiceDiagnosticSettingsResource exp, ServiceDiagnosticSettingsResource act)
        {
            if (exp == act)
            {
                return;
            }

            if (exp == null)
            {
                Assert.Null(act);
            }

            Assert.False(act == null, "Actual value can't be null");

            CompareLists(exp.Logs, act.Logs);
            CompareLists(exp.Metrics, act.Metrics);

            Assert.Equal(exp.StorageAccountId, act.StorageAccountId);
            Assert.Equal(exp.WorkspaceId, act.WorkspaceId);
            Assert.Equal(exp.ServiceBusRuleId, act.ServiceBusRuleId);
        }
Esempio n. 24
0
        private void SetRetention(ServiceDiagnosticSettingsResource properties)
        {
            var retentionPolicy = new RetentionPolicy
            {
                Enabled = this.RetentionEnabled.Value,
                Days    = this.RetentionInDays.Value
            };

            if (properties.Logs != null)
            {
                foreach (LogSettings logSettings in properties.Logs)
                {
                    logSettings.RetentionPolicy = retentionPolicy;
                }
            }

            if (properties.Metrics != null)
            {
                foreach (MetricSettings metricSettings in properties.Metrics)
                {
                    metricSettings.RetentionPolicy = retentionPolicy;
                }
            }
        }
        public SetDiagnosticSettingCommandTests(Xunit.Abstractions.ITestOutputHelper output)
        {
            //ServiceManagemenet.Common.Models.XunitTracingInterceptor.AddToContext(new ServiceManagemenet.Common.Models.XunitTracingInterceptor(output));
            insightsDiagnosticsOperationsMock = new Mock<IServiceDiagnosticSettingsOperations>();
            insightsManagementClientMock = new Mock<InsightsManagementClient>();
            commandRuntimeMock = new Mock<ICommandRuntime>();
            cmdlet = new SetAzureRmDiagnosticSettingCommand()
            {
                CommandRuntime = commandRuntimeMock.Object,
                InsightsManagementClient = insightsManagementClientMock.Object
            };

            request = new ServiceDiagnosticSettingsResource
            {
                StorageAccountId = storageAccountId,
                Logs = new List<LogSettings>
                {
                    new LogSettings
                    {
                        Category = "TestCategory1",
                        Enabled = true
                    },
                    new LogSettings
                    {
                        Category = "TestCategory2",
                        Enabled = false
                    }
                },
                Metrics = new List<MetricSettings>
                {
                    new MetricSettings
                    {
                        TimeGrain = TimeSpan.FromMinutes(1),
                        Enabled = false
                    },
                    new MetricSettings
                    {
                        TimeGrain = TimeSpan.FromHours(1),
                        Enabled = true
                    }
                }
            };

            insightsDiagnosticsOperationsMock.Setup(f => f.GetAsync(It.IsAny<string>(), It.IsAny<CancellationToken>()))
                .Returns(Task.FromResult<ServiceDiagnosticSettingsResource>(request))
                .Callback((string resourceId) =>
                {
                    this.calledResourceId = resourceId;
                });

            Rest.Azure.AzureOperationResponse<ServiceDiagnosticSettingsResource> response = new AzureOperationResponse<ServiceDiagnosticSettingsResource>
            {
                Body = request
            };

            insightsDiagnosticsOperationsMock.Setup(f => f.CreateOrUpdateWithHttpMessagesAsync(It.IsAny<string>(), It.IsAny<ServiceDiagnosticSettingsCreateOrUpdateParameters>(), It.IsAny<Dictionary<string,List<string>>>(), It.IsAny<CancellationToken>()))
                .Returns(Task.FromResult<Rest.Azure.AzureOperationResponse<ServiceDiagnosticSettingsResource>>(response))
                .Callback((string resourceId, ServiceDiagnosticSettingsCreateOrUpdateParameters putParameters, Dictionary<string,List<string>> headers) =>
                {
                    this.calledResourceId = resourceId;
                    this.calledPutParameters = putParameters;
                });

            insightsManagementClientMock.SetupGet(f => f.ServiceDiagnosticSettings).Returns(this.insightsDiagnosticsOperationsMock.Object);
        }
Esempio n. 26
0
        public SetDiagnosticSettingCommandTests(Xunit.Abstractions.ITestOutputHelper output)
        {
            //ServiceManagemenet.Common.Models.XunitTracingInterceptor.AddToContext(new ServiceManagemenet.Common.Models.XunitTracingInterceptor(output));
            insightsDiagnosticsOperationsMock = new Mock <IServiceDiagnosticSettingsOperations>();
            insightsManagementClientMock      = new Mock <InsightsManagementClient>();
            commandRuntimeMock = new Mock <ICommandRuntime>();
            cmdlet             = new SetAzureRmDiagnosticSettingCommand()
            {
                CommandRuntime           = commandRuntimeMock.Object,
                InsightsManagementClient = insightsManagementClientMock.Object
            };

            request = new ServiceDiagnosticSettingsResource
            {
                StorageAccountId = storageAccountId,
                Logs             = new List <LogSettings>
                {
                    new LogSettings
                    {
                        Category = "TestCategory1",
                        Enabled  = true
                    },
                    new LogSettings
                    {
                        Category = "TestCategory2",
                        Enabled  = false
                    }
                },
                Metrics = new List <MetricSettings>
                {
                    new MetricSettings
                    {
                        TimeGrain = TimeSpan.FromMinutes(1),
                        Enabled   = false
                    },
                    new MetricSettings
                    {
                        TimeGrain = TimeSpan.FromHours(1),
                        Enabled   = true
                    }
                }
            };

            insightsDiagnosticsOperationsMock.Setup(f => f.GetAsync(It.IsAny <string>(), It.IsAny <CancellationToken>()))
            .Returns(Task.FromResult <ServiceDiagnosticSettingsResource>(request))
            .Callback((string resourceId) =>
            {
                this.calledResourceId = resourceId;
            });

            Rest.Azure.AzureOperationResponse <ServiceDiagnosticSettingsResource> response = new AzureOperationResponse <ServiceDiagnosticSettingsResource>
            {
                Body = request
            };

            insightsDiagnosticsOperationsMock.Setup(f => f.CreateOrUpdateWithHttpMessagesAsync(It.IsAny <string>(), It.IsAny <ServiceDiagnosticSettingsCreateOrUpdateParameters>(), It.IsAny <Dictionary <string, List <string> > >(), It.IsAny <CancellationToken>()))
            .Returns(Task.FromResult <Rest.Azure.AzureOperationResponse <ServiceDiagnosticSettingsResource> >(response))
            .Callback((string resourceId, ServiceDiagnosticSettingsCreateOrUpdateParameters putParameters, Dictionary <string, List <string> > headers) =>
            {
                this.calledResourceId    = resourceId;
                this.calledPutParameters = putParameters;
            });

            insightsManagementClientMock.SetupGet(f => f.ServiceDiagnosticSettings).Returns(this.insightsDiagnosticsOperationsMock.Object);
        }
Esempio n. 27
0
        protected override void ProcessRecordInternal()
        {
            var putParameters = new ServiceDiagnosticSettingsResource(location: string.Empty);

            ServiceDiagnosticSettingsResource getResponse = this.InsightsManagementClient.ServiceDiagnosticSettings.GetAsync(resourceUri: this.ResourceId, cancellationToken: CancellationToken.None).Result;

            ServiceDiagnosticSettingsResource properties = getResponse;

            if (!string.IsNullOrWhiteSpace(this.StorageAccountId))
            {
                properties.StorageAccountId = this.StorageAccountId;
            }

            if (!string.IsNullOrWhiteSpace(this.ServiceBusRuleId))
            {
                properties.ServiceBusRuleId = this.ServiceBusRuleId;
            }

            if (!string.IsNullOrWhiteSpace(this.WorkspaceId))
            {
                properties.WorkspaceId = this.WorkspaceId;
            }

            if (this.Categories == null && this.Timegrains == null)
            {
                foreach (var log in properties.Logs)
                {
                    log.Enabled = this.Enabled;
                }

                foreach (var metric in properties.Metrics)
                {
                    metric.Enabled = this.Enabled;
                }
            }
            else
            {
                if (this.Categories != null)
                {
                    foreach (string category in this.Categories)
                    {
                        LogSettings logSettings = properties.Logs.FirstOrDefault(x => string.Equals(x.Category, category, StringComparison.OrdinalIgnoreCase));

                        if (logSettings == null)
                        {
                            throw new ArgumentException(string.Format(CultureInfo.InvariantCulture, "Log category '{0}' is not available", category));
                        }

                        logSettings.Enabled = this.Enabled;
                    }
                }

                if (this.Timegrains != null)
                {
                    foreach (string timegrainString in this.Timegrains)
                    {
                        TimeSpan       timegrain      = XmlConvert.ToTimeSpan(timegrainString);
                        MetricSettings metricSettings = properties.Metrics.FirstOrDefault(x => TimeSpan.Equals(x.TimeGrain, timegrain));

                        if (metricSettings == null)
                        {
                            throw new ArgumentException(string.Format(CultureInfo.InvariantCulture, "Metric timegrain '{0}' is not available", timegrainString));
                        }
                        metricSettings.Enabled = this.Enabled;
                    }
                }
            }

            if (this.RetentionEnabled.HasValue)
            {
                var retentionPolicy = new RetentionPolicy
                {
                    Enabled = this.RetentionEnabled.Value,
                    Days    = this.RetentionInDays.Value
                };

                if (properties.Logs != null)
                {
                    foreach (LogSettings logSettings in properties.Logs)
                    {
                        logSettings.RetentionPolicy = retentionPolicy;
                    }
                }

                if (properties.Metrics != null)
                {
                    foreach (MetricSettings metricSettings in properties.Metrics)
                    {
                        metricSettings.RetentionPolicy = retentionPolicy;
                    }
                }
            }

            putParameters.Logs             = properties.Logs;
            putParameters.Metrics          = properties.Metrics;
            putParameters.ServiceBusRuleId = properties.ServiceBusRuleId;
            putParameters.StorageAccountId = properties.StorageAccountId;
            putParameters.WorkspaceId      = properties.WorkspaceId;

            ServiceDiagnosticSettingsResource result = this.InsightsManagementClient.ServiceDiagnosticSettings.CreateOrUpdateAsync(resourceUri: this.ResourceId, parameters: putParameters, cancellationToken: CancellationToken.None).Result;

            WriteObject(result);
        }
Esempio n. 28
0
 /// <summary>
 /// Create or update new diagnostic settings for the specified resource.
 /// </summary>
 /// <param name='operations'>
 /// The operations group for this extension method.
 /// </param>
 /// <param name='resourceUri'>
 /// The identifier of the resource.
 /// </param>
 /// <param name='parameters'>
 /// Parameters supplied to the operation.
 /// </param>
 public static ServiceDiagnosticSettingsResource CreateOrUpdate(this IServiceDiagnosticSettingsOperations operations, string resourceUri, ServiceDiagnosticSettingsResource parameters)
 {
     return(System.Threading.Tasks.Task.Factory.StartNew(s => ((IServiceDiagnosticSettingsOperations)s).CreateOrUpdateAsync(resourceUri, parameters), operations, System.Threading.CancellationToken.None, System.Threading.Tasks.TaskCreationOptions.None, System.Threading.Tasks.TaskScheduler.Default).Unwrap().GetAwaiter().GetResult());
 }
Esempio n. 29
0
 /// <summary>
 /// Create or update new diagnostic settings for the specified resource.
 /// </summary>
 /// <param name='operations'>
 /// The operations group for this extension method.
 /// </param>
 /// <param name='resourceUri'>
 /// The identifier of the resource.
 /// </param>
 /// <param name='parameters'>
 /// Parameters supplied to the operation.
 /// </param>
 /// <param name='cancellationToken'>
 /// The cancellation token.
 /// </param>
 public static async System.Threading.Tasks.Task <ServiceDiagnosticSettingsResource> CreateOrUpdateAsync(this IServiceDiagnosticSettingsOperations operations, string resourceUri, ServiceDiagnosticSettingsResource parameters, System.Threading.CancellationToken cancellationToken = default(System.Threading.CancellationToken))
 {
     using (var _result = await operations.CreateOrUpdateWithHttpMessagesAsync(resourceUri, parameters, null, cancellationToken).ConfigureAwait(false))
     {
         return(_result.Body);
     }
 }
        /// <summary>
        /// Create or update new diagnostic settings for the specified resource.
        /// </summary>
        /// <param name='resourceUri'>
        /// The identifier of the resource.
        /// </param>
        /// <param name='parameters'>
        /// Parameters supplied to the operation.
        /// </param>
        /// <param name='customHeaders'>
        /// Headers that will be added to request.
        /// </param>
        /// <param name='cancellationToken'>
        /// The cancellation token.
        /// </param>
        /// <exception cref="Microsoft.Rest.Azure.CloudException">
        /// Thrown when the operation returned an invalid status code
        /// </exception>
        /// <exception cref="Microsoft.Rest.SerializationException">
        /// Thrown when unable to deserialize the response
        /// </exception>
        /// <exception cref="Microsoft.Rest.ValidationException">
        /// Thrown when a required parameter is null
        /// </exception>
        /// <return>
        /// A response object containing the response body and response headers.
        /// </return>
        public async System.Threading.Tasks.Task <Microsoft.Rest.Azure.AzureOperationResponse <ServiceDiagnosticSettingsResource> > CreateOrUpdateWithHttpMessagesAsync(string resourceUri, ServiceDiagnosticSettingsResource parameters, System.Collections.Generic.Dictionary <string, System.Collections.Generic.List <string> > customHeaders = null, System.Threading.CancellationToken cancellationToken = default(System.Threading.CancellationToken))
        {
            if (resourceUri == null)
            {
                throw new Microsoft.Rest.ValidationException(Microsoft.Rest.ValidationRules.CannotBeNull, "resourceUri");
            }
            if (parameters == null)
            {
                throw new Microsoft.Rest.ValidationException(Microsoft.Rest.ValidationRules.CannotBeNull, "parameters");
            }
            if (parameters != null)
            {
                parameters.Validate();
            }
            if (this.Client.SubscriptionId == null)
            {
                throw new Microsoft.Rest.ValidationException(Microsoft.Rest.ValidationRules.CannotBeNull, "this.Client.SubscriptionId");
            }
            string apiVersion = "2015-07-01";
            // Tracing
            bool   _shouldTrace  = Microsoft.Rest.ServiceClientTracing.IsEnabled;
            string _invocationId = null;

            if (_shouldTrace)
            {
                _invocationId = Microsoft.Rest.ServiceClientTracing.NextInvocationId.ToString();
                System.Collections.Generic.Dictionary <string, object> tracingParameters = new System.Collections.Generic.Dictionary <string, object>();
                tracingParameters.Add("resourceUri", resourceUri);
                tracingParameters.Add("apiVersion", apiVersion);
                tracingParameters.Add("parameters", parameters);
                tracingParameters.Add("cancellationToken", cancellationToken);
                Microsoft.Rest.ServiceClientTracing.Enter(_invocationId, this, "CreateOrUpdate", tracingParameters);
            }
            // Construct URL
            var _baseUrl = this.Client.BaseUri.AbsoluteUri;
            var _url     = new System.Uri(new System.Uri(_baseUrl + (_baseUrl.EndsWith("/") ? "" : "/")), "{resourceUri}/providers/microsoft.insights/diagnosticSettings/service").ToString();

            _url = _url.Replace("{resourceUri}", System.Uri.EscapeDataString(resourceUri));
            _url = _url.Replace("{subscriptionId}", System.Uri.EscapeDataString(this.Client.SubscriptionId));
            System.Collections.Generic.List <string> _queryParameters = new System.Collections.Generic.List <string>();
            if (apiVersion != null)
            {
                _queryParameters.Add(string.Format("api-version={0}", System.Uri.EscapeDataString(apiVersion)));
            }
            if (_queryParameters.Count > 0)
            {
                _url += (_url.Contains("?") ? "&" : "?") + string.Join("&", _queryParameters);
            }
            // Create HTTP transport objects
            System.Net.Http.HttpRequestMessage  _httpRequest  = new System.Net.Http.HttpRequestMessage();
            System.Net.Http.HttpResponseMessage _httpResponse = null;
            _httpRequest.Method     = new System.Net.Http.HttpMethod("PUT");
            _httpRequest.RequestUri = new System.Uri(_url);
            // Set Headers
            if (this.Client.GenerateClientRequestId != null && this.Client.GenerateClientRequestId.Value)
            {
                _httpRequest.Headers.TryAddWithoutValidation("x-ms-client-request-id", System.Guid.NewGuid().ToString());
            }
            if (this.Client.AcceptLanguage != null)
            {
                if (_httpRequest.Headers.Contains("accept-language"))
                {
                    _httpRequest.Headers.Remove("accept-language");
                }
                _httpRequest.Headers.TryAddWithoutValidation("accept-language", this.Client.AcceptLanguage);
            }
            if (customHeaders != null)
            {
                foreach (var _header in customHeaders)
                {
                    if (_httpRequest.Headers.Contains(_header.Key))
                    {
                        _httpRequest.Headers.Remove(_header.Key);
                    }
                    _httpRequest.Headers.TryAddWithoutValidation(_header.Key, _header.Value);
                }
            }

            // Serialize Request
            string _requestContent = null;

            if (parameters != null)
            {
                _requestContent      = Microsoft.Rest.Serialization.SafeJsonConvert.SerializeObject(parameters, this.Client.SerializationSettings);
                _httpRequest.Content = new System.Net.Http.StringContent(_requestContent, System.Text.Encoding.UTF8);
                _httpRequest.Content.Headers.ContentType = System.Net.Http.Headers.MediaTypeHeaderValue.Parse("application/json; charset=utf-8");
            }
            // Set Credentials
            if (this.Client.Credentials != null)
            {
                cancellationToken.ThrowIfCancellationRequested();
                await this.Client.Credentials.ProcessHttpRequestAsync(_httpRequest, cancellationToken).ConfigureAwait(false);
            }
            // Send Request
            if (_shouldTrace)
            {
                Microsoft.Rest.ServiceClientTracing.SendRequest(_invocationId, _httpRequest);
            }
            cancellationToken.ThrowIfCancellationRequested();
            _httpResponse = await this.Client.HttpClient.SendAsync(_httpRequest, cancellationToken).ConfigureAwait(false);

            if (_shouldTrace)
            {
                Microsoft.Rest.ServiceClientTracing.ReceiveResponse(_invocationId, _httpResponse);
            }
            System.Net.HttpStatusCode _statusCode = _httpResponse.StatusCode;
            cancellationToken.ThrowIfCancellationRequested();
            string _responseContent = null;

            if ((int)_statusCode != 200)
            {
                var ex = new Microsoft.Rest.Azure.CloudException(string.Format("Operation returned an invalid status code '{0}'", _statusCode));
                try
                {
                    _responseContent = await _httpResponse.Content.ReadAsStringAsync().ConfigureAwait(false);

                    CloudError _errorBody = Microsoft.Rest.Serialization.SafeJsonConvert.DeserializeObject <CloudError>(_responseContent, this.Client.DeserializationSettings);
                    if (_errorBody != null)
                    {
                        ex      = new Microsoft.Rest.Azure.CloudException(_errorBody.Message);
                        ex.Body = _errorBody;
                    }
                }
                catch (Newtonsoft.Json.JsonException)
                {
                    // Ignore the exception
                }
                ex.Request  = new Microsoft.Rest.HttpRequestMessageWrapper(_httpRequest, _requestContent);
                ex.Response = new Microsoft.Rest.HttpResponseMessageWrapper(_httpResponse, _responseContent);
                if (_httpResponse.Headers.Contains("x-ms-request-id"))
                {
                    ex.RequestId = _httpResponse.Headers.GetValues("x-ms-request-id").FirstOrDefault();
                }
                if (_shouldTrace)
                {
                    Microsoft.Rest.ServiceClientTracing.Error(_invocationId, ex);
                }
                _httpRequest.Dispose();
                if (_httpResponse != null)
                {
                    _httpResponse.Dispose();
                }
                throw ex;
            }
            // Create Result
            var _result = new Microsoft.Rest.Azure.AzureOperationResponse <ServiceDiagnosticSettingsResource>();

            _result.Request  = _httpRequest;
            _result.Response = _httpResponse;
            if (_httpResponse.Headers.Contains("x-ms-request-id"))
            {
                _result.RequestId = _httpResponse.Headers.GetValues("x-ms-request-id").FirstOrDefault();
            }
            // Deserialize Response
            if ((int)_statusCode == 200)
            {
                _responseContent = await _httpResponse.Content.ReadAsStringAsync().ConfigureAwait(false);

                try
                {
                    _result.Body = Microsoft.Rest.Serialization.SafeJsonConvert.DeserializeObject <ServiceDiagnosticSettingsResource>(_responseContent, this.Client.DeserializationSettings);
                }
                catch (Newtonsoft.Json.JsonException ex)
                {
                    _httpRequest.Dispose();
                    if (_httpResponse != null)
                    {
                        _httpResponse.Dispose();
                    }
                    throw new Microsoft.Rest.SerializationException("Unable to deserialize the response.", _responseContent, ex);
                }
            }
            if (_shouldTrace)
            {
                Microsoft.Rest.ServiceClientTracing.Exit(_invocationId, _result);
            }
            return(_result);
        }