コード例 #1
0
 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)
コード例 #2
0
    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)