Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

feat: Job 支持多租户 #3369 #3373

Merged
merged 7 commits into from
Jan 9, 2025
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
Original file line number Diff line number Diff line change
Expand Up @@ -34,6 +34,7 @@
import com.tencent.bk.job.common.esb.config.BkApiGatewayProperties;
import com.tencent.bk.job.common.esb.config.EsbProperties;
import com.tencent.bk.job.common.esb.constants.EsbLang;
import com.tencent.bk.job.common.tenant.TenantEnvService;
import com.tencent.bk.job.common.util.FlowController;
import io.micrometer.core.instrument.MeterRegistry;
import lombok.extern.slf4j.Slf4j;
Expand Down Expand Up @@ -98,7 +99,8 @@ public BizCmdbClient bizCmdbClient(AppProperties appProperties,
ThreadPoolExecutor cmdbThreadPoolExecutor,
ThreadPoolExecutor cmdbLongTermThreadPoolExecutor,
MeterRegistry meterRegistry,
ObjectProvider<FlowController> flowControllerProvider) {
ObjectProvider<FlowController> flowControllerProvider,
TenantEnvService tenantEnvService) {
return new BizCmdbClient(
appProperties,
esbProperties,
Expand All @@ -108,7 +110,8 @@ public BizCmdbClient bizCmdbClient(AppProperties appProperties,
cmdbThreadPoolExecutor,
cmdbLongTermThreadPoolExecutor,
flowControllerProvider.getIfAvailable(),
meterRegistry
meterRegistry,
tenantEnvService
);
}

Expand All @@ -120,7 +123,8 @@ public BizCmdbClient cnBizCmdbClient(AppProperties appProperties,
ThreadPoolExecutor cmdbThreadPoolExecutor,
ThreadPoolExecutor cmdbLongTermThreadPoolExecutor,
MeterRegistry meterRegistry,
ObjectProvider<FlowController> flowControllerProvider) {
ObjectProvider<FlowController> flowControllerProvider,
TenantEnvService tenantEnvService) {
return new BizCmdbClient(
appProperties,
esbProperties,
Expand All @@ -130,7 +134,8 @@ public BizCmdbClient cnBizCmdbClient(AppProperties appProperties,
cmdbThreadPoolExecutor,
cmdbLongTermThreadPoolExecutor,
flowControllerProvider.getIfAvailable(),
meterRegistry
meterRegistry,
tenantEnvService
);
}

Expand All @@ -140,14 +145,16 @@ public BizSetCmdbClient bizSetCmdbClient(AppProperties appProperties,
BkApiGatewayProperties bkApiGatewayProperties,
CmdbConfig cmdbConfig,
MeterRegistry meterRegistry,
ObjectProvider<FlowController> flowControllerProvider) {
ObjectProvider<FlowController> flowControllerProvider,
TenantEnvService tenantEnvService) {
return new BizSetCmdbClient(
appProperties,
esbProperties,
bkApiGatewayProperties,
cmdbConfig,
flowControllerProvider.getIfAvailable(),
meterRegistry
meterRegistry,
tenantEnvService
);
}

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -37,10 +37,11 @@
import com.tencent.bk.job.common.esb.model.EsbReq;
import com.tencent.bk.job.common.esb.model.EsbResp;
import com.tencent.bk.job.common.esb.model.OpenApiRequestInfo;
import com.tencent.bk.job.common.esb.sdk.BkApiClient;
import com.tencent.bk.job.common.esb.sdk.BkApiV1Client;
import com.tencent.bk.job.common.exception.InternalCmdbException;
import com.tencent.bk.job.common.exception.InternalException;
import com.tencent.bk.job.common.metrics.CommonMetricNames;
import com.tencent.bk.job.common.tenant.TenantEnvService;
import com.tencent.bk.job.common.util.ApiUtil;
import com.tencent.bk.job.common.util.FlowController;
import com.tencent.bk.job.common.util.http.HttpHelper;
Expand Down Expand Up @@ -101,11 +102,11 @@ public class BaseCmdbApiClient {
/**
* CMDB ESB API 客户端
*/
protected BkApiClient esbCmdbApiClient;
protected BkApiV1Client esbCmdbApiClient;
/**
* CMDB 蓝鲸网关 API 客户端
*/
protected BkApiClient apiGwCmdbApiClient;
protected BkApiV1Client apiGwCmdbApiClient;

static {
interfaceNameMap.put(SEARCH_BIZ_INST_TOPO, "search_biz_inst_topo");
Expand Down Expand Up @@ -134,20 +135,23 @@ protected BaseCmdbApiClient(FlowController flowController,
BkApiGatewayProperties bkApiGatewayProperties,
CmdbConfig cmdbConfig,
MeterRegistry meterRegistry,
TenantEnvService tenantEnvService,
String lang) {
WatchableHttpHelper httpHelper = HttpHelperFactory.getRetryableHttpHelper();
this.esbCmdbApiClient = new BkApiClient(meterRegistry,
this.esbCmdbApiClient = new BkApiV1Client(meterRegistry,
CmdbMetricNames.CMDB_API_PREFIX,
esbProperties.getService().getUrl(),
httpHelper,
lang
lang,
tenantEnvService
);
this.esbCmdbApiClient.setLogger(LoggerFactory.getLogger(this.getClass()));
this.apiGwCmdbApiClient = new BkApiClient(meterRegistry,
this.apiGwCmdbApiClient = new BkApiV1Client(meterRegistry,
CmdbMetricNames.CMDB_API_PREFIX,
bkApiGatewayProperties.getCmdb().getUrl(),
httpHelper,
lang
lang,
tenantEnvService
);
this.apiGwCmdbApiClient.setLogger(LoggerFactory.getLogger(this.getClass()));
this.globalFlowController = flowController;
Expand Down Expand Up @@ -218,7 +222,7 @@ protected <R> EsbResp<R> requestCmdbApi(ApiGwType apiGwType,
}
}

private BkApiClient getApiClientByApiGwType(ApiGwType apiGwType) {
private BkApiV1Client getApiClientByApiGwType(ApiGwType apiGwType) {
switch (apiGwType) {
case ESB:
return esbCmdbApiClient;
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -120,6 +120,7 @@
import com.tencent.bk.job.common.model.dto.HostDTO;
import com.tencent.bk.job.common.model.dto.ResourceScope;
import com.tencent.bk.job.common.model.error.ErrorType;
import com.tencent.bk.job.common.tenant.TenantEnvService;
import com.tencent.bk.job.common.util.CollectionUtil;
import com.tencent.bk.job.common.util.FlowController;
import com.tencent.bk.job.common.util.JobContextUtil;
Expand Down Expand Up @@ -189,14 +190,16 @@ public BizCmdbClient(AppProperties appProperties,
ThreadPoolExecutor threadPoolExecutor,
ThreadPoolExecutor longTermThreadPoolExecutor,
FlowController flowController,
MeterRegistry meterRegistry) {
MeterRegistry meterRegistry,
TenantEnvService tenantEnvService) {
super(
flowController,
appProperties,
esbProperties,
bkApiGatewayProperties,
cmdbConfig,
meterRegistry,
tenantEnvService,
lang
);
this.threadPoolExecutor = threadPoolExecutor;
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -51,6 +51,7 @@
import com.tencent.bk.job.common.esb.model.EsbReq;
import com.tencent.bk.job.common.esb.model.EsbResp;
import com.tencent.bk.job.common.exception.InternalCmdbException;
import com.tencent.bk.job.common.tenant.TenantEnvService;
import com.tencent.bk.job.common.util.FlowController;
import com.tencent.bk.job.common.util.http.HttpHelperFactory;
import io.micrometer.core.instrument.MeterRegistry;
Expand All @@ -77,9 +78,10 @@ public BizSetCmdbClient(AppProperties appProperties,
BkApiGatewayProperties bkApiGatewayProperties,
CmdbConfig cmdbConfig,
FlowController flowController,
MeterRegistry meterRegistry) {
MeterRegistry meterRegistry,
TenantEnvService tenantEnvService) {
super(flowController, appProperties, esbProperties,
bkApiGatewayProperties, cmdbConfig, meterRegistry, null);
bkApiGatewayProperties, cmdbConfig, meterRegistry, tenantEnvService, null);
}

/**
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -26,6 +26,7 @@

import com.tencent.bk.audit.filter.AuditPostFilter;
import com.tencent.bk.audit.model.AuditEvent;
import com.tencent.bk.job.common.model.BasicApp;
import com.tencent.bk.job.common.model.dto.AppResourceScope;
import com.tencent.bk.job.common.util.JobContextUtil;
import lombok.extern.slf4j.Slf4j;
Expand All @@ -41,13 +42,13 @@ public AuditEvent map(AuditEvent auditEvent) {
if (auditEvent == null) {
return null;
}
AppResourceScope appResourceScope = JobContextUtil.getAppResourceScope();
if (appResourceScope != null) {
BasicApp app = JobContextUtil.getApp();
if (app != null && app.getScope() != null) {
if (log.isDebugEnabled()) {
log.debug("Add resource scope for audit event, resourceScope: {}", appResourceScope);
log.debug("Add resource scope for audit event, resourceScope: {}", app.getScope());
}
auditEvent.setScopeType(appResourceScope.getType().getValue());
auditEvent.setScopeId(appResourceScope.getId());
auditEvent.setScopeType(app.getScope().getType().getValue());
auditEvent.setScopeId(app.getScope().getId());
}
return auditEvent;
}
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -63,9 +63,10 @@
1211003=根据动态分组 ID 查找主机失败,动态分组 ID :{0},原因:{1},请确认指定的动态分组在业务下是否存在
1211004=根据业务ID查找动态分组失败,业务 ID :{0},原因:{1},请确认指定的业务是否存在动态分组
1213001=CMSI 接口访问异常
1213002=用户管理接口访问异常
1213003=调用 CMSI 接口获取通知渠道数据异常
1213004=调用 CMSI 接口发送通知失败,错误码:{0},错误信息:{1}
1219001=蓝鲸登录接口访问异常
1220001=用户管理接口访问异常

1214001=ARTIFACTORY API 返回数据异常
1214002=制品库中找不到节点:{0},请到制品库核实
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -63,9 +63,10 @@
1211003=Fail to find host by dynamic group, id:{0}, reason:{1}, please confirm the specified dynamic group in business
1211004=Fail to find dynamic group by biz, id:{0}, reason:{1}, please confirm dynamic group in the specified business
1213001=Fail to request CMSI API
1213002=Fail to request UserManage API
1213003=CMSI exception when get notify channels
1213004=CMSI exception when send notify, error_code={0}, error_msg={1}
1219001=Fail to request bk-login API
1220001=Fail to request bk-user API

1214001=ARTIFACTORY API returned data exception
1214002=Cannot find node in bkrepo:{0}, please check in bkrepo
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -63,9 +63,9 @@
1211003=Fail to find host by dynamic group, id:{0}, reason:{1}, please confirm the specified dynamic group in business
1211004=Fail to find dynamic group by biz, id:{0}, reason:{1}, please confirm dynamic group in the specified business
1213001=Fail to request CMSI API
1213002=Fail to request UserManage API
1213003=CMSI exception when get notify channels
1213004=CMSI exception when send notify, error_code={0}, error_msg={1}
1220001=Fail to request bk-user API

1214001=ARTIFACTORY API returned data exception
1214002=Cannot find node in bkrepo:{0}, please check in bkrepo
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -63,9 +63,10 @@
1211003=根据动态分组 ID 查找主机失败,动态分组 ID :{0},原因:{1},请确认指定的动态分组在业务下是否存在
1211004=根据业务ID查找动态分组失败,业务 ID :{0},原因:{1},请确认指定的业务是否存在动态分组
1213001=CMSI 接口访问异常
1213002=用户管理接口访问异常
1213003=调用 CMSI 接口获取通知渠道数据异常
1213004=调用 CMSI 接口发送通知失败,错误码:{0},错误信息:{1}
1219001=蓝鲸登录接口访问异常
1220001=用户管理接口访问异常

1214001=ARTIFACTORY API 返回数据异常
1214002=制品库中找不到节点:{0},请到制品库核实
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -63,9 +63,10 @@
1211003=根据动态分组 ID 查找主机失败,动态分组 ID :{0},原因:{1},请确认指定的动态分组在业务下是否存在
1211004=根据业务ID查找动态分组失败,业务 ID :{0},原因:{1},请确认指定的业务是否存在动态分组
1213001=CMSI 接口访问异常
1213002=用户管理接口访问异常
1213003=调用 CMSI 接口获取通知渠道数据异常
1213004=调用 CMSI 接口发送通知失败,错误码:{0},错误信息:{1}
1219001=蓝鲸登录接口访问异常
1220001=用户管理接口访问异常

1214001=ARTIFACTORY API 返回数据异常
1214002=制品库中找不到节点:{0},请到制品库核实
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -33,7 +33,7 @@
import com.tencent.bk.job.common.esb.model.EsbReq;
import com.tencent.bk.job.common.esb.model.EsbResp;
import com.tencent.bk.job.common.esb.model.OpenApiRequestInfo;
import com.tencent.bk.job.common.esb.sdk.BkApiClient;
import com.tencent.bk.job.common.esb.sdk.BkApiV1Client;
import com.tencent.bk.job.common.exception.InternalIamException;
import com.tencent.bk.job.common.iam.dto.AuthByPathReq;
import com.tencent.bk.job.common.iam.dto.BatchAuthByPathReq;
Expand All @@ -47,6 +47,7 @@
import com.tencent.bk.job.common.iam.dto.GetApplyUrlResponse;
import com.tencent.bk.job.common.iam.dto.RegisterResourceRequest;
import com.tencent.bk.job.common.metrics.CommonMetricNames;
import com.tencent.bk.job.common.tenant.TenantEnvService;
import com.tencent.bk.job.common.util.http.HttpHelperFactory;
import com.tencent.bk.job.common.util.http.HttpMetricUtil;
import com.tencent.bk.sdk.iam.constants.SystemId;
Expand All @@ -64,7 +65,7 @@
* IAM API 调用客户端
*/
@Slf4j
public class EsbIamClient extends BkApiClient implements IIamClient {
public class EsbIamClient extends BkApiV1Client implements IIamClient {

private static final String API_GET_APPLY_URL = "/api/c/compapi/v2/iam/application/";
private static final String API_REGISTER_RESOURCE_URL =
Expand All @@ -78,14 +79,16 @@ public class EsbIamClient extends BkApiClient implements IIamClient {

public EsbIamClient(MeterRegistry meterRegistry,
AppProperties appProperties,
EsbProperties esbProperties) {
EsbProperties esbProperties,
TenantEnvService tenantEnvService) {
super(
meterRegistry,
IAM_API,
esbProperties.getService().getUrl(),
HttpHelperFactory.createHttpHelper(
httpClientBuilder -> httpClientBuilder.addInterceptorLast(getLogBkApiRequestIdInterceptor())
)
),
tenantEnvService
);
this.authorization = BkApiAuthorization.appAuthorization(appProperties.getCode(),
appProperties.getSecret(), "admin");
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -37,6 +37,7 @@
import com.tencent.bk.job.common.iam.service.impl.BusinessAuthServiceImpl;
import com.tencent.bk.job.common.iam.service.impl.WebAuthServiceImpl;
import com.tencent.bk.job.common.iam.util.BusinessAuthHelper;
import com.tencent.bk.job.common.tenant.TenantEnvService;
import com.tencent.bk.sdk.iam.config.IamConfiguration;
import com.tencent.bk.sdk.iam.helper.AuthHelper;
import com.tencent.bk.sdk.iam.service.HttpClientService;
Expand Down Expand Up @@ -111,9 +112,10 @@ public AuthService authService(AuthHelper authHelper,
IamConfiguration iamConfiguration,
EsbProperties esbProperties,
MessageI18nService i18nService,
ObjectProvider<MeterRegistry> meterRegistryObjectProvider) {
ObjectProvider<MeterRegistry> meterRegistryObjectProvider,
TenantEnvService tenantEnvService) {
return new AuthServiceImpl(authHelper, iamConfiguration, esbProperties, i18nService,
meterRegistryObjectProvider.getIfAvailable());
meterRegistryObjectProvider.getIfAvailable(), tenantEnvService);
}

@Bean
Expand All @@ -123,15 +125,17 @@ public AppAuthService appAuthService(AuthHelper authHelper,
PolicyService policyService,
JobIamProperties jobIamProperties,
EsbProperties esbProperties,
ObjectProvider<MeterRegistry> meterRegistryObjectProvider) {
ObjectProvider<MeterRegistry> meterRegistryObjectProvider,
TenantEnvService tenantEnvService) {
return new AppAuthServiceImpl(
authHelper,
businessAuthHelper,
iamConfiguration,
policyService,
jobIamProperties,
esbProperties,
meterRegistryObjectProvider.getIfAvailable()
meterRegistryObjectProvider.getIfAvailable(),
tenantEnvService
);
}

Expand Down
Loading