/// <summary>Get the list of virtual machines, based on the precondition check on the schedule table and activity table. /// here precondion ==> get the virtual machines from the crawler which are not in the recent scheduled list and not in the recent activities.</summary> /// <param name="scaleSetId">scale set id to filter the virtual machines.</param> /// <returns></returns> private IList <VirtualMachineCrawlerResponse> GetVirtualMachineSet(string loadBalancerId) { var rowKey = loadBalancerId.Replace(Delimeters.ForwardSlash, Delimeters.Exclamatory); var groupNameFilter = TableQuery.GenerateFilterCondition("PartitionKey", QueryComparisons.Equal, rowKey); var resultsSet = ResourceFilterHelper.QueryCrawlerResponseByMeanTime <VirtualMachineCrawlerResponse>(_azureClient.AzureSettings, StorageTableNames.VirtualMachineCrawlerTableName, groupNameFilter); resultsSet = resultsSet.Where(x => PowerState.Parse(x.State) == PowerState.Running).ToList(); if (resultsSet == null || !resultsSet.Any()) { return(null); } // TODO combine the schedule and activity table var scheduleEntities = ResourceFilterHelper.QuerySchedulesByMeanTime <ScheduledRules>( _azureClient.AzureSettings, StorageTableNames.ScheduledRulesTableName); var scheduleEntitiesResourceIds = scheduleEntities == null || !scheduleEntities.Any() ? new List <string>() : scheduleEntities.Select(x => x.RowKey.Replace(Delimeters.Exclamatory, Delimeters.ForwardSlash)); var result = resultsSet.Where(x => !scheduleEntitiesResourceIds.Contains(x.Id)); return(result.ToList()); }
/// <summary>Pick the random scale set.</summary> /// <returns></returns> private LoadBalancerCrawlerResponse GetRandomLoadBalancer() { var filter = TableQuery.GenerateFilterConditionForBool("HasVirtualMachines", QueryComparisons.Equal, true); var resultsSet = ResourceFilterHelper.QueryCrawlerResponseByMeanTime <LoadBalancerCrawlerResponse>(_azureClient.AzureSettings, StorageTableNames.LoadBalancerCrawlerTableName, filter); if (resultsSet == null || !resultsSet.Any()) { return(null); } var random = new Random(); var randomLoadBalancerIndex = random.Next(0, resultsSet.Count); return(resultsSet.ToArray()[randomLoadBalancerIndex]); }
/// <summary>Get the list of virtual machines, based on the preconditioncheck on the schedule table and activity table. /// here precondion ==> get the virtual machines from the crawler which are not in the recent scheduled list and not in the recent activities.</summary> /// <returns></returns> private IList <VirtualMachineCrawlerResponse> GetRandomVmSet() { //To remove the virtual machines which are recently executed. var executedResultsSet = new List <VirtualMachineCrawlerResponse>(); var groupNameFilter = TableQuery.GenerateFilterCondition("VirtualMachineGroup", QueryComparisons.Equal, VirtualMachineGroup.VirtualMachines.ToString()); var resultsSet = ResourceFilterHelper.QueryCrawlerResponseByMeanTime <VirtualMachineCrawlerResponse>( azureClient.AzureSettings, StorageTableNames.VirtualMachineCrawlerTableName, groupNameFilter); resultsSet = resultsSet.Where(x => PowerState.Parse(x.State) == PowerState.Running).ToList(); if (!resultsSet.Any()) { return(null); } var scheduleEntities = ResourceFilterHelper.QuerySchedulesByMeanTime <ScheduledRules>(azureClient.AzureSettings, StorageTableNames.ScheduledRulesTableName); var scheduleEntitiesResourceIds = scheduleEntities == null || !scheduleEntities.Any() ? new List <string>() : scheduleEntities.Select(x => x.RowKey.Replace(Delimeters.Exclamatory, Delimeters.ForwardSlash)); if (scheduleEntitiesResourceIds.Count() != 0) { foreach (var result in resultsSet) { foreach (var Id in scheduleEntitiesResourceIds) { if ((Id.Contains(result.ResourceGroupName)) && (Id.Contains(result.ResourceName))) { executedResultsSet.Add(result); break; } } } //List<VirtualMachineCrawlerResponse> resultsSets = resultsSet.Where(x => (scheduleEntitiesResourceIds.Contains(x.ResourceGroupName) && scheduleEntitiesResourceIds.Contains(x.ResourceName))).ToList(); return(resultsSet = resultsSet.Except(executedResultsSet).ToList()); } else { return(resultsSet.ToList()); } }
/// <summary>Get the list of virtual machines, based on the preconditioncheck on the schedule table and activity table. /// here precondion ==> get the virtual machines from the crawler which are not in the recent scheduled list and not in the recent activities.</summary> /// <returns></returns> private IList <VirtualMachineCrawlerResponse> GetRandomVmSet() { var groupNameFilter = TableQuery.GenerateFilterCondition("VirtualMachineGroup", QueryComparisons.Equal, VirtualMachineGroup.VirtualMachines.ToString()); var resultsSet = ResourceFilterHelper.QueryCrawlerResponseByMeanTime <VirtualMachineCrawlerResponse>( azureClient.AzureSettings, StorageTableNames.VirtualMachineCrawlerTableName, groupNameFilter); resultsSet = resultsSet.Where(x => PowerState.Parse(x.State) == PowerState.Running).ToList(); if (!resultsSet.Any()) { return(null); } var scheduleEntities = ResourceFilterHelper.QuerySchedulesByMeanTime <ScheduledRules>(azureClient.AzureSettings, StorageTableNames.ScheduledRulesTableName); var scheduleEntitiesResourceIds = scheduleEntities == null || !scheduleEntities.Any() ? new List <string>() : scheduleEntities.Select(x => x.RowKey.Replace(Delimeters.Exclamatory, Delimeters.ForwardSlash)); var result = resultsSet.Where(x => !scheduleEntitiesResourceIds.Contains(x.Id)); return(result.ToList()); }