def delete(self, request, plugin_id, *args, **kwargs):
     """
     应用卸载插件
     ---
     parameters:
         - name: tenantName
           description: 租户名
           required: true
           type: string
           paramType: path
         - name: serviceAlias
           description: 服务别名
           required: true
           type: string
           paramType: path
         - name: plugin_id
           description: 插件ID
           required: true
           type: string
           paramType: path
     """
     try:
         region_api.uninstall_service_plugin(self.response_region, self.tenant.tenant_name, plugin_id,
                                             self.service.service_alias)
         app_plugin_service.delete_service_plugin_relation(self.service, plugin_id)
         app_plugin_service.delete_service_plugin_config(self.service, plugin_id)
         return Response(general_message(200, "success", "卸载成功"))
     except Exception, e:
         logger.exception(e)
         result = error_message(e.message)
         return Response(result, status=200)
 def delete(self, request, plugin_id, *args, **kwargs):
     """
     组件卸载插件
     ---
     parameters:
         - name: tenantName
           description: 租户名
           required: true
           type: string
           paramType: path
         - name: serviceAlias
           description: 组件别名
           required: true
           type: string
           paramType: path
         - name: plugin_id
           description: 插件ID
           required: true
           type: string
           paramType: path
     """
     body = dict()
     body["operator"] = self.user.nick_name
     region_api.uninstall_service_plugin(self.response_region, self.tenant.tenant_name, plugin_id,
                                         self.service.service_alias, body)
     app_plugin_service.delete_service_plugin_relation(self.service, plugin_id)
     app_plugin_service.delete_service_plugin_config(self.service, plugin_id)
     return Response(general_message(200, "success", "卸载成功"))
    def put(self, request, plugin_id, *args, **kwargs):
        """
        应用插件配置更新
        ---
        parameters:
            - name: tenantName
              description: 租户名
              required: true
              type: string
              paramType: path
            - name: serviceAlias
              description: 服务别名
              required: true
              type: string
              paramType: path
            - name: plugin_id
              description: 插件ID
              required: true
              type: string
              paramType: path
            - name: body
              description: 配置内容
              required: true
              type: string
              paramType: body

        """
        sid = None
        try:
            logger.debug("update service plugin config ")
            config = json.loads(request.body)
            logger.debug("====> {0}".format(config))
            if not config:
                return Response(general_message(400, "params error", "参数配置不可为空"), status=400)
            pbv = plugin_version_service.get_newest_usable_plugin_version(plugin_id)
            if not pbv:
                return Response(general_message(400, "no usable plugin version", "无最新更新的版本信息,无法更新配置"), status=400)
            sid = transaction.savepoint()
            # 删除原有配置
            app_plugin_service.delete_service_plugin_config(self.service, plugin_id)
            # 全量插入新配置
            app_plugin_service.update_service_plugin_config(self.service, plugin_id, pbv.build_version, config)
            # 更新数据中心配置
            region_config = app_plugin_service.get_region_config_from_db(self.service, plugin_id, pbv.build_version)
            region_api.update_service_plugin_config(self.response_region, self.tenant.tenant_name,
                                                    self.service.service_alias, plugin_id, region_config)
            # 提交操作
            transaction.savepoint_commit(sid)
            result = general_message(200, "success", "配置更新成功")
        except Exception as e:
            logger.exception(e)
            if sid:
                transaction.savepoint_rollback(sid)
            result = error_message(e.message)
        return Response(result, result["code"])
Beispiel #4
0
    def _update_plugins(self, plugins):
        logger.debug("start updating plugins; plugin datas: {}".format(plugins))
        add = plugins.get("add", [])
        try:
            app_plugin_service.create_plugin_4marketsvc(self.service.service_region, self.tenant, self.service,
                                                        self.template["apps"], self.version, add)
        except ServiceHandleException as e:
            logger.exception(e)

        delete = plugins.get("delete", [])
        for plugin in delete:
            app_plugin_service.delete_service_plugin_relation(self.service, plugin["plugin_id"])
            app_plugin_service.delete_service_plugin_config(self.service, plugin["plugin_id"])
Beispiel #5
0
    def _update_plugins(self, plugins):
        logger.debug("start updating plugins; plugin datas: {}".format(plugins))
        add = plugins.get("add", [])
        try:
            app_plugin_service.create_plugin_4marketsvc(
                self.tenant.region, self.tenant, self.service, self.version, add)
        except ErrPluginAlreadyInstalled as e:
            logger.warning("plugin data: {}; failed to create plugin: {}", add, e)

        delete = plugins.get("delete", [])
        for plugin in delete:
            app_plugin_service.delete_service_plugin_relation(self.service,
                                                              plugin["plugin_id"])
            app_plugin_service.delete_service_plugin_config(self.service,
                                                            plugin["plugin_id"])
    def post(self, request, plugin_id, *args, **kwargs):
        """
        应用安装插件
        ---
        parameters:
            - name: tenantName
              description: 租户名
              required: true
              type: string
              paramType: path
            - name: serviceAlias
              description: 服务别名
              required: true
              type: string
              paramType: path
            - name: plugin_id
              description: 插件ID
              required: true
              type: string
              paramType: path
            - name: build_version
              description: 插件版本
              required: true
              type: string
              paramType: form
        """
        result = {}
        build_version = request.data.get("build_version", None)
        try:
            if not plugin_id:
                return Response(general_message(400, "params error", "参数错误"), status=400)
            if not build_version:
                plugin_version = plugin_version_service.get_newest_usable_plugin_version(plugin_id)
                build_version = plugin_version.build_version
            logger.debug("start install plugin ! plugin_id {0}  build_version {1}".format(plugin_id, build_version))
            # 1.生成console数据,存储
            code, msg = app_plugin_service.save_default_plugin_config(self.tenant, self.service, plugin_id,
                                                                      build_version)
            if code != 200:
                return Response(general_message(code, "install plugin fail", msg), status=code)
            # 2.从console数据库取数据生成region数据
            region_config = app_plugin_service.get_region_config_from_db(self.service, plugin_id, build_version)

            data = dict()
            data["plugin_id"] = plugin_id
            data["switch"] = True
            data["version_id"] = build_version
            data.update(region_config)
            code, msg, relation = app_plugin_service.create_service_plugin_relation(self.service.service_id, plugin_id,
                                                                                    build_version, "",
                                                                                    True)
            if code != 200:
                return Response(general_message(code, "install plugin fail", msg), status=code)
            region_api.install_service_plugin(self.response_region, self.tenant.tenant_name, self.service.service_alias,
                                              data)

            result = general_message(200, "success", "安装成功")
        except Exception as e:
            logger.exception(e)
            app_plugin_service.delete_service_plugin_config(self.service, plugin_id)
            app_plugin_service.delete_service_plugin_relation(self.service, plugin_id)
            if e.message.has_key("body"):

                if e.message["body"].has_key("msg"):
                    if e.message["body"]["msg"] == "can not add this kind plugin, a same kind plugin has been linked":
                        result = general_message(409, "install plugin fail", "网络类插件不能重复安装")
            else:
                result = general_message(500, e.message, "插件安装失败")
        return Response(result, status=result["code"])