예제 #1
0
        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);
        }
예제 #2
0
        public async Task <string> GetStorageCSV(int minSize = 0, string region = "europe-west", string currency = "usd")
        {
            mdisk        md        = new mdisk(configuration);
            List <mdisk> mdiskList = await md.GetMdisks(region, currency);

            var           result = mdiskList.Where(i => i.size >= minSize && i.pricemonth.HasValue).OrderBy(x => x.pricemonth);
            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());
        }
예제 #3
0
        public async Task <IOrderedEnumerable <mdisk> > GetStorage(int minSize = 0, string region = "europe-west", string currency = "usd")
        {
            mdisk        md        = new mdisk(configuration);
            List <mdisk> mdiskList = await md.GetMdisks(region, currency);

            var result = mdiskList.Where(i => i.size >= minSize && i.pricemonth.HasValue).OrderBy(x => x.pricemonth);

            return(result);
        }
예제 #4
0
        public async Task <string> StoreMdisk(string region = "europe-west", string currency = "usd")
        {
            client = new HttpClient();

            mdisk             mdk  = new mdisk(configuration);
            excelAzureHelpers xhlp = new excelAzureHelpers(configuration);
            var url      = mdisk.mdiskUrl + currency;
            var response = await client.GetAsync(url);

            var result = await response.Content.ReadAsStringAsync();

            var uri = await storeBlob(result, DateTime.UtcNow, "mdisk", currency, null);

            return("Stored mdisks at " + uri.AbsoluteUri);
        }
예제 #5
0
        public async Task <string> GetStorageCSV(int minSize = 0, string region = "europe-west", string currency = "usd", string date = null)
        {
            DateTime?dt;

            Models.VmList vml = new Models.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(region, currency, dt);

            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());
        }
예제 #6
0
        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());
        }
예제 #7
0
        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());
        }