Ejemplo n.º 1
0
 def test_stop_ecs(self, resource_ready_destroy):
     resp_message = resource_ready_destroy[1].stop_ecs(EcsApi().param_config["ecs_param"]["stop_ecs"])
     logger.logger.warning(f"接口返回结果为{resp_message.json()}")
     try:
         assert resp_message.status_code == 200
         assert "RequestId" in resp_message.json()
     except Exception as e:
         raise e
Ejemplo n.º 2
0
def private_ip_north():
    try:
        account_data = Account.objects.all()
        for account in account_data:
            #add private_ip
            private_ip_noexist_n = Ecs.objects.filter(private_ip__isnull=True,ecs_id__isnull=False,account_name=account.account_name,region='cn-north-1')
            for i in private_ip_noexist_n:
                ecs_private_ip_n = EcsApi(account.tokencn_north_1,'cn-north-1',account.pidcn_north_1).get_private_ip(i.ecs_id)
                Ecs.objects.filter(ecs_id=i.ecs_id).update(private_ip=ecs_private_ip_n[i.ecs_id])
    except Exception as e:
        log.logging.error(e)
Ejemplo n.º 3
0
def sync_ecs_east():
    try:
        account_data = Account.objects.all()
        for account in account_data:

            ecs_all_e = EcsApi(account.tokencn_east_2,'cn-east-2',account.pidcn_east_2).get_ecs()

            #add ecs,update ecs_name
            for k,v in ecs_all_e.items():
                Ecs.objects.get_or_create(ecs_id=v,region='cn-east-2',account_name=account.account_name,account_id=account.id)
                Ecs.objects.filter(ecs_id=v).update(ecs_name=k)

            #delete mysql_ecs
            ecs_id_all_e = set(ecs_all_e.values())
            ecs_id_all_mysql_e = set(list(map(lambda x: x.ecs_id,Ecs.objects.filter(account_name=account.account_name,region='cn-east-2'))))
            delete_ecs_mysql_e = list(ecs_id_all_mysql_e - ecs_id_all_e)

            for i in  delete_ecs_mysql_e:
                Ecs.objects.filter(ecs_id=i).delete()
    except Exception as e:
        log.logging.error(e)
Ejemplo n.º 4
0
    def get_active_ecs_id(self, account_name, region):
        self.account_name = account_name
        self.region = region

        try:
            for i in self.region_list:
                if self.region == i:
                    __pid_str = "pid" + self.region.replace("-", "_")
                    __itoken = self.ecs_mysql.get_data(
                        "host_token",
                        "token",
                        account_name=self.account_name,
                        region=self.region)
                    __ipid = self.ecs_mysql.get_data(
                        "hwaccount_account",
                        __pid_str,
                        account_name=self.account_name)
                    __opecs_api = EcsApi(__itoken[0][0], self.region,
                                         __ipid[0][0])
                    return list(__opecs_api.get_active_ecs().values())
        except Exception as e:
            logging.error(e)
Ejemplo n.º 5
0
def resource_ready_destroy():
    logger.logger.info(
        "========================进入用例前置步骤========================")
    time1 = 0
    time2 = 0
    ecs = EcsApi()
    ecs.run_ecs(EcsApi().param_config["ecs_param"]["run_ecs"],
                EcsApi().json_config["run_ecs"])
    ecs_name = ecs.get_jsonpath(expr="$.instanceIds[0]")
    logger.logger.debug(f"==========jsonpath获取到的实例id为{ecs_name}==========")
    logger.logger.info("==========等待查询主机列表接口可以返回主机信息==========")
    time.sleep(10)
    while True:
        ecs.describe_ecs(EcsApi().param_config["ecs_param"]["describe_ecs"])
        status = ecs.get_jsonpath(expr="$.list[0].status")
        logger.logger.info(f"检查主机实例当前的状态为{status}")
        if isinstance(status, list):
            if status[0] == 'RUNNING':
                break
            elif time1 == 18:
                logger.logger.error("创建主机3分钟仍然没有变为运行中状态!")
                break
            else:
                time.sleep(10)
                time1 += 1
                continue
        else:
            logger.logger.error("订单失败,没有下发到A层!")
            exit()
            break
    SetEnv.replace_param(ecs_name[0])  # 修改pram.yaml文件中的${ecs_name}
    yield ecs_name[0], ecs
    logger.logger.info(
        "========================进入用例后置步骤========================")
    result = ecs.stop_ecs(
        EcsApi().param_config["ecs_param"]["stop_ecs"]).status_code
    if result == 200:
        while True:
            ecs.describe_ecs(
                EcsApi().param_config["ecs_param"]["describe_ecs"])
            status = ecs.get_jsonpath(expr="$.list[0].status")
            logger.logger.info(f"检查主机实例当前的状态为{status}")
            if status[0] == 'DOWN':
                break
            elif time2 == 12:
                logger.logger.error("关闭主机1分钟仍然没有变为关停状态!")
                break
            else:
                time.sleep(5)
                time2 += 1
                continue
    else:
        logger.logger.error("关闭主机实例失败!")
        exit()
    ecs.delete_ecs(EcsApi().param_config["ecs_param"]["delete_ecs"])
    SetEnv.recovery_param()  # 将param.yaml恢复回带${ecs_name}的形式