in src/hpc/autoscale/cost/azurecost.py [0:0]
def get_nodearray_hourly(self, fout, start, end) -> None:
def _process_hourly_with_retail(az_fmt_t, fout, usage: dict):
writer = csv.writer(fout, delimiter=',')
for e in usage['usage']:
start = e['start']
end = e['end']
for a in e['breakdown']:
if a['category'] != 'nodearray':
continue
array = a['node']
for d in a['details']:
vm_size = d['vm_size']
region = d['region']
core_count = d['core_count']
hours = d['hours']
spot = False
if d['priority'] == 'Spot':
spot = True
if self.do_meter_lookup(sku_name=vm_size,region=region,spot=spot):
pass
rate_data = self.get_retail_rate(armskuname=vm_size, armregionname=region, spot=spot)
rate = rate_data['retailPrice']
cost = (hours/core_count) * rate
array_fmt = az_fmt_t(start=start, end=end, nodearray=array, core_hours=hours, cost=cost,
sku_name=vm_size,region=region,spot=spot,meterid=rate_data['meterId'],
metercat=rate_data['serviceName'], rate=rate_data['retailPrice'],
meter=rate_data['meterName'], currency=rate_data['currencyCode'])
row = []
for f in az_fmt_t._fields:
row.append(array_fmt._asdict()[f])
writer.writerow(row)
usage = self.get_usage(start, end, 'hourly')
_fmt = self.get_nodearray_hourly_format()
if _fmt.__name__ == 'az_array_hourly_retail_t':
return _process_hourly_with_retail(_fmt, fout, usage)