def get_nodearray_hourly()

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)