示例#1
0
        public VmDashboardInfo GetVm(string subscriptionId, int Id)
        {
            try
            {
                ICmpWapDb cwdb = new CmpWapDb();
                ICmpWapDbTenantRepository cwdbTenant = new CmpWapDb();

                var foundVmDepRequest = cwdb.FetchVmDepRequest(Id);
                var vmsizes           = cwdbTenant.FetchVmSizeInfoList(subscriptionId);
                if (null != foundVmDepRequest && null != foundVmDepRequest.CmpRequestID)
                {
                    var cmpi = new VMServiceRepository(_eventLog);

                    //when we solve the big 'method not returning' bug: uncomment line below, delete second line below
                    //var vm = cmpi.GetVm(Convert.ToInt32(foundVmDepRequest.CmpRequestID),
                    //    CmpInterfaceModel.Constants.FetchType.AzureStatus);
                    var vm = GetLocalvmDBI(foundVmDepRequest);
                    cwdb.UpdateVmIp(Id, vm.InternalIP);
                    vm.Cores = vmsizes.Where(x => x.Name == vm.RoleSize).Select(x => x.Cores).FirstOrDefault().ToString();
                    vm.OSVirtualHardDisk.Type = "OS Disk";
                    if (vm.DataVirtualHardDisks != null)
                    {
                        vm.DataVirtualHardDisks.Select(d => { d.Type = "Data Disk"; return(d); }).ToList();
                    }
                    return(vm);
                }
                return(null);
            }
            catch (Exception ex)
            {
                LogThis(ex, EventLogEntryType.Error, "CmpWapExtension.VmsController.GetVm()", 100, 1);
                throw;
            }
        }
示例#2
0
        //*********************************************************************
        ///
        /// <summary>
        ///     This method fetches VM size information from WAP DB.
        /// </summary>
        ///
        /// All Azure sizes -> https://msdn.microsoft.com/en-us/library/azure/dn197896.aspx
        ///
        //*********************************************************************

        private void FetchVmSizeFromDb()
        {
            var cwdb = new CmpWapDb();
            var list = cwdb.FetchVmSizeInfoList(onlyActiveOnes: true);

            SizeList.Clear();
            SizeList.AddRange(list);
        }
示例#3
0
        private static void UpdateVmSizes(IEnumerable <AzureCatalogue> azureCatalogueResult)
        {
            try
            {
                var cmpWapDb              = new CmpWapDb();
                var cmpWapVmSizes         = cmpWapDb.FetchVmSizeInfoList(onlyActiveOnes: false).ToList();
                var newVmSizes            = new List <VmSize>();
                var azureCatalogueVmSizes = new List <AzureVmSizeArmData>();

                //Eliminate dupes, we only need them to establish the mappings in another method.
                foreach (var regionInCatalogue in azureCatalogueResult)
                {
                    azureCatalogueVmSizes.AddRange(regionInCatalogue.VmSizes);
                }
                azureCatalogueVmSizes = azureCatalogueVmSizes.Distinct(new AzureVmSizeArmData.AzureVmSizeComparer()).ToList();

                //Translate and convert each AzureVmSizeArmData object into a VmSize object.
                foreach (var vmSize in azureCatalogueVmSizes)
                {
                    if (!cmpWapVmSizes.Any(x => string.Equals(vmSize.name, x.Name, StringComparison.InvariantCultureIgnoreCase)))
                    {
                        var newVmSize = new VmSize
                        {
                            Name             = vmSize.name,
                            Cores            = vmSize.numberOfCores,
                            Memory           = vmSize.memoryInMB,
                            MaxDataDiskCount = vmSize.maxDataDiskCount,
                            IsActive         = true,
                            CreatedBy        = "CMP WAP Extension",
                            LastUpdatedBy    = "CMP WAP Extension",
                            CreatedOn        = DateTime.UtcNow,
                            LastUpdatedOn    = DateTime.UtcNow
                        };

                        if (vmSize.memoryInMB >= 1000)
                        {
                            newVmSize.Description = vmSize.name + " - " + vmSize.numberOfCores + " Cores, " + vmSize.memoryInMB / 1000 + " GB, " + vmSize.maxDataDiskCount + " Disk";
                        }
                        else
                        {
                            newVmSize.Description = vmSize.name + " - " + vmSize.numberOfCores + " Cores, " + vmSize.memoryInMB + " MB, " + vmSize.maxDataDiskCount + " Disk";
                        }

                        newVmSizes.Add(newVmSize);
                    }
                }


                if (newVmSizes.Any())
                {
                    cmpWapDb.InsertVmSizeByBatch(newVmSizes);
                }
            }
            catch (Exception ex)
            {
                throw new Exception("Exception caught in UpdateVmSizes: " + ex.ToString());
            }
        }
示例#4
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());
            }
        }
示例#5
0
文件: Form1.cs 项目: vrosnet/Phoenix
 private void FetchTenantVmSizes()
 {
     ICmpWapDbTenantRepository ctr = new CmpWapDb();
     var result = ctr.FetchVmSizeInfoList("");
 }