private static void UpdateAzureRegions(IEnumerable <AzureCatalogue> azureCatalogueResult) { try { var cmpWapDb = new CmpWapDb(); var cmpRegions = cmpWapDb.FetchAzureRegionList(onlyActiveOnes: false); var azureRegions = azureCatalogueResult.Select(ac => new AzureRegion { Name = ac.RegionName, Description = ac.RegionDisplayName, OsImageContainer = null, IsActive = true, CreatedBy = "CMP WAP Extension", LastUpdatedBy = "CMP WAP Extension", CreatedOn = DateTime.UtcNow, LastUpdatedOn = DateTime.UtcNow }); var newRegions = azureRegions.Where(azureItem => !cmpRegions.Any(cmpItem => string.Equals(azureItem.Name.Replace(" ", string.Empty), cmpItem.Name.Replace(" ", string.Empty), StringComparison.InvariantCultureIgnoreCase))).ToList(); if (newRegions.Any()) { cmpWapDb.InsertAzureRegionByBatch(newRegions); } } catch (Exception ex) { throw new Exception("Exception caught in UpdateAzureRegions: " + ex.ToString()); } }
//********************************************************************* /// /// <summary> /// This method fetchs Azure region specific information from the /// WAP DB. /// </summary> /// //********************************************************************* private void FetchAzureRegionFromDb() { var cwdb = new CmpWapDb(); var list = cwdb.FetchAzureRegionList(onlyActiveOnes: true); OsList.Clear(); OsList.AddRange(list); }
private static void UpdateRegionVmOsMappings(IEnumerable <AzureCatalogue> azureCatalogueResult) { var cmpWapDb = new CmpWapDb(); var cmpWapRegions = cmpWapDb.FetchAzureRegionList(onlyActiveOnes: false).ToList(); var cmpWapVmOses = cmpWapDb.FetchOsInfoList(onlyActiveOnes: false).ToList(); var newMappings = new List <AzureRegionVmOsMapping>(); try { foreach (var regionInCatalogue in azureCatalogueResult) { foreach (var vmOs in regionInCatalogue.VmOses) { //Since we format the VmOs name when inserting it into the DB table, to look it up, we will need to do the same format operation as before var vmOsName = (vmOs.Publisher + ", " + vmOs.Offer + ", " + vmOs.SKU).Length >= 100 ? (vmOs.Publisher + ", " + vmOs.Offer + ", " + vmOs.SKU).Substring(0, 100) : (vmOs.Publisher + ", " + vmOs.Offer + ", " + vmOs.SKU); //Adjusting for DB limitations in length, so that the logic comparison does not fail //We need to get the IDs to make the mapping object. Query the VmOs and Region tables to get them. var vmOsToMap = cmpWapVmOses.FirstOrDefault(x => string.Equals(vmOsName, x.Name, StringComparison.InvariantCultureIgnoreCase)); var regionToMap = cmpWapRegions.FirstOrDefault(y => string.Equals(regionInCatalogue.RegionName.Replace(" ", string.Empty), y.Name.Replace(" ", string.Empty), StringComparison.InvariantCultureIgnoreCase)); if (vmOsToMap == null || regionToMap == null) { continue; //something's wrong here if we reach this. } var newMapping = new AzureRegionVmOsMapping { AzureRegionId = regionToMap.AzureRegionId, VmOsId = vmOsToMap.VmOsId, IsActive = true }; newMappings.Add(newMapping); } } if (newMappings.Any()) { cmpWapDb.SetRegionVmOsMappingsByBatch(newMappings); } } catch (Exception ex) { throw new Exception("Exception caught in UpdateRegionVmOsMappings: " + ex.ToString()); } }
//********************************************************************* /// /// <summary> /// This method fetchs Azure region specific information from the /// WAP DB. /// </summary> /// //********************************************************************* private void FetchAzureRegionFromDb(string subscriptionId) { var cwdb = new CmpWapDb(); OsList.Clear(); List <AzureRegion> list; if (!string.IsNullOrWhiteSpace(subscriptionId)) { var repository = cwdb as ICmpWapDbTenantRepository; list = repository.FetchAzureRegionList(subscriptionId); } else { list = cwdb.FetchAzureRegionList(onlyActiveOnes: true); } OsList.AddRange(list); }
private static void UpdateRegionVmSizeMappings(IEnumerable <AzureCatalogue> azureCatalogueResult) { var cmpWapDb = new CmpWapDb(); var cmpWapRegions = cmpWapDb.FetchAzureRegionList(onlyActiveOnes: false).ToList(); var cmpWapVmSizes = cmpWapDb.FetchVmSizeInfoList(onlyActiveOnes: false).ToList(); var newMappings = new List <AzureRegionVmSizeMapping>(); try { foreach (var regionInCatalogue in azureCatalogueResult) { foreach (var vmSize in regionInCatalogue.VmSizes) { //We need to get the IDs to make the mapping object. Query the VmSize and Region tables to get them. var vmSizeToMap = cmpWapVmSizes.FirstOrDefault(x => string.Equals(vmSize.name, x.Name, StringComparison.InvariantCultureIgnoreCase)); var regionToMap = cmpWapRegions.FirstOrDefault(y => string.Equals(regionInCatalogue.RegionName.Replace(" ", string.Empty), y.Name.Replace(" ", string.Empty), StringComparison.InvariantCultureIgnoreCase)); if (vmSizeToMap == null || regionToMap == null) { continue; //something's wrong here if we reach this. } var newMapping = new AzureRegionVmSizeMapping { AzureRegionId = regionToMap.AzureRegionId, VmSizeId = vmSizeToMap.VmSizeId, IsActive = true }; newMappings.Add(newMapping); } } if (newMappings.Any()) { cmpWapDb.SetRegionVmSizeMappingsByBatch(newMappings); } } catch (Exception ex) { throw new Exception("Exception caught in UpdateRegionVmSizeMappings: " + ex.ToString()); } }