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