def put(self, request, *args, **kwargs): """镜像更新自动部署触发条件""" try: service_webhook = service_webhooks_repo.get_or_create_service_webhook( self.service.service_id, "image_webhooks") trigger = request.data.get("trigger") if trigger: service_webhook.trigger = trigger service_webhook.save() except Exception as e: logger.exception(e) return error_message(e.message) return Response(general_message( 200, "success", "自动部署触发条件更新成功", bean={ "url": "{host}/console/image/webhooks/{service_id}".format( host=os.environ.get('DEFAULT_DOMAIN', "http://" + request.get_host()), service_id=self.service.service_id), "trigger": service_webhook.trigger }), status=200)
def get(self, request, *args, **kwargs): """ 判断该组件是否有webhooks自动部署功能,有则返回URL """ try: deployment_way = request.GET.get("deployment_way", None) if not deployment_way: result = general_message(400, "Parameter cannot be empty", "缺少参数") return Response(result, status=400) tenant_id = self.tenant.tenant_id service_alias = self.service.service_alias service_obj = TenantServiceInfo.objects.filter( tenant_id=tenant_id, service_alias=service_alias)[0] if service_obj.service_source == AppConstants.MARKET: result = general_message(200, "failed", "该组件不符合要求", bean={"display": False}) return Response(result, status=200) if service_obj.service_source == AppConstants.SOURCE_CODE: support_type = 1 else: support_type = 2 service_id = service_obj.service_id # 从环境变量中获取域名,没有在从请求中获取 host = os.environ.get('DEFAULT_DOMAIN', "http://" + request.get_host()) service_webhook = service_webhooks_repo.get_or_create_service_webhook( self.service.service_id, deployment_way) # api处发自动部署 if deployment_way == "api_webhooks": # 生成秘钥 deploy = deploy_repo.get_deploy_relation_by_service_id( service_id=service_id) secret_key = pickle.loads( base64.b64decode(deploy)).get("secret_key") url = host + "/console/" + "custom/deploy/" + service_obj.service_id result = general_message(200, "success", "获取URl及开启状态成功", bean={ "url": url, "secret_key": secret_key, "status": service_webhook.state, "display": True, "support_type": support_type }) # 镜像处发自动部署 elif deployment_way == "image_webhooks": url = host + "/console/" + "image/webhooks/" + service_obj.service_id result = general_message(200, "success", "获取URl及开启状态成功", bean={ "url": url, "status": service_webhook.state, "display": True, "support_type": support_type, "trigger": service_webhook.trigger, }) # 源码处发自动部署 else: url = host + "/console/" + "webhooks/" + service_obj.service_id deploy_keyword = service_webhook.deploy_keyword result = general_message(200, "success", "获取URl及开启状态成功", bean={ "url": url, "status": service_webhook.state, "display": True, "support_type": support_type, "deploy_keyword": deploy_keyword }) return Response(result, status=200) except Exception as e: logger.exception(e) result = error_message(e.message) return Response(result, status=500)