Пример #1
0
        /// <summary>
        /// Executes the cmdlet.
        /// </summary>
        public override void ExecuteCmdlet()
        {
            RecommendationResource recommendationResourceUtil                  = new RecommendationResource();
            List <PsAzureAdvisorResourceRecommendationBase> results            = new List <PsAzureAdvisorResourceRecommendationBase>();
            List <ResourceRecommendationBase> entirePageLinkRecommendationData = new List <ResourceRecommendationBase>();
            AzureOperationResponse <ResourceRecommendationBase> recommendation = null;

            switch (this.ParameterSetName)
            {
            case IdParameterSet:
                string recommendationId = RecommendationHelper.GetRecommendationIdFromResourceID(this.ResourceId);

                recommendation = this.ResourceAdvisorClient.Recommendations.GetWithHttpMessagesAsync("subscriptions/" + this.ResourceAdvisorClient.SubscriptionId, recommendationId).Result;
                results.Add(PsAzureAdvisorResourceRecommendationBase.GetFromResourceRecommendationBase(recommendation.Body));
                break;

            case NameParameterSet:
                results = recommendationResourceUtil.GetAllRecommendationsFromClient(this.ResourceAdvisorClient);

                // Filter out the resourcegroupname recommendations
                if (!string.IsNullOrEmpty(this.ResourceGroupName))
                {
                    results = RecommendationHelper.RecommendationFilterByCategoryAndResource(results, string.Empty, this.ResourceGroupName);
                }
                break;
            }

            if (!string.IsNullOrEmpty(this.Category))
            {
                results = RecommendationHelper.RecommendationFilterByCategoryAndResource(results, this.Category, string.Empty);
            }

            this.WriteObject(results, true);
        }
Пример #2
0
        /// <summary>
        /// Executes the cmdlet.
        /// </summary>
        public override void ExecuteCmdlet()
        {
            string resourceUri      = string.Empty;
            string recommendationId = string.Empty;

            WriteVerbose(Resources.SuppressionRemove);

            AzureOperationResponse <IPage <SuppressionContract> > suppressionList = null;

            // This i used for the recommendation call, to collect supression ID data associated.
            // AzureOperationResponse<IPage<ResourceRecommendationBase>> recommendationList = null;
            IList <PsAzureAdvisorResourceRecommendationBase> responseRecommendationList = new List <PsAzureAdvisorResourceRecommendationBase>();

            List <PsAzureAdvisorResourceRecommendationBase>     responseRecommendation = new List <PsAzureAdvisorResourceRecommendationBase>();
            AzureOperationResponse <ResourceRecommendationBase> recommendation         = null;

            IEnumerable <PsAzureAdvisorSuppressionContract> psSuppressionContractList = null;
            var response = new List <AzureOperationResponse>();

            switch (this.ParameterSetName)
            {
            case IdParameterSet:
                resourceUri      = RecommendationHelper.GetFullResourceUriFromResourceID(this.ResourceId);
                recommendationId = RecommendationHelper.GetRecommendationIdFromResourceID(this.ResourceId);

                if (ShouldProcess(recommendationId, string.Format(Resources.EnableRecommendationWarningMessage, this.RecommendationName)))
                {
                    responseRecommendation.AddRange(this.SuppressionDelete(resourceUri, recommendationId));
                }
                break;

            case NameParameterSet:
                recommendation            = this.ResourceAdvisorClient.Recommendations.GetWithHttpMessagesAsync("subscriptions/" + this.ResourceAdvisorClient.SubscriptionId, this.RecommendationName).Result;
                resourceUri               = RecommendationHelper.GetFullResourceUriFromResourceID(recommendation.Body.Id);
                suppressionList           = this.ResourceAdvisorClient.Suppressions.ListWithHttpMessagesAsync().Result;
                psSuppressionContractList = PsAzureAdvisorSuppressionContract.FromSuppressionContractList(suppressionList.Body.AsEnumerable());

                if (ShouldProcess(this.RecommendationName, string.Format(Resources.EnableRecommendationWarningMessage, this.RecommendationName)))
                {
                    responseRecommendation.AddRange(this.SuppressionDelete(resourceUri, this.RecommendationName));
                }
                break;

            case InputObjectParameterSet:
                // Parse out the Subscription-ID, Recommendation-ID from the ResourceId parameter.
                resourceUri      = RecommendationHelper.GetFullResourceUriFromResourceID(this.InputObject.Id);
                recommendationId = RecommendationHelper.GetRecommendationIdFromResourceID(this.InputObject.Id);
                if (ShouldProcess(recommendationId, string.Format(Resources.EnableRecommendationWarningMessage, recommendationId)))
                {
                    responseRecommendation.AddRange(this.SuppressionDelete(resourceUri, recommendationId));
                }
                break;
            }

            this.WriteObject(responseRecommendation, true);
        }
