示例#1
0
def manager_ecs(token,url_project,sub_project_id,smn_token, smn_project, smn_project_id):
    '''清理一个sub_project_id下的ECS资源+短信通知'''
    ecs_list = search_list.search_ecs(token, url_project, sub_project_id)
    SHUTOFF_list = {'id_dict':[],'ecs_name':[]}
    for ecs in ecs_list:
        ecs_id = ecs["id"]
        create_stamp = time.mktime(time.strptime(ecs['created'], format("%Y-%m-%dT%H:%M:%SZ"))) + 28800  # 将时间字符串转按指定格式换为元组<class 'time.struct_time'>
        SHUTOFF_time = create_stamp + settings.off_time['ecs'] * 3600
        DELETE_time = create_stamp + settings.del_time['ecs'] * 3600
        ecs_status = ecs['status']
        user_id = ecs['user_id']
        ecs_name = ecs['name']
        if user_id in settings.userinfo:
            pass
        else:
            settings.userinfo[user_id] = {'phone': settings.all_phone, 'name': settings.iam['domainname']}
        smn_shut_info = '%s 您好,您的主机:%s 被你累的Down了, 当前自动关机时间为创建后 %d小时 当前设置的自焚时间为创建后 %d小时。有重要数据请尽快做镜像备份or需长期使用请将主机名和>带宽名称加入 勿删 二字 然后再开机,将不会被关机和删除,否则您主机:%s 将于%s被删除' % (settings.userinfo[user_id]['name'], ecs_name, settings.off_time['ecs'],settings.del_time['ecs'],ecs_name,time.strftime('%Y-%m-%d %H:%M:%S',time.localtime(DELETE_time)))
        smn_del_info = '%s 您好,您的主机:%s 正在自焚....当前设置的自焚时间为创建后 %d小时。' % (settings.userinfo[user_id]['name'], ecs_name, settings.del_time['ecs'])

        if ecs_id not in protected.ECS and time.time() > SHUTOFF_time and ecs_status != "SHUTOFF" and settings.nodel_ecs_name not in ecs_name:
            SHUTOFF_list['id_dict'].append({"id":ecs_id})
            SHUTOFF_list['ecs_name'].append(ecs_name)
            smn.smn(smn_token, smn_project, smn_project_id, settings.userinfo[user_id]['phone'], smn_shut_info)
        if ecs_id not in protected.ECS and time.time() > DELETE_time and settings.nodel_ecs_name not in ecs_name:
            delete.del_ecs(token, url_project, sub_project_id, ecs_id, ecs_name)
            smn.smn(smn_token, smn_project, smn_project_id, settings.userinfo[user_id]['phone'], smn_del_info)

    if len(SHUTOFF_list['id_dict']) >0:
        poweroff.poweoff_ecs(token, url_project, sub_project_id, SHUTOFF_list)
示例#2
0
def manager_elb(token, url_project, sub_project_id, del_elb_iplist, smn_token,
                smn_project, smn_project_id):  #,del_elb_iplist
    '''删除经典负载均衡器里面的公网IP和负载均衡'''
    if len(del_elb_iplist) > 0:
        elb_list = search_list.search_elb_list(token, url_project,
                                               sub_project_id)
        for elb_ip in del_elb_iplist:
            for elb in elb_list:
                if elb_ip == elb['vip_address']:
                    listeners = search_list.search_elb_listeners(
                        token, url_project, sub_project_id, elb['id'])
                    for listener in listeners:
                        if listener['member_number'] > 0:
                            backend_ecs_list = search_list.search_elb_listen_backend_ecs_list(
                                token, url_project, sub_project_id,
                                listener['id'])
                            for backend_ecs in backend_ecs_list:
                                delete.remove_elb_listener_ecs(
                                    token, url_project, sub_project_id,
                                    listener['id'], backend_ecs)

                    time.sleep(3)
                    smn_del_ELBip_info = '%s 您好 您的 经典型ELB IP:%s 已经化蝶飞。当前设置自动化蝶时间为按需IP创建后 %d小时' % (
                        settings.iam['domainname'], elb_ip,
                        settings.del_time['publicip'])
                    del_resource = delete.del_elb(token, url_project,
                                                  sub_project_id, elb['id'],
                                                  elb['vip_address'])
                    if del_resource:
                        smn.smn(smn_token, smn_project, smn_project_id,
                                settings.all_phone, smn_del_ELBip_info)