in azure-slurm/slurmcc/cost.py [0:0]
def run(self, start: datetime, end: datetime, out: str, fmt: str):
log.debug(f"start: {start}")
log.debug(f"end: {end}")
sacct_start = start.isoformat()
sacct_end = end.isoformat()
cost_config = self.config.get('cost', {})
if not cost_config or not cost_config.get('cache_root'):
log.debug("Using /tmp as cost cache dir")
cache_root = "/tmp"
else:
cache_root = cost_config.get('cache_root')
cost_slurm = CostSlurm(start=sacct_start, end=sacct_end, cluster=self.cluster,
cache_root=cache_root,fmt=fmt)
try:
os.makedirs(out, exist_ok=True)
except OSError as e:
log.error(f"Cannot create output directory {out}")
raise
jobs_csv = os.path.join(out, "jobs.csv")
part_csv = os.path.join(out, "partition.csv")
part_hourly = os.path.join(out, "partition_hourly.csv")
fmt = self.azcost.get_job_format()
out_fmt_t = cost_slurm.get_output_format(self.azcost)
with open(jobs_csv, 'w') as fp:
writer = csv.writer(fp, delimiter=',')
writer.writerow(list(out_fmt_t._fields))
cost_slurm.process_jobs(azcost=self.azcost, jobsfp=fp, out_fmt_t=out_fmt_t)
fmt = self.azcost.get_nodearray_format()
with open(part_csv, 'w') as fp:
writer = csv.writer(fp, delimiter=',')
writer.writerow(list(fmt._fields))
self.azcost.get_nodearray(fp, start=sacct_start, end=sacct_end)
fmt = self.azcost.get_nodearray_hourly_format()
with open(part_hourly, 'w') as fp:
writer = csv.writer(fp, delimiter=',')
writer.writerow(list(fmt._fields))
self.azcost.get_nodearray_hourly(fp, start=sacct_start, end=sacct_end)
cost_slurm.stats.display()