in solution/finance/idle_resource.py [0:0]
def query_idle_ri(rd_account_id,
access_key_id,
access_key_secret,
role_name):
client = IdleResourceSample.create_bss_client(rd_account_id,
access_key_id,
access_key_secret,
role_name)
# 2022-12-27 22:00:00
today_fixed_time = datetime.today().replace(hour=22, minute=0, second=0, microsecond=0)
# 2022-12-24 20:00:00 - 2022-12-24 22:00:00
end_period = today_fixed_time + timedelta(days=-3)
start_period = end_period + timedelta(hours=-2)
ri_list = IdleResourceSample.query_bss_resource_usage_detail(start_period.strftime("%Y-%m-%d %H:%M:%S"),
end_period.strftime("%Y-%m-%d %H:%M:%S"),
'HOUR', 'RI', client)
# print(ri_list)
id_set = set()
idle_ri_list = []
usage_percentage_threshold = 0.1
output_str = '[Idle Reserved Instance Voucher] Region:All\n'
for ri in ri_list:
if ri['Status'] != 'Valid':
continue
ri_id = ri['ResourceInstanceId']
if ri_id not in id_set and ri['UsagePercentage'] < usage_percentage_threshold:
# 查询时段内预留实例券利用率小于阈值,闲置
output_str += f'<AccountId:{ri["UserId"]} ID:{ri_id} Reason:{ri["StartTime"]} - {ri["EndTime"]}' \
f' {"使用率低于" + str(usage_percentage_threshold * 100) + "%"}> '
idle_ri_list.append(ri)
id_set.add(ri_id)
print(output_str + '\n')
return idle_ri_list