/// <summary> /// Suppression delete utility for a given recommendation resource Id. /// </summary> /// <param name="resourceUri">ResourceID of the recommendation</param> /// <param name="recommendationId">RecommendationId of the recommendation</param> /// <returns>List of PsAzureAdvisorResourceRecommendationBase objects</returns> public List <PsAzureAdvisorResourceRecommendationBase> SuppressionDelete(string resourceUri, string recommendationId) { AzureOperationResponse <IPage <SuppressionContract> > suppressionList = null; AzureOperationResponse <IPage <ResourceRecommendationBase> > recommendationList = null; IEnumerable <PsAzureAdvisorSuppressionContract> psSuppressionContractList = null; IList <PsAzureAdvisorResourceRecommendationBase> responseRecommendationList = new List <PsAzureAdvisorResourceRecommendationBase>(); List <PsAzureAdvisorResourceRecommendationBase> responseRecommendation = new List <PsAzureAdvisorResourceRecommendationBase>(); List <AzureOperationResponse> response = new List <AzureOperationResponse>(); // Get the list of all suppressions suppressionList = this.ResourceAdvisorClient.Suppressions.ListWithHttpMessagesAsync().Result; psSuppressionContractList = PsAzureAdvisorSuppressionContract.FromSuppressionContractList(suppressionList.Body.AsEnumerable()); // Get all the suppression for this recommendationId foreach (PsAzureAdvisorSuppressionContract contract in psSuppressionContractList) { // Delete only if the supression belongs to provided RecommendationName if (contract.Id.Contains(recommendationId)) { response.Add(this.ResourceAdvisorClient.Suppressions.DeleteWithHttpMessagesAsync(resourceUri, recommendationId, contract.Name).Result); } } // Get all the recommendation and convert to its corresponding psobject recommendationList = this.ResourceAdvisorClient.Recommendations.ListWithHttpMessagesAsync().Result; responseRecommendationList = PsAzureAdvisorResourceRecommendationBase.GetFromResourceRecommendationBase(recommendationList.Body); // Add the particular recommendation to the response of cmdlet responseRecommendation.Add(RecommendationHelper.RecommendationFilterByRecommendation(responseRecommendationList, recommendationId)); return(responseRecommendation); }
/// <summary> /// Gets the list of recommendations associated with the given resourceId. Default subscriptionId will be used to gather recommendation(s). /// </summary> /// <param name="advisorClient">Advisor Client</param> /// <param name="resourceId">ResourceId of recommendations</param> /// <returns>List of PsAzureAdvisorResourceRecommendationBase</returns> public List <PsAzureAdvisorResourceRecommendationBase> GetAllRecommendationsFromClient(IAdvisorManagementClient advisorClient, string resourceId) { AzureOperationResponse <IPage <ResourceRecommendationBase> > operationResponseRecommendation = null; List <ResourceRecommendationBase> entirePageLinkRecommendationData = new List <ResourceRecommendationBase>(); string nextPageLink = string.Empty; do { if (string.IsNullOrEmpty(nextPageLink)) { operationResponseRecommendation = advisorClient.Recommendations.ListWithHttpMessagesAsync().Result; } else { operationResponseRecommendation = advisorClient.Recommendations.ListNextWithHttpMessagesAsync(nextPageLink).Result; } nextPageLink = operationResponseRecommendation.Body.NextPageLink; // Add current page items to the List entirePageLinkRecommendationData.AddRange(operationResponseRecommendation.Body.ToList()); }while (!string.IsNullOrEmpty(nextPageLink)); // Convert to PsAzureAdvisorResourceRecommendationBase list and return return(RecommendationHelper.RecommendationFilterByResourceId( PsAzureAdvisorResourceRecommendationBase.GetFromResourceRecommendationBase(entirePageLinkRecommendationData), resourceId)); }
// GET: Store public ActionResult Index(string categoryId) { User user = (User)Session["User"]; List <Item> products = new List <Item>(); //only take 10 products... if (user != null) { string name = user.Email; int userId = user.UserId; products = RecommendationHelper.GetViaFunction("assoc", userId, 12); } else { products = RecommendationHelper.GetViaFunction("top", 0, 12); } var randomVm = Mapper.Map <List <Models.ProductListModel> >(RecommendationHelper.GetViaFunction("random", 0, 12)); var productsVm = Mapper.Map <List <Models.ProductListModel> >(products); // Retrieve category listing: var categoriesVm = Mapper.Map <List <Models.CategoryModel> >(categories.ToList()); var vm = new Models.StoreIndexModel { RandomProducts = randomVm, Products = productsVm, Categories = categoriesVm }; return(View(vm)); }
/// <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>(); switch (this.ParameterSetName) { case IdParameterSet: results = recommendationResourceUtil.GetAllRecommendationsFromClient(this.ResourceAdvisorClient, this.ResourceId); 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() { 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); }
public ActionResult Index() { var vm = new HomeModel(); vm.RecommendProductsTop = RecommendationHelper.GetViaFunction("top", 0, 50); return(View(vm)); }
/// <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); }
public ActionResult Index() { var vm = new HomeModel(); Contoso.Apps.Movies.Data.Models.User user = (Contoso.Apps.Movies.Data.Models.User)Session["User"]; vm.RecommendProductsTop = RecommendationHelper.GetViaFunction("top", 0, 10); if (user != null) { vm.RecommendProductsBought = RecommendationHelper.GetViaFunction("assoc", user.UserId, 10); vm.RecommendProductsLiked = RecommendationHelper.GetViaFunction("collab", user.UserId, 10); } return(View(vm)); }
public static async Task <IActionResult> Run( [HttpTrigger(AuthorizationLevel.Anonymous, "post", Route = null)] HttpRequest req, ILogger log, ExecutionContext ctx) { var config = new ConfigurationBuilder() .SetBasePath(ctx.FunctionAppDirectory) .AddJsonFile("local.settings.json", optional: true, reloadOnChange: true) .AddEnvironmentVariables() .Build(); List <Item> products = new List <Item>(); log.LogInformation($"Webhook was triggered!"); RecommendationHelper.databaseId = config["databaseId"]; RecommendationHelper.endpointUrl = config["dbConnectionUrl"]; RecommendationHelper.authorizationKey = config["dbConnectionKey"]; RecommendationHelper.Init(); try { string jsonContent = await req.ReadAsStringAsync(); dynamic payload = JsonConvert.DeserializeObject(jsonContent); log.LogInformation($"Payload recv: {payload}"); if (payload != null && payload.UserId != null) { log.LogInformation($"Getting recommendations."); products = RecommendationHelper.Get(payload.Algo.ToString(), (int)payload.UserId, (int)payload.ContentId, (int)payload.Take); return(new OkObjectResult(products)); } else { var error = $"Error Processing Recommendation: No UserId"; return(new BadRequestObjectResult(error)); } } catch (Exception ex) { var error = $"Error Processing Recommendation: {ex.Message}"; return(new BadRequestObjectResult(error)); } }
public IHttpActionResult Recommend(string algo, int count) { List <Item> products = new List <Item>(); if (HttpContext.Current.Session != null && HttpContext.Current.Session["User"] != null) { Contoso.Apps.Movies.Data.Models.User user = (Contoso.Apps.Movies.Data.Models.User)HttpContext.Current.Session["User"]; string name = user.Email; int userId = user.UserId; products = RecommendationHelper.GetViaFunction(algo, userId, count); } else { products = RecommendationHelper.GetViaFunction(algo, 0, count); } return(Json(products)); }
// GET: Store/Details/5 public async Task <ActionResult> Details(int?id) { if (id == null) { return(new HttpStatusCodeResult(HttpStatusCode.BadRequest)); } Item product = await SqlDbHelper.GetItem(id); if (product == null) { return(HttpNotFound()); } var productVm = Mapper.Map <Models.ProductModel>(product); //Get the simliar product to this item... var similarProducts = RecommendationHelper.GetViaFunction("content", 0, id.Value); var similarProductsVm = Mapper.Map <List <Models.ProductListModel> >(similarProducts); // Find related products, based on the category var relatedProducts = items.Where(p => p.CategoryId == product.CategoryId && p.ItemId != product.ItemId).Take(10).ToList(); var relatedProductsVm = Mapper.Map <List <Models.ProductListModel> >(relatedProducts); // Retrieve category listing var categoriesVm = Mapper.Map <List <Models.CategoryModel> >(categories); // Retrieve "new products" as a list of three random products not equal to the displayed one var newProducts = items.Where(p => p.ItemId != product.ItemId).Take(50).ToList().Shuffle().Take(3); var newProductsVm = Mapper.Map <List <Models.ProductListModel> >(newProducts); var vm = new Models.StoreDetailsModel { Product = productVm, RelatedProducts = relatedProductsVm, SimilarProducts = similarProductsVm, NewProducts = newProductsVm, Categories = categoriesVm }; return(View(vm)); }
public IHttpActionResult SimilarUsers(string algo) { List <Data.Models.User> users = new List <Data.Models.User>(); Contoso.Apps.Movies.Data.Models.User user = (Contoso.Apps.Movies.Data.Models.User)HttpContext.Current.Session["User"]; string name = user.Email; int userId = user.UserId; switch (algo) { case "jaccard": users = RecommendationHelper.GetViaFunction(userId); break; case "pearson": users = RecommendationHelper.GetViaFunction(userId); break; } return(Json(users)); }
// GET: Store public ActionResult Index(string categoryId) { User user = (User)Session["User"]; List <Item> products = RecommendationHelper.GetViaFunction("top", 0, 100); var randomVm = Mapper.Map <List <Models.ProductListModel> >(RecommendationHelper.GetViaFunction("random", 0, 10)); var productsVm = Mapper.Map <List <Models.ProductListModel> >(products); // Retrieve category listing: var categoriesVm = Mapper.Map <List <Models.CategoryModel> >(categories.ToList()); var vm = new Models.StoreIndexModel { RandomProducts = randomVm, Products = productsVm, Categories = categoriesVm }; return(View(vm)); }
/// <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 <PsAzureAdvisorConfigurationData> results = new List <PsAzureAdvisorConfigurationData>(); ConfigData configData = new ConfigData(); ConfigDataProperties configDataProperties = new ConfigDataProperties(); WriteVerboseWithTimestamp(string.Format(Resources.ConfigurationUpdate, this.ResourceAdvisorClient.SubscriptionId)); // Used to store type of configuration bool isSubscriptionTypeConfiguration = false; bool isResourceGroupTypeConfiguration = false; switch (this.ParameterSetName) { case InputObjectLowCpuExcludeParameterSet: if (Exclude) { configDataProperties.Exclude = true; } else { configDataProperties.Exclude = false; } configDataProperties.LowCpuThreshold = this.LowCpuThreshold.ToString(); configData.Properties = configDataProperties; // If InputObject is not null, this is a piping scenario. if (this.InputObject != null) { isSubscriptionTypeConfiguration = SuppressionHelper.IsConfigurationSubscriptionLevel(this.InputObject); if (isSubscriptionTypeConfiguration) { if (ShouldProcess(this.ResourceAdvisorClient.SubscriptionId, string.Format(Resources.ConfigurationUpdateSubscriptionLevel, this.ResourceAdvisorClient.SubscriptionId))) { results = this.CreateConfigurationBySubscription(configData); } } } else { if (ShouldProcess(this.ResourceAdvisorClient.SubscriptionId, string.Format(Resources.ConfigurationUpdateSubscriptionLevel, this.ResourceAdvisorClient.SubscriptionId))) { results = this.CreateConfigurationBySubscription(configData); } } break; case InputObjectRgExcludeParameterSet: if (Exclude) { configDataProperties.Exclude = true; } else { configDataProperties.Exclude = false; } configData.Properties = configDataProperties; // InputObject is not null, this is a piping scenario. if (this.InputObject != null) { isResourceGroupTypeConfiguration = SuppressionHelper.IsConfigurationResourceGroupLevel(this.InputObject); if (isResourceGroupTypeConfiguration) { string resourceGroup = RecommendationHelper.GetResourceGroupFromResourceID(this.InputObject.Id); if (ShouldProcess(resourceGroup, string.Format(Resources.ConfigurationUpdateResourceGroupLevel, this.ResourceAdvisorClient.SubscriptionId, resourceGroup))) { results = this.CreateConfigurationByResourceGroup(configData, resourceGroup); } } } else { if (ShouldProcess(this.ResourceGroupName, string.Format(Resources.ConfigurationUpdateResourceGroupLevel, this.ResourceAdvisorClient.SubscriptionId, this.ResourceGroupName))) { results = this.CreateConfigurationByResourceGroup(configData, this.ResourceGroupName); } } break; } this.WriteObject(results, 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); }