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
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)
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)
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)
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}的形式