def query_idle_alb()

in solution/finance/idle_resource.py [0:0]


    def query_idle_alb(account_id,
                       access_key_id,
                       access_key_secret,
                       role_name):
        idle_resource_list = []
        print('[Idle ALB] AccountId: ' + account_id)
        for region_id in region_id_list:
            output_str = 'Region:' + region_id + ' '
            client = IdleResourceSample.create_alb_client(account_id,
                                                          access_key_id,
                                                          access_key_secret,
                                                          role_name,
                                                          region_id)
            result_list = IdleResourceSample.query_alb_instance(client)
            for alb in result_list:
                alb_id = alb['LoadBalancerId']
                # print(alb_id)
                # 查询监听器
                listeners = IdleResourceSample.query_alb_listener(client, [alb_id])
                # print(listeners)
                if len(listeners) == 0:
                    # 无监听器,闲置
                    output_str += f'<ID:{alb_id} Name:{alb["LoadBalancerName"]} Reason:无监听器> '
                    idle_resource_list.append(alb)
                    continue

                all_listener_stopped = True
                # 转发服务器组ID列表
                forward_server_group_ids = []
                for listener in listeners:
                    # 默认转发规则的服务器组ID
                    forward_server_group_ids.append(
                        listener['DefaultActions'][0]['ForwardGroupConfig']['ServerGroupTuples'][0]['ServerGroupId'])

                    if listener['ListenerStatus'] != 'Stopped':
                        all_listener_stopped = False
                        break

                if all_listener_stopped:
                    # 所有监听器停止,闲置
                    output_str += f'<ID:{alb_id} Name:{alb["LoadBalancerName"]} Reason:所有监听器停止> '
                    idle_resource_list.append(alb)
                    continue

                # 查询转发规则
                rules = IdleResourceSample.query_alb_forward_rule(client, [alb_id])
                for rule in rules:
                    # 添加转发规则中的服务器组ID
                    forward_server_group_ids.append(
                        rule['RuleActions'][0]['ForwardGroupConfig']['ServerGroupTuples'][0]['ServerGroupId'])

                # 查询服务器组信息
                server_groups = IdleResourceSample.query_alb_server_group(client, list(set(forward_server_group_ids)))

                all_server_group_is_empty = True
                for server_group in server_groups:
                    if server_group['ServerCount'] > 0:
                        all_server_group_is_empty = False
                        break

                if all_server_group_is_empty:
                    # 所有服务器组都无后端服务器,闲置
                    output_str += f'<ID:{alb_id} Name:{alb["LoadBalancerName"]} Reason:所有服务器组都无后端服务器> '
                    idle_resource_list.append(alb)

            print(output_str)
        print()

        return idle_resource_list