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
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
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)
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
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)
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)
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