Skip to content

Commit

Permalink
feat: 新增日志熔断后下载全量日志的OpenAPI TencentBlueKing#5145
Browse files Browse the repository at this point in the history
  • Loading branch information
royalhuang committed Sep 15, 2021
1 parent a68a70a commit b50dfb6
Show file tree
Hide file tree
Showing 5 changed files with 166 additions and 0 deletions.
Original file line number Diff line number Diff line change
@@ -0,0 +1,73 @@
/*
* Tencent is pleased to support the open source community by making BK-CI 蓝鲸持续集成平台 available.
*
* Copyright (C) 2019 THL A29 Limited, a Tencent company. All rights reserved.
*
* BK-CI 蓝鲸持续集成平台 is licensed under the MIT license.
*
* A copy of the MIT License is included in this file.
*
*
* Terms of the MIT License:
* ---------------------------------------------------
* Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated
* documentation files (the "Software"), to deal in the Software without restriction, including without limitation the
* rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to
* permit persons to whom the Software is furnished to do so, subject to the following conditions:
*
* The above copyright notice and this permission notice shall be included in all copies or substantial portions of
* the Software.
*
* THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT
* LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN
* NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY,
* WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE
* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
*/

package com.tencent.devops.artifactory.api.user

import com.tencent.devops.artifactory.pojo.Url
import com.tencent.devops.common.api.auth.AUTH_HEADER_USER_ID
import com.tencent.devops.common.api.pojo.Result
import io.swagger.annotations.Api
import io.swagger.annotations.ApiOperation
import io.swagger.annotations.ApiParam
import javax.ws.rs.Consumes
import javax.ws.rs.GET
import javax.ws.rs.HeaderParam
import javax.ws.rs.Path
import javax.ws.rs.PathParam
import javax.ws.rs.Produces
import javax.ws.rs.core.MediaType

@Api(tags = ["USER_ARTIFACTORY"], description = "仓库-文件管理")
@Path("/user/artifactories/log")
@Produces(MediaType.APPLICATION_JSON)
@Consumes(MediaType.APPLICATION_JSON)
interface UserLogFileResource {

@ApiOperation("下载日志")
@GET
@Path("plugin/{projectId}/{pipelineId}/{buildId}/{elementId}/{executeCount}")
fun getPluginLogUrl(
@ApiParam("userId", required = true)
@HeaderParam(AUTH_HEADER_USER_ID)
userId: String,
@ApiParam("项目 ID", required = true)
@PathParam("projectId")
projectId: String,
@ApiParam("流水线 ID", required = true)
@PathParam("pipelineId")
pipelineId: String,
@ApiParam("构建 ID", required = true)
@PathParam("buildId")
buildId: String,
@ApiParam("插件 elementId", required = true)
@PathParam("elementId")
elementId: String,
@ApiParam("执行序号", required = true)
@PathParam("executeCount")
executeCount: String
): Result<Url>
}
Original file line number Diff line number Diff line change
Expand Up @@ -27,13 +27,17 @@

package com.tencent.devops.log.api

import com.tencent.devops.common.api.auth.AUTH_HEADER_USER_ID
import com.tencent.devops.common.api.auth.AUTH_HEADER_USER_ID_DEFAULT_VALUE
import com.tencent.devops.common.api.pojo.Result
import com.tencent.devops.common.log.pojo.QueryLogStatus
import com.tencent.devops.common.log.pojo.QueryLogs
import io.swagger.annotations.Api
import io.swagger.annotations.ApiOperation
import io.swagger.annotations.ApiParam
import javax.ws.rs.Consumes
import javax.ws.rs.GET
import javax.ws.rs.HeaderParam
import javax.ws.rs.Path
import javax.ws.rs.PathParam
import javax.ws.rs.Produces
Expand Down Expand Up @@ -172,4 +176,25 @@ interface ServiceLogResource {
@QueryParam("executeCount")
executeCount: Int?
): Response

@ApiOperation("获取插件的的日志状态")
@GET
@Path("/{projectId}/{pipelineId}/{buildId}/mode")
fun getLogMode(
@ApiParam("项目ID", required = true)
@PathParam("projectId")
projectId: String,
@ApiParam("流水线ID", required = true)
@PathParam("pipelineId")
pipelineId: String,
@ApiParam("构建ID", required = true)
@PathParam("buildId")
buildId: String,
@ApiParam("对应elementId", required = true)
@QueryParam("tag")
tag: String,
@ApiParam("执行次数", required = false)
@QueryParam("executeCount")
executeCount: Int?
): Result<QueryLogStatus>
}
Original file line number Diff line number Diff line change
Expand Up @@ -28,6 +28,7 @@
package com.tencent.devops.log.resources

