Exemple #1
0
    def __create_new_group_by_group_name(self, tenant_id, region,
                                         old_group_id):

        new_group_name = '_'.join(["备份应用", make_uuid()[-4:]])

        new_group = group_repo.add_group(tenant_id, region, new_group_name)
        return new_group
    def __create_new_group(self, tenant_id, region, old_group_id):

        old_group = group_repo.get_group_by_id(old_group_id)
        new_group_name = '_'.join([old_group.group_name, make_uuid()[-4:]])

        new_group = group_repo.add_group(tenant_id, region, new_group_name)
        return new_group
 def add_group(self, tenant, region_name, group_name):
     if not group_name:
         return 400, u"应用名称不能为空", None
     is_pass, msg = self.check_group_name(group_name)
     if not is_pass:
         return 400, msg, None
     new_group = group_repo.add_group(tenant.tenant_id, region_name, group_name)
     return 200, u"添加成功", new_group
Exemple #4
0
 def add_group(self, tenant, region_name, group_name):
     if not group_name:
         return 400, u"组名不能为空", None
     group = group_repo.get_group_by_unique_key(tenant.tenant_id, region_name, group_name)
     if group:
         return 409, u"组名{0}已存在".format(group_name), None
     new_group = group_repo.add_group(tenant.tenant_id, region_name, group_name)
     return 200, u"添加成功", new_group
Exemple #5
0
 def add_group(self, tenant, region_name, group_name, group_note=""):
     self.check_group_name(tenant, region_name, group_name)
     group = group_repo.get_group_by_unique_key(tenant.tenant_id,
                                                region_name, group_name)
     if group:
         raise ServiceHandleException(
             msg="app already exists",
             msg_show="应用名{0}已存在".format(group_name))
     return group_repo.add_group(tenant.tenant_id, region_name, group_name,
                                 group_note)
Exemple #6
0
 def get_or_create_default_group(self, tenant_id, region_name):
     # 查询是否有团队在当前数据中心是否有默认应用,没有创建
     group = ServiceGroup.objects.filter(tenant_id=tenant_id,
                                         region_name=region_name,
                                         is_default=True).first()
     if not group:
         return group_repo.add_group(tenant_id=tenant_id,
                                     region_name=region_name,
                                     group_name="默认应用",
                                     is_default=True)
     return group
Exemple #7
0
 def __add_group(self, tenant, region_name, app_name, note="", username=""):
     self.check_app_name(tenant, region_name, app_name)
     if group_repo.get_group_by_unique_key(tenant.tenant_id, region_name,
                                           app_name):
         raise ServiceHandleException(msg="app name exist",
                                      msg_show="应用名称已存在")
     return group_repo.add_group(tenant.tenant_id,
                                 region_name,
                                 app_name,
                                 group_note=note,
                                 username=username)
Exemple #8
0
 def add_group(self, tenant, region_name, app_name, note=""):
     self.check_app_name(tenant, region_name, app_name)
     return group_repo.add_group(tenant.tenant_id, region_name, app_name,
                                 note)
Exemple #9
0
 def __create_group(self, tenant_id, region_name, group_alias):
     group_name = '_'.join([group_alias, make_uuid()[-4:]])
     new_group = group_repo.add_group(tenant_id, region_name, group_name)
     return new_group
    def install_market_apps_directly(self, user, tenant, region_name,
                                     app_service_json_str, service_origin):
        app_templates = json.loads(app_service_json_str)
        apps = app_templates["apps"]

        service_list = []
        service_key_dep_key_map = {}
        key_service_map = {}
        tenant_service_group = None
        new_group = None
        try:
            # 生成分类
            group_name = self.__generator_group_name(
                app_templates["group_name"])
            new_group = group_repo.add_group(tenant.tenant_id, region_name,
                                             group_name)
            group_id = new_group.ID
            tenant_service_group = self.__generate_tenant_service_group(
                region_name, tenant.tenant_id, new_group.ID,
                app_templates["group_key"], app_templates["group_version"],
                app_templates["group_name"])
            for app in apps:
                ts = self.__init_market_app(tenant, region_name, user, app,
                                            tenant_service_group.ID,
                                            service_origin)
                group_service.add_service_to_group(tenant, region_name,
                                                   group_id, ts.service_id)

                # 先保存env,再保存端口,因为端口需要处理env
                code, msg = self.__save_env(
                    tenant, ts, app["service_env_map_list"],
                    app["service_connect_info_map_list"])
                if code != 200:
                    raise Exception(msg)
                code, msg = self.__save_port(tenant, ts, app["port_map_list"])
                if code != 200:
                    raise Exception(msg)
                code, msg = self.__save_volume(tenant, ts,
                                               app["service_volume_map_list"])
                if code != 200:
                    raise Exception(msg)

                # 保存应用探针信息
                probe_infos = app.get("probes", None)
                if probe_infos:
                    for prob_data in probe_infos:
                        code, msg, probe = probe_service.add_service_probe(
                            tenant, ts, prob_data)
                        if code != 200:
                            logger.exception(msg)

                self.__save_extend_info(ts, app["extend_method_map"])

                dep_apps_key = app.get("dep_service_map_list", None)
                if dep_apps_key:
                    service_key_dep_key_map[ts.service_key] = dep_apps_key
                key_service_map[ts.service_key] = ts
                service_list.append(ts)
            # 保存依赖关系,需要等应用都创建完成才能使用
            self.__save_service_deps(tenant, service_key_dep_key_map,
                                     key_service_map)
            # 数据中心创建应用
            for service in service_list:
                new_service = app_service.create_region_service(
                    tenant, service, user.nick_name)
                logger.debug("build service ===> {0}  success".format(
                    service.service_cname))
                # 为服务添加探针
                self.__create_service_probe(tenant, new_service)

                # 添加服务有无状态标签
                label_service.update_service_state_label(tenant, new_service)

            return True, "success", tenant_service_group, service_list
        except Exception as e:
            logger.exception(e)
            # 回滚数据
            if tenant_service_group:
                tenant_service_group_repo.delete_tenant_service_group_by_pk(
                    tenant_service_group.ID)
            if new_group:
                group_repo.delete_group_by_pk(new_group.ID)
            for service in service_list:
                try:
                    app_manage_service.truncate_service(tenant, service)
                except Exception as delete_error:
                    logger.exception(delete_error)
            return False, "create tenant_services from market directly failed !", None, service_list