def test_restore_ports(): from console.services.app_actions.app_restore import AppRestore tn = Tenants() tn.tenant_id = "c1a29fe4d7b0413993dc859430cf743d" svc = TenantServiceInfo() svc.service_id = "5a9209f3a3e94695b23fbd8b16a07d2b" backup_data = { "service_ports": [{ "lb_mapping_port": 0, "protocol": "http", "mapping_port": 80, "tenant_id": "c1a29fe4d7b0413993dc859430cf743d", "port_alias": "GR063B3980", "container_port": 80, "is_outer_service": False, "is_inner_service": False, "service_id": "5a9209f3a3e94695b23fbd8b16a07d2b", "ID": 513 }], } service_ports = backup_data["service_ports"] raw_ports = [port["port_alias"] for port in service_ports] app_restore = AppRestore(tn, svc) app_restore.ports(service_ports) ports = port_repo.get_service_ports(tn.tenant_id, svc.service_id) for port in ports: assert port.port_alias in raw_ports
def get_team_by_team_id(self, team_id): team = team_repo.get_team_by_team_id(team_id=team_id) if team is None: raise Tenants.DoesNotExist() user = user_repo.get_by_user_id(team.creater) team.creater = user.nick_name return team
def get_tenant_role_by_tenant_name(self, tenant_name): """获取一个团队中的所有角色和角色对应的权限信息""" try: tenant = self.get_tenant(tenant_name=tenant_name) except Tenants.DoesNotExist: tenant = self.get_team_by_team_id(tenant_name) if tenant is None: raise Tenants.DoesNotExist() return role_repo.get_tenant_role_by_tenant_id(tenant_id=tenant.pk)
def test_record_not_found(mocker): with pytest.raises(RecordNotFound): from console.services.app_actions.properties_changes import PropertiesChanges service_source = ServiceSourceInfo() service_source.group_key = "dummy group_key" mocker.patch( "console.repositories.app.service_source_repo.get_service_source", return_value=service_source) properties_changes = PropertiesChanges(TenantServiceInfo(), Tenants()) properties_changes.get_property_changes("eid", "version")
def test_envs_changes(): from console.services.app_actions.properties_changes import PropertiesChanges from console.repositories.app_config import env_var_repo tenant_id = "c1a29fe4d7b0413993dc859430cf743d" service_id = "03289ae373e65e4a1a22046d7f76ca5e" tenantServiceEnvVar = {} tenantServiceEnvVar["tenant_id"] = tenant_id tenantServiceEnvVar["service_id"] = service_id tenantServiceEnvVar['container_port'] = 0 tenantServiceEnvVar["name"] = "NGINX_VERSION" tenantServiceEnvVar["attr_name"] = "NGINX_VERSION" tenantServiceEnvVar["attr_value"] = "1.15.12-1~stretch" tenantServiceEnvVar["is_change"] = False tenantServiceEnvVar["scope"] = "inner" env_var_repo.add_service_env(**tenantServiceEnvVar) envs = [ { "is_change": True, "name": "\\u65e5\\u5fd7\\u8f93\\u51fa\\u65b9\\u5f0f", "attr_value": "file", "attr_name": "DESTINATION" }, { "is_change": True, "name": "\\u8be6\\u7ec6\\u9519\\u8bef\\u65e5\\u5fd7", "attr_value": "true", "attr_name": "TRACEALLEXCEPTIONS" }, { "is_change": True, "name": "NGINX_VERSION", "attr_value": "1.15.12-1~stretch", "attr_name": "NGINX_VERSION" }, ] service = TenantServiceInfo() service.tenant_id = tenant_id service.service_id = service_id properties_changes = PropertiesChanges(service, Tenants()) env_changes = properties_changes.env_changes(envs) print(env_changes) assert 2 == len(env_changes["add"]) assert next( iter([ x for x in env_changes["add"] if x["attr_name"] == "DESTINATION" ]), None) assert next( iter([ x for x in env_changes["add"] if x["attr_name"] == "TRACEALLEXCEPTIONS" ]), None)
def change_tenant_role(self, user_id, tenant_name, role_id_list): """修改用户在团队中的角色""" try: tenant = self.get_tenant(tenant_name=tenant_name) except Tenants.DoesNotExist: tenant = self.get_team_by_team_id(tenant_name) if tenant is None: raise Tenants.DoesNotExist() enterprise = enterprise_services.get_enterprise_by_enterprise_id(enterprise_id=tenant.enterprise_id) user_role = role_repo.update_user_role_in_tenant_by_user_id_tenant_id_role_id( user_id=user_id, tenant_id=tenant.pk, enterprise_id=enterprise.pk, role_id_list=role_id_list) return user_role
def get_user_perm_identitys_in_permtenant(self, user_id, tenant_name): """获取用户在一个团队的身份列表""" user = user_repo.get_by_user_id(user_id) try: tenant = self.get_tenant(tenant_name=tenant_name) except Tenants.DoesNotExist: tenant = self.get_team_by_team_id(tenant_name) if tenant is None: raise Tenants.DoesNotExist() user_roles = user_kind_role_service.get_user_roles(kind_id=tenant.ID, kind="team", user=user) if tenant.creater == user_id: user_roles["roles"].append("owner") return user_roles
def test_restore_env(): from console.services.app_actions.app_restore import AppRestore tn = Tenants() tn.tenant_id = "c1a29fe4d7b0413993dc859430cf743d" svc = TenantServiceInfo() svc.service_id = "36966cedcad44358a12f1707dece18da" backup_data = { "service_env_vars": [{ "name": "PHPIZE_DEPS", "tenant_id": "c1a29fe4d7b0413993dc859430cf743d", "attr_name": "PHPIZE_DEPS", "container_port": 0, "create_time": "2019-05-14 18:04:26", "attr_value": "autoconf", "is_change": True, "scope": "inner", "service_id": "36966cedcad44358a12f1707dece18da", "ID": 1080 }, { "name": "PHP_EXTRA_CONFIGURE_ARGS", "tenant_id": "c1a29fe4d7b0413993dc859430cf743d", "attr_name": "PHP_EXTRA_CONFIGURE_ARGS", "container_port": 0, "create_time": "2019-05-14 18:04:26", "attr_value": "--with-apxs2 --disable-cgi", "is_change": True, "scope": "inner", "service_id": "36966cedcad44358a12f1707dece18da", "ID": 1081 }] } service_env_vars = backup_data["service_env_vars"] raw_envs = [env["name"] for env in service_env_vars] app_restore = AppRestore(tn, svc) app_restore.envs(service_env_vars) envs = env_var_repo.get_service_env(tn.tenant_id, svc.service_id) for env in envs: assert env.name in raw_envs
def user_is_exist_in_team(self, user_list, tenant_name): """判断一个用户是否存在于一个团队中""" try: tenant = self.get_tenant(tenant_name=tenant_name) except Tenants.DoesNotExist: tenant = self.get_team_by_team_id(tenant_name) if tenant is None: raise Tenants.DoesNotExist() enterprise = enterprise_services.get_enterprise_by_enterprise_id(enterprise_id=tenant.enterprise_id) for user_id in user_list: obj = PermRelTenant.objects.filter(user_id=user_id, tenant_id=tenant.pk, enterprise_id=enterprise.pk) if obj: return obj[0].user_id return False
def get_all_team_role_id(self, tenant_name, allow_owner=False): """获取一个团队中的所有可选角色ID列表""" try: team_obj = self.get_tenant(tenant_name=tenant_name) except Tenants.DoesNotExist: team_obj = self.get_team_by_team_id(tenant_name) if team_obj is None: raise Tenants.DoesNotExist() filter = Q(is_default=True) if not allow_owner: filter &= ~Q(role_name="owner") default_role_id_list = TenantUserRole.objects.filter(filter).values_list("pk", flat=True) team_role_id_list = TenantUserRole.objects.filter(tenant_id=team_obj.pk, is_default=False).values_list("pk", flat=True) return list(default_role_id_list) + list(team_role_id_list)
def get_user_perm_role_id_in_permtenant(self, user_id, tenant_name): """获取一个用户在一个团队的角色ID列表""" try: tenant = self.get_tenant(tenant_name=tenant_name) except Tenants.DoesNotExist: tenant = self.get_team_by_team_id(tenant_name) if tenant is None: raise Tenants.DoesNotExist() user_perms = team_repo.get_user_perms_in_permtenant(user_id=user_id, tenant_id=tenant.ID) if not user_perms: return [] role_id_list = [] for role_id in [perm.role_id for perm in user_perms]: if not role_id: continue role_id_list.append(role_id) return role_id_list
def get_tenant_roles(self, tenant_id, page=None, page_size=None): """获取一个团队中的所有角色和角色对应的权限信息""" tenant = team_repo.get_team_by_team_id(tenant_id) if tenant is None: raise Tenants.DoesNotExist() role_list = role_repo.get_tenant_role_by_tenant_id(tenant_id=tenant.pk, allow_owner=True) if page is not None and page_size is None: paginator = Paginator(role_list, page_size) try: role_list = paginator.page(page).object_list except PageNotAnInteger: page = 1 role_list = paginator.page(1).object_list except EmptyPage: page = paginator.num_pages role_list = paginator.page(paginator.num_pages).object_list return role_list
def get_user_perm_identitys_in_permtenant(self, user_id, tenant_name): """获取用户在一个团队的身份列表""" try: tenant = self.get_tenant(tenant_name=tenant_name) except Tenants.DoesNotExist: tenant = self.get_team_by_team_id(tenant_name) if tenant is None: raise Tenants.DoesNotExist() user_perms = team_repo.get_user_perms_in_permtenant(user_id=user_id, tenant_id=tenant.ID) if not user_perms: return [] identitys = [perm.identity for perm in user_perms] identity_list = [] for identity in identitys: if not identity: continue identity_list.append(identity) return identity_list
def test_rbd_app_not_found(mocker): from console.services.app_actions.properties_changes import PropertiesChanges with open("{}/tests/console/svcupgrade/app_template.json".format( settings.BASE_DIR)) as json_file: app_template = json.load(json_file) rain_app = RainbondCenterApp() rain_app.app_template = json.dumps(app_template) mocker.patch( "console.repositories.market_app_repo.rainbond_app_repo.get_enterpirse_app_by_key_and_version", return_value=rain_app) service_source = ServiceSourceInfo() service_source.group_key = "dummy group_key" mocker.patch( "console.repositories.app.service_source_repo.get_service_source", return_value=service_source) with pytest.raises(RbdAppNotFound): properties_changes = PropertiesChanges(TenantServiceInfo(), Tenants()) properties_changes.get_property_changes("eid", "version")
def get_team_service_count_by_team_name(self, team_name): tenant = self.get_tenant_by_tenant_name(tenant_name=team_name) if tenant is None: raise Tenants.DoesNotExist() return TenantServiceInfo.objects.filter(tenant_id=tenant.tenant_id).count()
def init(self): self.sources = [ Tenants(), TenantRegionInfo(), TenantRegionResource(), ServiceInfo(), TenantServiceInfo(), TenantServiceInfoDelete(), TenantServiceLog(), TenantServiceRelation(), TenantServiceEnv(), TenantServiceAuth(), TenantServiceExtendMethod(), ServiceDomain(), ServiceDomainCertificate(), PermRelService(), PermRelTenant(), PhoneCode(), TenantServiceL7Info(), TenantServiceEnvVar(), TenantServicesPort(), TenantServiceMountRelation(), TenantServiceVolume(), TenantServiceConfigurationFile(), ServiceGroup(), ServiceGroupRelation(), ImageServiceRelation(), ComposeServiceRelation(), ServiceRule(), ServiceRuleHistory(), ServiceCreateStep(), ServiceProbe(), ConsoleConfig(), TenantEnterprise(), TenantEnterpriseToken(), TenantServiceGroup(), ServiceTcpDomain(), ThirdPartyServiceEndpoints(), ServiceWebhooks(), GatewayCustomConfiguration(), ConsoleSysConfig(), RainbondCenterApp(), RainbondCenterAppInherit(), RainbondCenterPlugin(), ServiceShareRecord(), EnterpriseUserPerm(), TenantUserRole(), TenantUserPermission(), TenantUserRolePermission(), PermGroup(), ServiceRelPerms(), AppExportRecord(), UserMessage(), AppImportRecord(), GroupAppBackupRecord(), GroupAppMigrateRecord(), GroupAppBackupImportRecord(), Applicants(), DeployRelation(), ServiceBuildSource(), TenantServiceBackup(), AppUpgradeRecord(), ServiceUpgradeRecord(), RegionConfig(), CloundBangImages(), Announcement(), ]