import com.tencent.devops.common.api.pojo.Result
import com.tencent.devops.common.log.pojo.QueryLogStatus
import com.tencent.devops.common.web.RestResource
import com.tencent.devops.log.api.ServiceLogResource
import com.tencent.devops.common.log.pojo.QueryLogs
Expand Down Expand Up @@ -132,4 +133,20 @@ class ServiceLogResourceImpl @Autowired constructor(
fileName = null
)
}

override fun getLogMode(
projectId: String,
pipelineId: String,
buildId: String,
tag: String,
executeCount: Int?,
): Result<QueryLogStatus> {
return buildLogQueryService.getLogMode(
projectId = projectId,
pipelineId = pipelineId,
buildId = buildId,
tag = tag,
executeCount = executeCount
)
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -30,6 +30,7 @@ package com.tencent.devops.openapi.api.apigw.v3
import com.tencent.devops.common.api.auth.AUTH_HEADER_DEVOPS_APP_CODE
import com.tencent.devops.common.api.auth.AUTH_HEADER_DEVOPS_APP_CODE_DEFAULT_VALUE
import com.tencent.devops.common.api.pojo.Result
import com.tencent.devops.common.log.pojo.QueryLogStatus
import com.tencent.devops.common.log.pojo.QueryLogs
import io.swagger.annotations.Api
import io.swagger.annotations.ApiOperation
Expand Down Expand Up @@ -194,4 +195,31 @@ interface ApigwLogResourceV3 {
@QueryParam("executeCount")
executeCount: Int?
): Response

@ApiOperation("获取插件的的日志状态")
@GET
@Path("/{projectId}/{pipelineId}/{buildId}/mode")
fun getLogMode(
@ApiParam(value = "appCode", required = true, defaultValue = AUTH_HEADER_DEVOPS_APP_CODE_DEFAULT_VALUE)
@HeaderParam(AUTH_HEADER_DEVOPS_APP_CODE)
appCode: String?,
@ApiParam(value = "apigw Type", required = true)
@PathParam("apigwType")
apigwType: String?,
@ApiParam("项目ID", required = true)
@PathParam("projectId")
projectId: String,
@ApiParam("流水线ID", required = true)
@PathParam("pipelineId")
pipelineId: String,
@ApiParam("构建ID", required = true)
@PathParam("buildId")
buildId: String,
@ApiParam("对应elementId", required = true)
@QueryParam("tag")
tag: String,
@ApiParam("执行次数", required = false)
@QueryParam("executeCount")
executeCount: Int?
): Result<QueryLogStatus>
}
Original file line number Diff line number Diff line change
Expand Up @@ -29,6 +29,7 @@ package com.tencent.devops.openapi.resources.apigw.v3

import com.tencent.devops.common.api.pojo.Result
import com.tencent.devops.common.client.Client
import com.tencent.devops.common.log.pojo.QueryLogStatus
import com.tencent.devops.common.web.RestResource
import com.tencent.devops.log.api.ServiceLogResource
import com.tencent.devops.common.log.pojo.QueryLogs
Expand Down Expand Up @@ -154,6 +155,28 @@ class ApigwLogResourceV3Impl @Autowired constructor(
)
}

override fun getLogMode(
appCode: String?,
apigwType: String?,
projectId: String,
pipelineId: String,
buildId: String,
tag: String,
executeCount: Int?,
): Result<QueryLogStatus> {
logger.info(
"downloadLogs project[$projectId] pipelineId[$pipelineId] buildId[$buildId]" +
"executeCount[$executeCount] tag[$tag]"
)
return client.get(ServiceLogResource::class).getLogMode(
projectId = projectId,
pipelineId = pipelineId,
buildId = buildId,
tag = tag,
executeCount = executeCount
)
}

companion object {
private val logger = LoggerFactory.getLogger(ApigwLogResourceV3Impl::class.java)
}
Expand Down

0 comments on commit b50dfb6

Please sign in to comment.