Пример #3
0
        /// <summary>
        /// Executes the cmdlet.
        /// </summary>
        public override void ExecuteCmdlet()
        {
            string resourceUri      = string.Empty;
            string recommendationId = string.Empty;
            SuppressionContract suppressionContract = null;

            WriteVerbose(Resources.SuppressionCreate);

            // This list contains all the response for the azure-operation
            List <AzureOperationResponse <SuppressionContract> > azureOperationResponseSuppression = new List <AzureOperationResponse <SuppressionContract> >();
            var returnSuppressionContract = new List <PsAzureAdvisorSuppressionContract>();

            // Create the suppression contract
            suppressionContract = new SuppressionContract(null, DefaultSuppressionName, null, null, this.Days == 0 ? string.Empty : this.Days.ToString());

            switch (this.ParameterSetName)
            {
            case IdParameterSet:
                // parse out the Subscription-ID, Recommendation-ID form the ResourceId parameter.
                resourceUri      = RecommendationHelper.GetFullResourceUriFromResourceID(this.ResourceId);
                recommendationId = RecommendationHelper.GetRecommendationIdFromResourceID(this.ResourceId);

                if (ShouldProcess(recommendationId, string.Format(Resources.DisableRecommendationWarningMessage, recommendationId)))
                {
                    azureOperationResponseSuppression.Add(this.ResourceAdvisorClient.Suppressions.CreateWithHttpMessagesAsync(resourceUri, recommendationId, DefaultSuppressionName, suppressionContract).Result);
                }

                break;

            case NameParameterSet:
                AzureOperationResponse <ResourceRecommendationBase> recommendation = this.ResourceAdvisorClient.Recommendations.GetWithHttpMessagesAsync("subscriptions/" + this.ResourceAdvisorClient.SubscriptionId, this.RecommendationName).Result;
                resourceUri = RecommendationHelper.GetFullResourceUriFromResourceID(recommendation.Body.Id);

                // Make a get recommendation for this Name and get the ID
                if (ShouldProcess(this.RecommendationName, string.Format(Resources.DisableRecommendationWarningMessage, this.RecommendationName)))
                {
                    azureOperationResponseSuppression.Add(this.ResourceAdvisorClient.Suppressions.CreateWithHttpMessagesAsync(resourceUri, this.RecommendationName, DefaultSuppressionName, suppressionContract).Result);
                }
                break;

            case InputObjectParameterSet:

                // Parse out the Subscription-ID, Recommendation-ID from the ResourceId parameter.
                resourceUri      = RecommendationHelper.GetFullResourceUriFromResourceID(this.InputObject.ResourceId);
                recommendationId = RecommendationHelper.GetRecommendationIdFromResourceID(this.InputObject.ResourceId);

                if (ShouldProcess(recommendationId, string.Format(Resources.DisableRecommendationWarningMessage, recommendationId)))
                {
                    azureOperationResponseSuppression.Add(this.ResourceAdvisorClient.Suppressions.CreateWithHttpMessagesAsync(resourceUri, recommendationId, DefaultSuppressionName, suppressionContract).Result);
                }
                break;
            }

            // Get the supresssion details from the suppression Get API, the response does not have the data for the suppression-name, resourceid.
            if (azureOperationResponseSuppression.Count > 0)
            {
                AzureOperationResponse <IPage <SuppressionContract> > suppressionList           = this.ResourceAdvisorClient.Suppressions.ListWithHttpMessagesAsync().Result;
                IEnumerable <PsAzureAdvisorSuppressionContract>       psSuppressionContractList = PsAzureAdvisorSuppressionContract.FromSuppressionContractList(suppressionList.Body.AsEnumerable());

                foreach (AzureOperationResponse <SuppressionContract> azureOperationResponse in azureOperationResponseSuppression)
                {
                    foreach (PsAzureAdvisorSuppressionContract contractItem in psSuppressionContractList)
                    {
                        // Match the supression-ID
                        if (azureOperationResponse.Body.SuppressionId == contractItem.SuppressionId)
                        {
                            returnSuppressionContract.Add(contractItem);
                        }
                    }
                }
            }

            this.WriteObject(returnSuppressionContract, true);
        }
        /// <summary>
        /// Executes the cmdlet.
        /// </summary>
        public override void ExecuteCmdlet()
        {
            List <PsAzureAdvisorResourceRecommendationBase> results = new List <PsAzureAdvisorResourceRecommendationBase>();

            AzureOperationResponse <IPage <ResourceRecommendationBase> > operationResponseRecommendation = null;
            List <ResourceRecommendationBase> entirePageLinkRecommendationData = new List <ResourceRecommendationBase>();
            AzureOperationResponse <ResourceRecommendationBase> recommendation = null;

            switch (this.ParameterSetName)
            {
            case IdParameterSet:
                string recommendationId = RecommendationHelper.GetRecommendationIdFromResourceID(this.ResourceId);

                recommendation = this.ResourceAdvisorClient.Recommendations.GetWithHttpMessagesAsync("subscriptions/" + this.ResourceAdvisorClient.SubscriptionId, recommendationId).Result;
                results.Add(PsAzureAdvisorResourceRecommendationBase.GetFromResourceRecommendationBase(recommendation.Body));
                break;

            case NameParameterSet:
                string nextPagelink = string.Empty;

                // Iterate the page-link if exists, if the first iteration retreives the data.
                do
                {
                    if (string.IsNullOrEmpty(nextPagelink))
                    {
                        operationResponseRecommendation = this.ResourceAdvisorClient.Recommendations.ListWithHttpMessagesAsync().Result;
                    }
                    else
                    {
                        operationResponseRecommendation = this.ResourceAdvisorClient.Recommendations.ListWithHttpMessagesAsync(nextPagelink).Result;
                    }
                    // Advisor .net SDK is broken for the paging capability. So we will not use the paging until SDK is fixed.
                    // nextPagelink = operationResponseRecommendation.Body.NextPageLink;

                    // Add current page items to the List
                    entirePageLinkRecommendationData.AddRange(operationResponseRecommendation.Body.ToList());
                }while (!string.IsNullOrEmpty(nextPagelink));

                // Convert to PsAzureAdvisorResourceRecommendationBase list
                results = PsAzureAdvisorResourceRecommendationBase.GetFromResourceRecommendationBase(entirePageLinkRecommendationData);

                // Filter out the resourcegroupname recommendations
                if (!string.IsNullOrEmpty(this.ResourceGroupName))
                {
                    results = RecommendationHelper.RecommendationFilterByCategoryAndResource(results, string.Empty, this.ResourceGroupName);
                }

                break;
            }

            if (!string.IsNullOrEmpty(this.Category))
            {
                results = RecommendationHelper.RecommendationFilterByCategoryAndResource(results, this.Category, string.Empty);
            }

            if (Refresh)
            {
                this.ResourceAdvisorClient.Recommendations.GenerateWithHttpMessagesAsync();
            }

            this.WriteObject(results, true);
        }