def query_idle_ri()

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