Ejemplo n.º 1
0
        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());
            }
        }