Skip to content

Commit

Permalink
Merge pull request #10294 from fcfang123/issue-10232
Browse files Browse the repository at this point in the history
feat:获取job执行最大并发/项目活跃用户度量数据 #10232
  • Loading branch information
bkci-bot authored May 23, 2024
2 parents fb44986 + b2bc646 commit dbb9e67
Show file tree
Hide file tree
Showing 34 changed files with 383 additions and 100 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -31,7 +31,7 @@ package com.tencent.devops.auth.api.migrate
import com.tencent.devops.auth.pojo.dto.MigrateResourceDTO
import com.tencent.devops.auth.pojo.dto.PermissionHandoverDTO
import com.tencent.devops.common.api.pojo.Result
import com.tencent.devops.common.auth.api.pojo.MigrateProjectConditionDTO
import com.tencent.devops.common.auth.api.pojo.ProjectConditionDTO
import io.swagger.v3.oas.annotations.Operation
import io.swagger.v3.oas.annotations.Parameter
import io.swagger.v3.oas.annotations.tags.Tag
Expand Down Expand Up @@ -73,7 +73,7 @@ interface OpAuthMigrateResource {
@Operation(summary = "按条件升级到rbac权限")
fun toRbacAuthByCondition(
@Parameter(description = "按条件迁移项目实体", required = true)
migrateProjectConditionDTO: MigrateProjectConditionDTO
projectConditionDTO: ProjectConditionDTO
): Result<Boolean>

@POST
Expand Down Expand Up @@ -138,6 +138,6 @@ interface OpAuthMigrateResource {
@Operation(summary = "自动续期")
fun autoRenewal(
@Parameter(description = "按条件迁移项目实体", required = true)
migrateProjectConditionDTO: MigrateProjectConditionDTO
projectConditionDTO: ProjectConditionDTO
): Result<Boolean>
}
Original file line number Diff line number Diff line change
Expand Up @@ -134,24 +134,25 @@ class RbacPermissionApplyService @Autowired constructor(
)
logger.info("RbacPermissionApplyService|listGroups: bkIamPath=$bkIamPath")
val managerRoleGroupVO: V2ManagerRoleGroupVO
val groupInfoList: List<ManagerRoleGroupInfo>
try {
managerRoleGroupVO = getGradeManagerRoleGroup(
searchGroupInfo = searchGroupInfo,
bkIamPath = bkIamPath,
relationId = projectInfo.relationId
)
logger.info("RbacPermissionApplyService|listGroups: managerRoleGroupVO=$managerRoleGroupVO")
groupInfoList = buildGroupInfoList(
userId = userId,
projectId = projectId,
projectName = projectInfo.resourceName,
managerRoleGroupInfoList = managerRoleGroupVO.results
)
} catch (e: Exception) {
throw ErrorCodeException(
errorCode = AuthMessageCode.GET_IAM_GROUP_FAIL
)
}
val groupInfoList = buildGroupInfoList(
userId = userId,
projectId = projectId,
projectName = projectInfo.resourceName,
managerRoleGroupInfoList = managerRoleGroupVO.results
)
return ManagerRoleGroupVO(
count = managerRoleGroupVO.count,
results = groupInfoList
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -46,7 +46,7 @@ import com.tencent.devops.common.api.exception.ErrorCodeException
import com.tencent.devops.common.api.util.PageUtil
import com.tencent.devops.common.api.util.Watcher
import com.tencent.devops.common.auth.api.AuthResourceType
import com.tencent.devops.common.auth.api.pojo.MigrateProjectConditionDTO
import com.tencent.devops.common.auth.api.pojo.ProjectConditionDTO
import com.tencent.devops.common.auth.api.pojo.SubjectScopeInfo
import com.tencent.devops.common.auth.enums.AuthSystemType
import com.tencent.devops.common.client.Client
Expand Down Expand Up @@ -149,22 +149,22 @@ class RbacPermissionMigrateService constructor(

override fun allToRbacAuth(): Boolean {
logger.info("start to migrate all project")
toRbacAuthByCondition(MigrateProjectConditionDTO())
toRbacAuthByCondition(ProjectConditionDTO())
return true
}

override fun toRbacAuthByCondition(
migrateProjectConditionDTO: MigrateProjectConditionDTO
projectConditionDTO: ProjectConditionDTO
): Boolean {
logger.info("start to migrate project by condition|$migrateProjectConditionDTO")
logger.info("start to migrate project by condition|$projectConditionDTO")
val traceId = MDC.get(TraceTag.BIZID)
toRbacExecutorService.submit {
MDC.put(TraceTag.BIZID, traceId)
var offset = 0
val limit = PageUtil.MAX_PAGE_SIZE / 2
do {
val migrateProjects = client.get(ServiceProjectResource::class).listMigrateProjects(
migrateProjectConditionDTO = migrateProjectConditionDTO,
val migrateProjects = client.get(ServiceProjectResource::class).listProjectsByCondition(
projectConditionDTO = projectConditionDTO,
limit = limit,
offset = offset
).data ?: break
Expand Down Expand Up @@ -270,9 +270,10 @@ class RbacPermissionMigrateService constructor(
val limit = PageUtil.MAX_PAGE_SIZE
var count = 0
do {
val migrateProjects = client.get(ServiceProjectResource::class).listMigrateProjects(
migrateProjectConditionDTO = MigrateProjectConditionDTO(
routerTag = AuthSystemType.RBAC_AUTH_TYPE
val migrateProjects = client.get(ServiceProjectResource::class).listProjectsByCondition(
projectConditionDTO = ProjectConditionDTO(
routerTag = AuthSystemType.RBAC_AUTH_TYPE,
enabled = true
),
limit = limit,
offset = offset
Expand Down Expand Up @@ -604,15 +605,17 @@ class RbacPermissionMigrateService constructor(
)
}

override fun autoRenewal(migrateProjectConditionDTO: MigrateProjectConditionDTO): Boolean {
override fun autoRenewal(projectConditionDTO: ProjectConditionDTO): Boolean {
val traceId = MDC.get(TraceTag.BIZID)
toRbacExecutorService.submit {
MDC.put(TraceTag.BIZID, traceId)
var offset = 0
val limit = PageUtil.MAX_PAGE_SIZE / 2
do {
val migrateProjects = client.get(ServiceProjectResource::class).listMigrateProjects(
migrateProjectConditionDTO = migrateProjectConditionDTO,
val migrateProjects = client.get(ServiceProjectResource::class).listProjectsByCondition(
projectConditionDTO = projectConditionDTO.copy(
enabled = true
),
limit = limit,
offset = offset
).data ?: break
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -30,7 +30,7 @@ package com.tencent.devops.auth.provider.sample.service

import com.tencent.devops.auth.pojo.dto.MigrateResourceDTO
import com.tencent.devops.auth.service.iam.PermissionMigrateService
import com.tencent.devops.common.auth.api.pojo.MigrateProjectConditionDTO
import com.tencent.devops.common.auth.api.pojo.ProjectConditionDTO
import com.tencent.devops.auth.pojo.dto.PermissionHandoverDTO

class SamplePermissionMigrateService : PermissionMigrateService {
Expand All @@ -46,7 +46,7 @@ class SamplePermissionMigrateService : PermissionMigrateService {
return true
}

override fun toRbacAuthByCondition(migrateProjectConditionDTO: MigrateProjectConditionDTO): Boolean {
override fun toRbacAuthByCondition(projectConditionDTO: ProjectConditionDTO): Boolean {
return true
}

Expand Down Expand Up @@ -82,7 +82,7 @@ class SamplePermissionMigrateService : PermissionMigrateService {
return true
}

override fun autoRenewal(migrateProjectConditionDTO: MigrateProjectConditionDTO): Boolean {
override fun autoRenewal(projectConditionDTO: ProjectConditionDTO): Boolean {
return true
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -33,7 +33,7 @@ import com.tencent.devops.auth.pojo.dto.MigrateResourceDTO
import com.tencent.devops.auth.pojo.dto.PermissionHandoverDTO
import com.tencent.devops.auth.service.iam.PermissionMigrateService
import com.tencent.devops.common.api.pojo.Result
import com.tencent.devops.common.auth.api.pojo.MigrateProjectConditionDTO
import com.tencent.devops.common.auth.api.pojo.ProjectConditionDTO
import com.tencent.devops.common.web.RestResource
import org.springframework.beans.factory.annotation.Autowired

Expand All @@ -54,10 +54,10 @@ class OpAuthMigrateResourceImpl @Autowired constructor(
return Result(permissionMigrateService.allToRbacAuth())
}

override fun toRbacAuthByCondition(migrateProjectConditionDTO: MigrateProjectConditionDTO): Result<Boolean> {
override fun toRbacAuthByCondition(projectConditionDTO: ProjectConditionDTO): Result<Boolean> {
return Result(
permissionMigrateService.toRbacAuthByCondition(
migrateProjectConditionDTO = migrateProjectConditionDTO
projectConditionDTO = projectConditionDTO
)
)
}
Expand Down Expand Up @@ -94,8 +94,8 @@ class OpAuthMigrateResourceImpl @Autowired constructor(
return Result(permissionMigrateService.migrateMonitorResource(projectCodes = projectCodes))
}

override fun autoRenewal(migrateProjectConditionDTO: MigrateProjectConditionDTO): Result<Boolean> {
permissionMigrateService.autoRenewal(migrateProjectConditionDTO)
override fun autoRenewal(projectConditionDTO: ProjectConditionDTO): Result<Boolean> {
permissionMigrateService.autoRenewal(projectConditionDTO)
return Result(true)
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -30,7 +30,7 @@ package com.tencent.devops.auth.service.iam

import com.tencent.devops.auth.pojo.dto.MigrateResourceDTO
import com.tencent.devops.auth.pojo.dto.PermissionHandoverDTO
import com.tencent.devops.common.auth.api.pojo.MigrateProjectConditionDTO
import com.tencent.devops.common.auth.api.pojo.ProjectConditionDTO

/**
* 权限中心迁移服务
Expand All @@ -55,7 +55,7 @@ interface PermissionMigrateService {
/**
* 按条件升级到rbac权限
*/
fun toRbacAuthByCondition(migrateProjectConditionDTO: MigrateProjectConditionDTO): Boolean
fun toRbacAuthByCondition(projectConditionDTO: ProjectConditionDTO): Boolean

/**
* 对比迁移鉴权结果
Expand Down Expand Up @@ -97,6 +97,6 @@ interface PermissionMigrateService {
): Boolean

fun autoRenewal(
migrateProjectConditionDTO: MigrateProjectConditionDTO
projectConditionDTO: ProjectConditionDTO
): Boolean
}
Original file line number Diff line number Diff line change
Expand Up @@ -3,8 +3,8 @@ package com.tencent.devops.common.auth.api.pojo
import com.tencent.devops.common.auth.enums.AuthSystemType
import io.swagger.v3.oas.annotations.media.Schema

@Schema(title = "条件迁移项目实体")
data class MigrateProjectConditionDTO(
@Schema(title = "筛选项目条件实体")
data class ProjectConditionDTO(
@get:Schema(title = "中心ID")
val centerId: Long? = null,
@get:Schema(title = "部门ID")
Expand All @@ -27,6 +27,8 @@ data class MigrateProjectConditionDTO(
val relatedProduct: Boolean? = null,
@get:Schema(title = "排除创建时间大于该值的项目")
val excludedCreateTime: String? = null,
@get:Schema(title = "是否启用")
val enabled: Boolean? = null,
@get:Schema(title = "渠道代码")
val channelCode: String? = null
)
Original file line number Diff line number Diff line change
Expand Up @@ -33,12 +33,14 @@ import com.tencent.devops.common.api.pojo.Result
import com.tencent.devops.common.web.annotation.BkField
import com.tencent.devops.metrics.pojo.`do`.ComplianceInfoDO
import com.tencent.devops.metrics.pojo.vo.BaseQueryReqVO
import com.tencent.devops.metrics.pojo.vo.MaxJobConcurrencyVO
import com.tencent.devops.metrics.pojo.vo.PipelineSumInfoVO
import com.tencent.devops.metrics.pojo.vo.ProjectUserCountV0
import com.tencent.devops.metrics.pojo.vo.QueryIntervalVO
import com.tencent.devops.metrics.pojo.vo.ThirdPlatformOverviewInfoVO
import io.swagger.v3.oas.annotations.tags.Tag
import io.swagger.v3.oas.annotations.Operation
import io.swagger.v3.oas.annotations.Parameter
import io.swagger.v3.oas.annotations.tags.Tag
import javax.ws.rs.Consumes
import javax.ws.rs.GET
import javax.ws.rs.HeaderParam
Expand Down Expand Up @@ -104,4 +106,20 @@ interface ServiceMetricsResource {
@Parameter(description = "查询区间视图", required = true)
queryIntervalVO: QueryIntervalVO
): Result<ComplianceInfoDO?>

@Operation(summary = "查询项目活跃用户数")
@Path("/get_project_active_user_count")
@POST
fun getProjectActiveUserCount(
@Parameter(description = "查询条件", required = false)
baseQueryReq: BaseQueryReqVO
): Result<ProjectUserCountV0?>

@Operation(summary = "获取job最大并发")
@Path("/get_max_job_concurrency")
@POST
fun getMaxJobConcurrency(
@Parameter(description = "查询条件", required = false)
dispatchJobReq: BaseQueryReqVO
): Result<MaxJobConcurrencyVO?>
}
Original file line number Diff line number Diff line change
Expand Up @@ -32,6 +32,8 @@ import io.swagger.v3.oas.annotations.Parameter

@Schema(title = "插件错误查询请求报文")
data class AtomFailInfoReqVO(
@Parameter(description = "项目ID", required = false)
override var projectId: String? = null,
@Parameter(description = "流水线ID", required = false)
override var pipelineIds: List<String>? = null,
@Parameter(description = "流水线标签", required = false)
Expand All @@ -46,4 +48,4 @@ data class AtomFailInfoReqVO(
val errorCodes: List<Int>?,
@Parameter(description = "插件code", required = false)
val atomCodes: List<String>?
) : BaseQueryReqVO(pipelineIds, pipelineLabelIds, startTime, endTime)
) : BaseQueryReqVO(projectId, pipelineIds, pipelineLabelIds, startTime, endTime)
Original file line number Diff line number Diff line change
Expand Up @@ -32,6 +32,7 @@ import io.swagger.v3.oas.annotations.Parameter

@Schema(title = "插件统计信息查询请求报文")
data class AtomStatisticsInfoReqVO(
override var projectId: String? = null,
@Parameter(description = "流水线ID", required = false)
override var pipelineIds: List<String>? = null,
@Parameter(description = "流水线标签", required = false)
Expand All @@ -44,4 +45,4 @@ data class AtomStatisticsInfoReqVO(
val errorTypes: List<Int>? = null,
@Parameter(description = "插件代码", required = false)
val atomCodes: List<String>? = null
) : BaseQueryReqVO(pipelineIds, pipelineLabelIds, startTime, endTime)
) : BaseQueryReqVO(projectId, pipelineIds, pipelineLabelIds, startTime, endTime)
Original file line number Diff line number Diff line change
Expand Up @@ -4,6 +4,8 @@ import io.swagger.v3.oas.annotations.media.Schema

@Schema(title = "基本查询条件请求报文")
open class BaseQueryReqVO(
@get:Schema(title = "项目ID", required = false)
open var projectId: String? = null,
@get:Schema(title = "流水线ID", required = false)
open var pipelineIds: List<String>? = null,
@get:Schema(title = "流水线标签", required = false)
Expand Down
Original file line number Diff line number Diff line change
@@ -0,0 +1,21 @@
package com.tencent.devops.metrics.pojo.vo

import io.swagger.v3.oas.annotations.media.Schema

@Schema(title = "JOB执行最大并发")
data class MaxJobConcurrencyVO(
@get:Schema(title = "项目ID")
val projectId: String,
@get:Schema(title = "VM最大并发")
val dockerVm: Int,
@get:Schema(title = "DevCloud-Linux最大并发")
val dockerDevcloud: Int,
@get:Schema(title = "DevCloud-macOS最大并发")
val macosDevcloud: Int,
@get:Schema(title = "DevCloud-Windows最大并发")
val windowsDevcloud: Int,
@get:Schema(title = "无编译环境最大并发")
val buildLess: Int,
@get:Schema(title = "第三方构建机最大并发")
val other: Int
)
Original file line number Diff line number Diff line change
Expand Up @@ -32,6 +32,8 @@ import io.swagger.v3.oas.annotations.Parameter

@Schema(title = "流水线失败信息查询请求报文")
data class PipelineFailInfoQueryReqVO(
@Parameter(description = "项目ID", required = false)
override var projectId: String? = null,
@Parameter(description = "流水线ID", required = false)
override var pipelineIds: List<String>? = null,
@Parameter(description = "流水线标签", required = false)
Expand All @@ -44,4 +46,4 @@ data class PipelineFailInfoQueryReqVO(
val errorTypes: List<Int>? = null,
@Parameter(description = "插件代码", required = false)
val atomCodes: List<String>? = null
) : BaseQueryReqVO(pipelineIds, pipelineLabelIds, startTime, endTime)
) : BaseQueryReqVO(projectId, pipelineIds, pipelineLabelIds, startTime, endTime)
Original file line number Diff line number Diff line change
@@ -0,0 +1,13 @@
package com.tencent.devops.metrics.pojo.vo

import io.swagger.v3.oas.annotations.media.Schema

@Schema(title = "项目活跃用户数")
data class ProjectUserCountV0(
@get:Schema(title = "项目ID")
val projectId: String,
@get:Schema(title = "用户数")
val userCount: Int,
@get:Schema(title = "用户名单")
val users: String
)
Loading

0 comments on commit dbb9e67

Please sign in to comment.