/// <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); }
/// <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); }
/// <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); }