Beispiel #1
0
        public static void ProcessPipeObject(PSScheduledQueryRuleResource inputObject, out string resourceGroupName, out string ruleName)
        {
            if (string.IsNullOrWhiteSpace(inputObject.Id))
            {
                throw new PSArgumentException(message: "Log alert resource Id cannot be null", paramName: "LogAlert");
            }

            if (string.IsNullOrWhiteSpace(inputObject.Name))
            {
                throw new PSArgumentException(message: "Log alert Name cannot be null", paramName: "LogAlert");
            }

            ruleName = inputObject.Name;

            try
            {
                Management.Internal.Resources.Utilities.Models.ResourceIdentifier resourceIdentifier = new Management.Internal.Resources.Utilities.Models.ResourceIdentifier(inputObject.Id);
                // Retrieve only the resource group name from the Id
                resourceGroupName = resourceIdentifier.ResourceGroupName;
            }
            catch (System.ArgumentException ex)
            {
                throw new PSArgumentException(message: "Invalid log alert resource Id: " + ex.Message, paramName: "LogAlert");
            }
        }
        protected override void ProcessRecordInternal()
        {
            try
            {
                if (this.IsParameterBound(c => c.ResourceId))
                {
                    var resourceIdentifier = new ResourceIdentifier(this.ResourceId);
                    this.ResourceGroupName = resourceIdentifier.ResourceGroupName;
                    this.Name = resourceIdentifier.ResourceName;
                }

                if (!string.IsNullOrEmpty(this.Name))
                {
                    var result = new PSScheduledQueryRuleResource(this.MonitorManagementClient.ScheduledQueryRules
                                                                  .GetWithHttpMessagesAsync(this.ResourceGroupName, this.Name).Result.Body);
                    WriteObject(result);
                }
                else if (!string.IsNullOrEmpty(this.ResourceGroupName))
                {
                    var result = this.MonitorManagementClient.ScheduledQueryRules
                                 .ListByResourceGroupWithHttpMessagesAsync(this.ResourceGroupName).Result.Body
                                 .Select(f => new PSScheduledQueryRuleResource(f));
                    WriteObject(result, true);
                }
                else
                {
                    var result = this.MonitorManagementClient.ScheduledQueryRules
                                 .ListBySubscriptionWithHttpMessagesAsync().Result.Body
                                 .Select(f => new PSScheduledQueryRuleResource(f));
                    WriteObject(result, true);
                }
            }
            catch (Exception ex)
            {
                if (ex.Message.Contains("NotFound"))
                {
                    WriteObject(null);
                    return;
                }

                throw new Exception("Error occured while getting Log Alert rules", ex.InnerException);
            }
        }