public async Task <IOrderedEnumerable <mdisk> > GetStorage(string date = "", int minSize = 0, string region = "europe-west", string currency = "usd") { DateTime?dt; VmList vml = new VmList(configuration); String regionSlug; try { dt = excelAzureBackend.excelAzureHelpers.parseDTString(date); regionSlug = await vml.FindRegionSlug(region); var validCurrency = excelAzureHelpers.validateCurrency(currency); } catch (Exception) { this.Response.StatusCode = 400; return(null); } mdisk md = new mdisk(configuration); List <mdisk> mdiskList = await md.GetMdisks(regionSlug, currency, dt); var result = mdiskList.Where(i => i.size >= minSize && i.pricemonth.HasValue).OrderBy(x => x.pricemonth); return(result); }
public void RemoveMigratingInVm(Vm vm) { VmDeallocate(vm); VmsMigratingIn.Remove(vm); VmList.Remove(vm); VmScheduler.VmsMigratingIn.Remove(vm.Uid); vm.InMigration = false; }
public void VmDestroy(Vm vm) { if (vm != null) { VmDeallocate(vm); VmList.Remove(vm); vm.Host = null; } }
public async Task <IOrderedEnumerable <vm> > Get(int minCores = 0, int minRam = 0, string os = "linux", string tier = "standard", string region = "europe-west", int ri = 0, string format = "") { VmList vml = new VmList(configuration); var vmlist = await vml.GetVmsAsync(region : region, bindingPeriod : ri); var result = vmlist.vms.Where(i => i.cores >= minCores && i.ram >= minRam && i.name.IndexOf(os) > -1 && i.name.Contains(tier) && i.price.HasValue).OrderBy(x => x.price); return(result); }
public void VmDestroyAll() { VmDeallocateAll(); foreach (Vm vm in VmList) { vm.Host = null; Storage += vm.Size; } VmList.Clear(); }
public VmList ListVmsByHostId(string hostId) { HttpWebResponse response = fetch("/rest/vcenter/vm?filter.hosts.1=" + hostId); if ((int)response.StatusCode == 200) { String body = GetDocumentContents(response); VmList list = JsonUtility.FromJson <VmList>(body); return(list); } return(null); }
public async Task <String> RegionsCSV() { VmList vml = new VmList(configuration); var regions = await vml.GetRegions(); StringBuilder s = new StringBuilder(); foreach (var item in regions) { s.Append(item.Value <string>("slug")); s.Append(";"); } return(s.ToString()); }
public FilesTabVM2(IRepository <SyncableFileRemote> filesRepo, AppFileGrouper fileGrouper, IFileSynchronizer fileSynchronizer, ID7Client d7Client, BinUploaderCfgFile cfgFile) { _grouper = ForwardLogs(fileGrouper); _synchronizer = ForwardLogs(fileSynchronizer); _remotes = ForwardLogs(filesRepo); //_cfgFile = ForwardLogs(cfgFile); //_d7Client = ForwardLogs(d7Client); MainList = new VmList <RemoteVsLocalFile>(); UploadChangesCmd = AsyncCommand.Create(token => UploadChanges(token)); _remotes.SetClient(d7Client, cfgFile); _synchronizer.SetClient(d7Client); SetEventHandlers(); }
public async Task <string> StoreVMs(int ri = 0, string format = "", string currency = "usd") { client = new HttpClient(); VmList vml = new VmList(configuration); excelAzureHelpers xhlp = new excelAzureHelpers(configuration); //var taskList = new List<Task<HttpResponseMessage>>(); var url = xhlp.GetVMURL(ri, currency.ToLower(), null); var response = await client.GetAsync(url); var result = await response.Content.ReadAsStringAsync(); var uri = await storeBlob(result, DateTime.UtcNow, "vm", currency, ri); return("Stored VM's at " + uri.AbsoluteUri); }
public FilesTabVM2(IRepository<SyncableFileRemote> filesRepo, AppFileGrouper fileGrouper, IFileSynchronizer fileSynchronizer, ID7Client d7Client, BinUploaderCfgFile cfgFile) { _grouper = ForwardLogs(fileGrouper); _synchronizer = ForwardLogs(fileSynchronizer); _remotes = ForwardLogs(filesRepo); //_cfgFile = ForwardLogs(cfgFile); //_d7Client = ForwardLogs(d7Client); MainList = new VmList<RemoteVsLocalFile>(); UploadChangesCmd = AsyncCommand.Create(token => UploadChanges(token)); _remotes.SetClient(d7Client, cfgFile); _synchronizer.SetClient(d7Client); SetEventHandlers(); }
public async Task <string> GetUSSDCSV(int minSize = 0, string region = "europe-west", string currency = "usd", bool store = false, string date = null) { DateTime?dt; VmList vml = new VmList(configuration); String regionSlug; try { dt = excelAzureBackend.excelAzureHelpers.parseDTString(date); regionSlug = await vml.FindRegionSlug(region); var validCurrency = excelAzureHelpers.validateCurrency(currency); } catch (Exception) { this.Response.StatusCode = 400; return(""); } UltraSSDs md = new UltraSSDs(configuration); List <UltraSSD> mdiskList = await md.GetUltraSSDs(region, currency, dt); var result = mdiskList.Where(i => i.size >= minSize).OrderBy(x => x.size); StringBuilder s = new StringBuilder(); DataTable datbl = JsonConvert.DeserializeObject <DataTable>(JsonConvert.SerializeObject(result), new JsonSerializerSettings { FloatParseHandling = FloatParseHandling.Decimal }); foreach (DataColumn column in datbl.Columns) { s.Append(column.ColumnName + ";"); } s.Append(Environment.NewLine); foreach (DataRow row in datbl.Rows) { for (var i = 0; i < datbl.Columns.Count; i++) { s.Append(row[i] + ";"); } s.Append(Environment.NewLine); } return(s.ToString()); }
public MainWindowVmBase(UserSessionVM userSessionVM) { WindowState = WindowState.Normal; IsVisible = true; NaviTabs = new VmList <WorkspaceVmBase>(); MainTabs = new VmList <WorkspaceVmBase>(); OtherTabs = new VmList <WorkspaceVmBase>(); UserSession = ForwardLogs(userSessionVM); MainTabs.CollectionChanged += OnWorkspacesChanged; NaviTabs.ItemPicked += ResetDetailsState; MainTabs.ItemPicked += ResetDetailsState; CompletelyLoaded += (s, e) => { Refresh(); }; }
public async Task <string> GetVM(int minCores = 0, int minRam = 0, string os = "linux", string tier = "standard", string region = "europe-west", int ri = 0, string format = "", string currency = "usd") { VmList vml = new VmList(configuration); var taskList = new List <Task <VmList> >(); taskList.Add(vml.GetVmsAsync(region: region, bindingPeriod: 0, currency: currency)); taskList.Add(vml.GetVmsAsync(region: region, bindingPeriod: 1, currency: currency)); taskList.Add(vml.GetVmsAsync(region: region, bindingPeriod: 3, currency: currency)); taskList.Add(vml.GetVmsAsyncSoftware(region: region, bindingPeriod: 0, currency: currency)); taskList.Add(vml.GetVmsAsyncSoftware(region: region, bindingPeriod: 1, currency: currency)); taskList.Add(vml.GetVmsAsyncSoftware(region: region, bindingPeriod: 3, currency: currency)); await Task.WhenAll(taskList.ToArray()); List <vm> vms = new List <vm>(); //VmList vms = new VmList(); for (int i = 0; i < taskList.Count; i++) { vms.AddRange(taskList[i].Result.vms); } var result = vms.Where(i => i.cores >= minCores && i.ram >= minRam && i.name.Contains(tier) && i.price.HasValue).OrderBy(x => x.price); StringBuilder s = new StringBuilder(); DataTable dt = JsonConvert.DeserializeObject <DataTable>(JsonConvert.SerializeObject(result)); foreach (DataColumn column in dt.Columns) { s.Append(column.ColumnName + ";"); } s.Append(Environment.NewLine); foreach (DataRow row in dt.Rows) { for (var i = 0; i < dt.Columns.Count; i++) { s.Append(row[i] + ";"); } s.Append(Environment.NewLine); } return(s.ToString()); }
public void ReallocateMigratingInVms() { foreach (Vm vm in VmsMigratingIn) { if (!VmList.Contains(vm)) { VmList.Add(vm); } if (!VmScheduler.VmsMigratingIn.Contains(vm.Uid)) { VmScheduler.VmsMigratingIn.Add(vm.Uid); } RamProvisioner.AllocateRamForVm(vm, vm.GetCurrentRequestedRam()); BwProvisioner.AllocateBwForVm(vm, vm.GetCurrentRequestedBw()); VmScheduler.AllocatePesForVm(vm, vm.GetCurrentRequestedMips()); Storage = Storage - vm.Size; } }
public void AddMigratingInVm(Vm vm) { vm.InMigration = true; if (!VmsMigratingIn.Contains(vm)) { if (Storage < vm.Size) { Log.WriteConcatLine("[VmScheduler.addMigratingInVm] Allocation of VM #", vm.Id, " to Host #", Id, " failed by storage"); Environment.Exit(0); } if (!RamProvisioner.AllocateRamForVm(vm, vm.GetCurrentRequestedRam())) { Log.WriteConcatLine("[VmScheduler.addMigratingInVm] Allocation of VM #", vm.Id, " to Host #", Id, " failed by RAM"); Environment.Exit(0); } if (!BwProvisioner.AllocateBwForVm(vm, vm.GetCurrentRequestedBw())) { Log.WriteLine("[VmScheduler.addMigratingInVm] Allocation of VM #" + vm.Id + " to Host #" + Id + " failed by BW"); Environment.Exit(0); } VmScheduler.VmsMigratingIn.Add(vm.Uid); if (!VmScheduler.AllocatePesForVm(vm, vm.GetCurrentRequestedMips())) { Log.WriteLine("[VmScheduler.addMigratingInVm] Allocation of VM #" + vm.Id + " to Host #" + Id + " failed by MIPS"); Environment.Exit(0); } Storage = Storage - vm.Size; VmsMigratingIn.Add(vm); VmList.Add(vm); UpdateVmsProcessing(Core.CloudSim.Clock); vm.Host.UpdateVmsProcessing(Core.CloudSim.Clock); } }
public async Task <IOrderedEnumerable <vm> > Get(string date = "", int minCores = 0, int minRam = 0, string os = "linux", string tier = "standard", string region = "europe-west", int ri = 0, string format = "", string currency = "usd") { DateTime?dt; VmList vml = new VmList(configuration); String regionSlug; try { dt = excelAzureBackend.excelAzureHelpers.parseDTString(date); regionSlug = await vml.FindRegionSlug(region); var validCurrency = excelAzureHelpers.validateCurrency(currency); } catch (Exception) { this.Response.StatusCode = 400; return(null); } var taskList = new List <Task <VmList> >(); taskList.Add(vml.GetVmsAsync(region: region, bindingPeriod: 0, currency: currency, date: dt)); taskList.Add(vml.GetVmsAsync(region: region, bindingPeriod: 1, currency: currency, date: dt)); taskList.Add(vml.GetVmsAsync(region: region, bindingPeriod: 3, currency: currency, date: dt)); await Task.WhenAll(taskList.ToArray()); VmList vms = new VmList(configuration); for (int i = 0; i < taskList.Count; i++) { vms.vms.AddRange(taskList[i].Result.vms); } //var result = vms.vms.Where(i => i.cores >= minCores && i.ram >= minRam && i.name.Contains(tier) && i.price.HasValue).OrderBy(x => x.price); var result = vms.vms.Where(i => i.cores >= minCores && i.ram >= minRam && i.name.Contains(tier?.ToString() ?? "") && i.price.HasValue).OrderBy(x => x.price); //var responsetext = JsonConvert.SerializeObject(result); return(result); }
public bool VmCreate(Vm vm) { if (Storage < vm.Size) { Log.WriteConcatLine( "[VmScheduler.vmCreate] Allocation of VM #", vm.Id, " to Host #", Id, " failed by storage"); return(false); } if (!RamProvisioner.AllocateRamForVm(vm, vm.GetCurrentRequestedRam())) { Log.WriteConcatLine("[VmScheduler.vmCreate] Allocation of VM #", vm.Id, " to Host #", Id, " failed by RAM"); return(false); } if (!BwProvisioner.AllocateBwForVm(vm, vm.GetCurrentRequestedBw())) { Log.WriteConcatLine("[VmScheduler.vmCreate] Allocation of VM #", vm.Id, " to Host #", Id, " failed by BW"); RamProvisioner.DeallocateRamForVm(vm); return(false); } if (!VmScheduler.AllocatePesForVm(vm, vm.GetCurrentRequestedMips())) { Log.WriteConcatLine("[VmScheduler.vmCreate] Allocation of VM #", vm.Id, " to Host #", Id, " failed by MIPS"); RamProvisioner.DeallocateRamForVm(vm); BwProvisioner.DeallocateBwForVm(vm); return(false); } Storage = Storage - vm.Size; VmList.Add(vm); vm.Host = this; return(true); }
public async Task <string> GetStorageCSV(int minSize = 0, string region = "europe-west", string currency = "usd", bool store = false, string date = null) { DateTime?dt; VmList vml = new VmList(configuration); String regionSlug; try { dt = excelAzureBackend.excelAzureHelpers.parseDTString(date); regionSlug = await vml.FindRegionSlug(region); var validCurrency = excelAzureHelpers.validateCurrency(currency); } catch (Exception) { this.Response.StatusCode = 400; return(""); } mdisk md = new mdisk(configuration); List <mdisk> mdiskList = await md.GetMdisks(regionSlug, currency, dt); var result = mdiskList.Where(i => i.size >= minSize && i.pricemonth.HasValue).OrderBy(x => x.pricemonth); if (store) { string EndpointUri = configuration.GetValue <string>("CosmosDBSettings:EndpointUri"); string PrimaryKey = configuration.GetValue <string>("CosmosDBSettings:PrimaryKey"); string databaseName = configuration.GetValue <string>("CosmosDBSettings:databaseName"); DocumentClient Dbclient; DboMdisks dbomdisks = new DboMdisks(); dbomdisks.mdisks = result.ToList <mdisk>(); dbomdisks.region = region; dbomdisks.currency = currency; dbomdisks.date = DateTime.Now; // Save result to DocumentDB Dbclient = new DocumentClient(new Uri(EndpointUri), PrimaryKey); await Dbclient.CreateDocumentAsync(UriFactory.CreateDocumentCollectionUri(databaseName, "mdisks"), dbomdisks); } StringBuilder s = new StringBuilder(); DataTable datbl = JsonConvert.DeserializeObject <DataTable>(JsonConvert.SerializeObject(result)); foreach (DataColumn column in datbl.Columns) { s.Append(column.ColumnName + ";"); } s.Append(Environment.NewLine); foreach (DataRow row in datbl.Rows) { for (var i = 0; i < datbl.Columns.Count; i++) { s.Append(row[i] + ";"); } s.Append(Environment.NewLine); } return(s.ToString()); }
// Use this for initialization void Start() { RESTConnection n = new RESTConnection(); n.Start(); GameObject CloneVM; GameObject ClonedPedistal; UnityEngine.UI.Text[] VMDetails; float XPosition; float YPosition; float ZPosition; float OriginalYPosition; float HostXPosition; float HostYPosition; float HostZPosition; float HostOriginalYPosition; float HostOriginalZPosition; HostXPosition = -2f; HostYPosition = 0f; HostZPosition = 5f; HostOriginalYPosition = HostYPosition; HostOriginalZPosition = HostZPosition; XPosition = HostXPosition + -0.25f; YPosition = 5.5415f; ZPosition = HostZPosition + -0.30f; OriginalYPosition = YPosition; RESTConnection.HostList vmhosts = n.ListHosts(); // Iterate through all ESXi hosts for (int i = 0; i < vmhosts.value.Count; i++) { // Name of ESXi host string vmhostName = vmhosts.value[i].name; // Id of ESXi host string vmhostId = vmhosts.value[i].host; XPosition = HostXPosition + -0.25f; ZPosition = HostZPosition + -0.30f; // Clone the SourceObject for our New Pedistal ClonedPedistal = Instantiate(SourcePedistal); ClonedPedistal.transform.position = new Vector3(HostXPosition, HostOriginalYPosition, HostOriginalZPosition); ClonedPedistal.name = vmhostName; // Change the name of the Pedestal Text ClonedPedistal.GetComponentInChildren <Text>().text = vmhostName; // Retrieve VMs from ESXi host VmList vms = n.ListVmsByHostId(vmhostId); for (int j = 0; j < vms.value.Count; j++) { vapitypes.VmDetails details = n.GetVmDetails(vms.value[j].vm); string vmDetails = n.GetVmDetailsStr(details); string vmName = vms.value[j].name; // Clone the SourceObject for our New VM CloneVM = Instantiate(SourceVMObject); CloneVM.transform.SetParent(ClonedPedistal.transform); CloneVM.transform.position = new Vector3(XPosition, OriginalYPosition, ZPosition); CloneVM.name = vmName; // Fill in the Details on the Summary canvas VMDetails = CloneVM.GetComponentsInChildren <UnityEngine.UI.Text>(); VMDetails[0].text = vmName; VMDetails[1].text = vmDetails; ShowInfo vmInfo = CloneVM.GetComponent <ShowInfo>(); vmInfo.name = vmName; vmInfo.type = "VM"; vmInfo.resources = new List <HUD.Resource>(); vmInfo.resources.Add(new HUD.Resource("CPU", 2, 0.5f)); vmInfo.resources.Add(new HUD.Resource("MEM", 4, 0.75f)); vmInfo.statistics = new List <HUD.Statistic>(); string CPU = n.GetNumCPUStr(details); vmInfo.statistics.Add(new HUD.Statistic(CPU, "CPU:")); string MEM = n.GetMEMStr(details); vmInfo.statistics.Add(new HUD.Statistic(MEM, "Memory:")); string GuestOS = n.GetOSStr(details); vmInfo.statistics.Add(new HUD.Statistic(GuestOS, "OS:")); string Power = n.GetPowerStr(details); vmInfo.statistics.Add(new HUD.Statistic(Power, "Power:")); //CloneVM.GetComponents(); // Set the location of the cloned VM XPosition += 0.20f; if ((j + 1) % 4 == 0) { XPosition = HostXPosition + -0.25f; ZPosition += 0.15f; } //Debug.Log("VM: " + vmDetails); } HostXPosition = HostXPosition + 1.5f; } }
// Use this for initialization void Start() { RESTConnection n = new RESTConnection(); n.Start(); GameObject CloneVM; GameObject ClonedPedistal; UnityEngine.UI.Text[] VMDetails; float XPosition; float YPosition; float ZPosition; float OriginalYPosition; float HostXPosition; float HostYPosition; float HostZPosition; float HostOriginalYPosition; float HostOriginalZPosition; HostXPosition = -2f; HostYPosition = 0f; HostZPosition = 5f; HostOriginalYPosition = HostYPosition; HostOriginalZPosition = HostZPosition; XPosition = HostXPosition + -0.25f; YPosition = 5.5415f; ZPosition = HostZPosition + -0.30f; OriginalYPosition = YPosition; RESTConnection.HostList vmhosts = n.ListHosts(); // Iterate through all ESXi hosts for (int i = 0; i < vmhosts.value.Count; i++) { // Name of ESXi host string vmhostName = vmhosts.value[i].name; // Id of ESXi host string vmhostId = vmhosts.value[i].host; XPosition = HostXPosition + -0.25f; ZPosition = HostZPosition + -0.30f; // Clone the SourceObject for our New Pedistal ClonedPedistal = Instantiate(SourcePedistal); ClonedPedistal.transform.position = new Vector3(HostXPosition, HostOriginalYPosition, HostOriginalZPosition); ClonedPedistal.name = vmhostName; // Change the name of the Pedestal Text ClonedPedistal.GetComponentInChildren <Text>().text = vmhostName; // Retrieve VMs from ESXi host VmList vms = n.ListVmsByHostId(vmhostId); for (int j = 0; j < vms.value.Count; j++) { vapitypes.VmDetails details = n.GetVmDetails(vms.value[j].vm); string vmDetails = n.GetVmDetailsStr(details); string vmName = vms.value[j].name; // Clone the SourceObject for our New VM CloneVM = Instantiate(SourceVMObject); CloneVM.transform.SetParent(ClonedPedistal.transform); CloneVM.transform.position = new Vector3(XPosition, OriginalYPosition, ZPosition); CloneVM.name = vmName; // Fill in the Details on the Summary canvas VMDetails = CloneVM.GetComponentsInChildren <UnityEngine.UI.Text>(); VMDetails[0].text = vmName; VMDetails[1].text = vmDetails; //CloneVM.GetComponents(); // Set the location of the cloned VM XPosition += 0.20f; if ((j + 1) % 4 == 0) { XPosition = HostXPosition + -0.25f; ZPosition += 0.15f; } //Debug.Log("VM: " + vmDetails); } HostXPosition = HostXPosition + 1.5f; } }
public FoldersTabVM(IRepository<SyncableFolderInfo> foldersRepo, BinUploaderCfgFile cfgFile) { DisplayName = "Local Folders"; _repo = ForwardLogs(foldersRepo); MainList = new VmList<SyncableFolderInfo>(); }
public async Task <dynamic> Get() { VmList vml = new VmList(configuration); return(await vml.GetRegions()); }
public async Task <JArray> Regions() { VmList vml = new VmList(configuration); return(await vml.GetRegions()); }
public FoldersTabVM(IRepository <SyncableFolderInfo> foldersRepo, BinUploaderCfgFile cfgFile) { DisplayName = "Local Folders"; _repo = ForwardLogs(foldersRepo); MainList = new VmList <SyncableFolderInfo>(); }
public async Task <string> GetStorageCSV2(int minSize = 0, string region = "europe-west", string currency = "usd", bool store = false, string date = null) { DateTime?dt; VmList vml = new VmList(configuration); String regionSlug; try { dt = excelAzureBackend.excelAzureHelpers.parseDTString(date); regionSlug = await vml.FindRegionSlug(region); var validCurrency = excelAzureHelpers.validateCurrency(currency); } catch (Exception) { this.Response.StatusCode = 400; return(""); } UltraSSDs ussds = new UltraSSDs(configuration); var ussdisks = await ussds.GetUltraSSDs(region, currency, dt); mdisk md = new mdisk(configuration); List <mdisk> mdiskList = await md.GetMdisks(regionSlug, currency, dt); List <mdisk> ussdMdiskList = new List <mdisk>(); foreach (var item in mdiskList) { var compare_ussd = ussds.findUSSD(ussdisks, item.size, item.iops, item.speed, item.pricemonth); if (compare_ussd.Count <UltraSSD>() > 0) { var ussdPriceMonth = ussds.calculatePriceMonth(compare_ussd[0], item.iops, item.speed); // If the USSD is cheaper, replace the disk with USSD string mdiskname = item.name.Split("-")[1]; item.name = "ultrassd-" + mdiskname; item.displayName = compare_ussd[0].displayName; item.isPreview = false; item.size = compare_ussd[0].size; item.pricemonth = ussdPriceMonth; item.priceyear = ussdPriceMonth * 12; item.snapshotPrice = null; item.transactionPrice = null; item.snapshotPriceLrs = null; item.snapshotPriceZrs = null; //ussdMdiskList.Add(new mdisk(configuration) { name = compare_ussd[0].name, displayName = compare_ussd[0].displayName, isPreview = false, size = compare_ussd[0].size, iops = item.iops, speed = item.speed, pricemonth = ussdPriceMonth, priceyear = ussdPriceMonth*12, snapshotPrice = null, transactionPrice = null }); } } ussdMdiskList.ForEach(p => mdiskList.Add(p)); var result = mdiskList.Where(i => i.size >= minSize && i.pricemonth.HasValue).OrderBy(x => x.pricemonth); StringBuilder s = new StringBuilder(); DataTable datbl = JsonConvert.DeserializeObject <DataTable>(JsonConvert.SerializeObject(result)); foreach (DataColumn column in datbl.Columns) { s.Append(column.ColumnName + ";"); } s.Append(Environment.NewLine); foreach (DataRow row in datbl.Rows) { for (var i = 0; i < datbl.Columns.Count; i++) { s.Append(row[i] + ";"); } s.Append(Environment.NewLine); } return(s.ToString()); }
public async Task <string> GetVM(int minCores = 0, int minRam = 0, string os = "", string tier = "standard", string region = "europe-west", int ri = 0, string format = "", string currency = "usd", string date = "") { DateTime?dt; VmList vml = new VmList(configuration); String regionSlug; try { dt = excelAzureBackend.excelAzureHelpers.parseDTString(date); regionSlug = await vml.FindRegionSlug(region); var validCurrency = excelAzureHelpers.validateCurrency(currency); } catch (Exception) { this.Response.StatusCode = 400; return(""); } // Search for region slug var taskList = new List <Task <VmList> >(); taskList.Add(vml.GetVmsAsync(region: regionSlug, bindingPeriod: 0, currency: currency, date: dt)); taskList.Add(vml.GetVmsAsync(region: regionSlug, bindingPeriod: 1, currency: currency, date: dt)); taskList.Add(vml.GetVmsAsync(region: regionSlug, bindingPeriod: 3, currency: currency, date: dt)); await Task.WhenAll(taskList.ToArray()); VmList vms = new VmList(configuration); for (int i = 0; i < taskList.Count; i++) { vms.vms.AddRange(taskList[i].Result.vms); } var result = vms.vms.Where(i => i.cores >= minCores && i.ram >= minRam && i.name.Contains(tier?.ToString() ?? "") && i.name.Contains(os?.ToString() ?? "") && i.price.HasValue).OrderBy(x => x.price); /* if (store) * { * string EndpointUri = configuration.GetValue<string>("CosmosDBSettings:EndpointUri"); * string PrimaryKey = configuration.GetValue<string>("CosmosDBSettings:PrimaryKey"); * string databaseName = configuration.GetValue<string>("CosmosDBSettings:databaseName"); * * DocumentClient Dbclient; * * Dbo dbo = new Dbo(); * dbo.vms = result.ToList<vm>(); * dbo.region = region; * dbo.currency = currency; * dbo.date = DateTime.Now; * // Save result to DocumentDB * Dbclient = new DocumentClient(new Uri(EndpointUri), PrimaryKey); * await Dbclient.CreateDocumentAsync(UriFactory.CreateDocumentCollectionUri(databaseName, "vm"), dbo); * * * * }*/ StringBuilder s = new StringBuilder(); DataTable datbl = JsonConvert.DeserializeObject <DataTable>(JsonConvert.SerializeObject(result)); foreach (DataColumn column in datbl.Columns) { s.Append(column.ColumnName + ";"); } s.Append(Environment.NewLine); foreach (DataRow row in datbl.Rows) { for (var i = 0; i < datbl.Columns.Count; i++) { s.Append(row[i] + ";"); } s.Append(Environment.NewLine); } return(s.ToString()); }