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

bug: 代理配置返回调整 #2922 #2925

Open
wants to merge 1 commit into
base: master
Choose a base branch
from
Open
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 @@ -49,7 +49,12 @@ interface RRepositoryService {
* @param name 仓库名称
* @param type 仓库类型
*/
suspend fun getRepoInfo(projectId: String, name: String, type: String? = null): RepositoryInfo?
suspend fun getRepoInfo(
projectId: String,
name: String,
type: String? = null,
returnDecrypt: Boolean = false,
): RepositoryInfo?

/**
* 查询仓库详情,不存在返回null
Expand All @@ -58,7 +63,12 @@ interface RRepositoryService {
* @param name 仓库名称
* @param type 仓库类型
*/
suspend fun getRepoDetail(projectId: String, name: String, type: String? = null): RepositoryDetail?
suspend fun getRepoDetail(
projectId: String,
name: String,
type: String? = null,
returnDecrypt: Boolean = false,
): RepositoryDetail?

/**
* 查询项目[projectId]下的所有仓库
Expand All @@ -68,6 +78,7 @@ interface RRepositoryService {
name: String? = null,
type: String? = null,
display: Boolean? = null,
returnDecrypt: Boolean = false,
): List<RepositoryInfo>

/**
Expand All @@ -85,6 +96,7 @@ interface RRepositoryService {
pageSize: Int,
name: String? = null,
type: String? = null,
returnDecrypt: Boolean = false,
): Page<RepositoryInfo>

/**
Expand All @@ -98,6 +110,7 @@ interface RRepositoryService {
userId: String,
projectId: String,
option: RepoListOption,
returnDecrypt: Boolean = false,
): List<RepositoryInfo>

/**
Expand All @@ -112,6 +125,7 @@ interface RRepositoryService {
pageNumber: Int,
pageSize: Int,
option: RepoListOption,
returnDecrypt: Boolean = false,
): Page<RepositoryInfo>

/**
Expand Down Expand Up @@ -142,7 +156,7 @@ interface RRepositoryService {
/**
* 根据请求[repoCreateRequest]创建仓库
*/
suspend fun createRepo(repoCreateRequest: RepoCreateRequest): RepositoryDetail
suspend fun createRepo(repoCreateRequest: RepoCreateRequest, returnDecrypt: Boolean = false): RepositoryDetail

/**
* 根据请求[repoUpdateRequest]更新仓库
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -49,7 +49,12 @@ interface RepositoryService {
* @param name 仓库名称
* @param type 仓库类型
*/
fun getRepoInfo(projectId: String, name: String, type: String? = null): RepositoryInfo?
fun getRepoInfo(
projectId: String,
name: String,
type: String? = null,
returnDecrypt: Boolean = false,
): RepositoryInfo?

/**
* 查询仓库详情,不存在返回null
Expand All @@ -58,7 +63,12 @@ interface RepositoryService {
* @param name 仓库名称
* @param type 仓库类型
*/
fun getRepoDetail(projectId: String, name: String, type: String? = null): RepositoryDetail?
fun getRepoDetail(
projectId: String,
name: String,
type: String? = null,
returnDecrypt: Boolean = false,
): RepositoryDetail?

/**
* 查询项目[projectId]下的所有仓库
Expand All @@ -68,6 +78,7 @@ interface RepositoryService {
name: String? = null,
type: String? = null,
display: Boolean? = null,
returnDecrypt: Boolean = false,
): List<RepositoryInfo>

/**
Expand Down Expand Up @@ -98,6 +109,7 @@ interface RepositoryService {
userId: String,
projectId: String,
option: RepoListOption,
returnDecrypt: Boolean = false,
): List<RepositoryInfo>

/**
Expand All @@ -112,6 +124,7 @@ interface RepositoryService {
pageNumber: Int,
pageSize: Int,
option: RepoListOption,
returnDecrypt: Boolean = false,
): Page<RepositoryInfo>

/**
Expand Down Expand Up @@ -142,7 +155,7 @@ interface RepositoryService {
/**
* 根据请求[repoCreateRequest]创建仓库
*/
fun createRepo(repoCreateRequest: RepoCreateRequest): RepositoryDetail
fun createRepo(repoCreateRequest: RepoCreateRequest, returnDecrypt: Boolean = false): RepositoryDetail

/**
* 根据请求[repoUpdateRequest]更新仓库
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -107,7 +107,7 @@ class CenterRepositoryServiceImpl(
return exitRepo != null && ClusterUtils.containsSrcCluster(exitRepo.clusterNames)
}

override fun createRepo(repoCreateRequest: RepoCreateRequest): RepositoryDetail {
override fun createRepo(repoCreateRequest: RepoCreateRequest, returnDecrypt: Boolean): RepositoryDetail {
with(repoCreateRequest) {
val exitRepo = repositoryDao.findByNameAndType(projectId, name, type.name)
if (exitRepo != null && ClusterUtils.containsSrcCluster(exitRepo.clusterNames)) {
Expand All @@ -118,7 +118,7 @@ class CenterRepositoryServiceImpl(
}

if (exitRepo == null) {
return super.createRepo(repoCreateRequest)
return super.createRepo(repoCreateRequest, returnDecrypt)
}

val query = RepositoryServiceHelper.buildSingleQuery(projectId, name, type.name)
Expand All @@ -130,7 +130,7 @@ class CenterRepositoryServiceImpl(
val update = Update().addToSet(TRepository::clusterNames.name).each(clusterNames)
exitRepo.clusterNames = clusterNames
repositoryDao.updateFirst(query, update)
return convertToDetail(exitRepo)!!
return convertToDetail(exitRepo, returnDecrypt = returnDecrypt)!!
}
}

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -79,9 +79,9 @@ class EdgeRepositoryServiceImpl(
)
}

override fun createRepo(repoCreateRequest: RepoCreateRequest): RepositoryDetail {
override fun createRepo(repoCreateRequest: RepoCreateRequest, returnDecrypt: Boolean): RepositoryDetail {
if (!reportMetadataToCenter(repoCreateRequest.projectId, repoCreateRequest.name)) {
return super.createRepo(repoCreateRequest)
return super.createRepo(repoCreateRequest, returnDecrypt)
}
try {
centerRepoClient.createRepo(repoCreateRequest)
Expand All @@ -90,7 +90,7 @@ class EdgeRepositoryServiceImpl(
throw e
}
}
return super.createRepo(repoCreateRequest)
return super.createRepo(repoCreateRequest, returnDecrypt)
}

override fun deleteRepo(repoDeleteRequest: RepoDeleteRequest) {
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -121,15 +121,25 @@ class RRepositoryServiceImpl(
private val resourcePermissionListener: RResourcePermissionListener
) : RRepositoryService {

override suspend fun getRepoInfo(projectId: String, name: String, type: String?): RepositoryInfo? {
override suspend fun getRepoInfo(
projectId: String,
name: String,
type: String?,
returnDecrypt: Boolean
): RepositoryInfo? {
val tRepository = repositoryDao.findByNameAndType(projectId, name, type)
return convertToInfo(tRepository)
return convertToInfo(tRepository, returnDecrypt)
}

override suspend fun getRepoDetail(projectId: String, name: String, type: String?): RepositoryDetail? {
override suspend fun getRepoDetail(
projectId: String,
name: String,
type: String?,
returnDecrypt: Boolean
): RepositoryDetail? {
val tRepository = repositoryDao.findByNameAndType(projectId, name, type)
val storageCredentials = tRepository?.credentialsKey?.let { storageCredentialService.findByKey(it) }
return convertToDetail(tRepository, storageCredentials)
return convertToDetail(tRepository, storageCredentials, returnDecrypt)
}

override suspend fun updateStorageCredentialsKey(
Expand All @@ -153,10 +163,11 @@ class RRepositoryServiceImpl(
projectId: String,
name: String?,
type: String?,
display: Boolean?
display: Boolean?,
returnDecrypt: Boolean,
): List<RepositoryInfo> {
val query = buildListQuery(projectId, name, type, display)
return repositoryDao.find(query).map { convertToInfo(it)!! }
return repositoryDao.find(query).map { convertToInfo(it, returnDecrypt)!! }
}

override suspend fun listRepoPage(
Expand All @@ -165,18 +176,20 @@ class RRepositoryServiceImpl(
pageSize: Int,
name: String?,
type: String?,
returnDecrypt: Boolean,
): Page<RepositoryInfo> {
val query = buildListQuery(projectId, name, type)
val pageRequest = Pages.ofRequest(pageNumber, pageSize)
val totalRecords = repositoryDao.count(query)
val records = repositoryDao.find(query.with(pageRequest)).map { convertToInfo(it)!! }
val records = repositoryDao.find(query.with(pageRequest)).map { convertToInfo(it, returnDecrypt)!! }
return Pages.ofResponse(pageRequest, totalRecords, records)
}

override suspend fun listPermissionRepo(
userId: String,
projectId: String,
option: RepoListOption,
returnDecrypt: Boolean,
): List<RepositoryInfo> {
var names = rAuthClient.listPermissionRepo(
projectId = projectId,
Expand All @@ -187,14 +200,14 @@ class RRepositoryServiceImpl(
names = names.filter { it.startsWith(option.name.orEmpty(), true) }
}
val query = buildListPermissionRepoQuery(projectId, names, option)
val originResults = repositoryDao.find(query).map { convertToInfo(it)!! }
val originResults = repositoryDao.find(query).map { convertToInfo(it, returnDecrypt)!! }
val originNames = originResults.map { it.name }.toSet()
var includeResults = emptyList<RepositoryInfo>()
if (names.isNotEmpty() && option.include != null) {
val inValues = names.intersect(setOf(option.include!!)).minus(originNames)
val includeCriteria = where(TRepository::projectId).isEqualTo(projectId)
.and(TRepository::name).inValues(inValues)
includeResults = repositoryDao.find(Query(includeCriteria)).map { convertToInfo(it)!! }
includeResults = repositoryDao.find(Query(includeCriteria)).map { convertToInfo(it, returnDecrypt)!! }
}
return originResults + includeResults
}
Expand All @@ -205,8 +218,9 @@ class RRepositoryServiceImpl(
pageNumber: Int,
pageSize: Int,
option: RepoListOption,
returnDecrypt: Boolean,
): Page<RepositoryInfo> {
val allRepos = listPermissionRepo(userId, projectId, option)
val allRepos = listPermissionRepo(userId, projectId, option, returnDecrypt)
return Pages.buildPage(allRepos, pageNumber, pageSize)
}

Expand All @@ -225,7 +239,7 @@ class RRepositoryServiceImpl(
}

@Transactional(rollbackFor = [Throwable::class])
override suspend fun createRepo(repoCreateRequest: RepoCreateRequest): RepositoryDetail {
override suspend fun createRepo(repoCreateRequest: RepoCreateRequest, returnDecrypt: Boolean): RepositoryDetail {
with(repoCreateRequest) {
Preconditions.matchPattern(name, REPO_NAME_PATTERN, this::name.name)
Preconditions.checkArgument((description?.length ?: 0) <= REPO_DESC_MAX_LENGTH, this::description.name)
Expand Down Expand Up @@ -267,10 +281,10 @@ class RRepositoryServiceImpl(
key = event.getFullResourceKey(),
)
logger.info("Create repository [$repoCreateRequest] success.")
convertToDetail(repository)!!
convertToDetail(repository, returnDecrypt = returnDecrypt)!!
} catch (exception: DuplicateKeyException) {
logger.warn("Insert repository[$projectId/$name] error: [${exception.message}]")
getRepoDetail(projectId, name, type.name)!!
getRepoDetail(projectId, name, type.name, returnDecrypt)!!
}
}
}
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -120,15 +120,20 @@ class RepositoryServiceImpl(
private val resourceClearService: ObjectProvider<ResourceClearService>
) : RepositoryService {

override fun getRepoInfo(projectId: String, name: String, type: String?): RepositoryInfo? {
override fun getRepoInfo(projectId: String, name: String, type: String?, returnDecrypt: Boolean): RepositoryInfo? {
val tRepository = repositoryDao.findByNameAndType(projectId, name, type)
return convertToInfo(tRepository)
return convertToInfo(tRepository, returnDecrypt)
}

override fun getRepoDetail(projectId: String, name: String, type: String?): RepositoryDetail? {
override fun getRepoDetail(
projectId: String,
name: String,
type: String?,
returnDecrypt: Boolean
): RepositoryDetail? {
val tRepository = repositoryDao.findByNameAndType(projectId, name, type)
val storageCredentials = tRepository?.credentialsKey?.let { storageCredentialService.findByKey(it) }
return convertToDetail(tRepository, storageCredentials)
return convertToDetail(tRepository, storageCredentials, returnDecrypt)
}

override fun updateStorageCredentialsKey(projectId: String, repoName: String, storageCredentialsKey: String?) {
Expand All @@ -144,9 +149,15 @@ class RepositoryServiceImpl(
repositoryDao.unsetOldCredentialsKey(projectId, repoName)
}

override fun listRepo(projectId: String, name: String?, type: String?, display: Boolean?): List<RepositoryInfo> {
override fun listRepo(
projectId: String,
name: String?,
type: String?,
display: Boolean?,
returnDecrypt: Boolean
): List<RepositoryInfo> {
val query = buildListQuery(projectId, name, type, display)
return repositoryDao.find(query).map { convertToInfo(it)!! }
return repositoryDao.find(query).map { convertToInfo(it, returnDecrypt)!! }
}

override fun listRepoPage(
Expand All @@ -167,6 +178,7 @@ class RepositoryServiceImpl(
userId: String,
projectId: String,
option: RepoListOption,
returnDecrypt: Boolean,
): List<RepositoryInfo> {
var names = servicePermissionClient.listPermissionRepo(
projectId = projectId,
Expand All @@ -177,14 +189,14 @@ class RepositoryServiceImpl(
names = names.filter { it.startsWith(option.name.orEmpty(), true) }
}
val query = buildListPermissionRepoQuery(projectId, names, option)
val originResults = repositoryDao.find(query).map { convertToInfo(it)!! }
val originResults = repositoryDao.find(query).map { convertToInfo(it, returnDecrypt)!! }
val originNames = originResults.map { it.name }.toSet()
var includeResults = emptyList<RepositoryInfo>()
if (names.isNotEmpty() && option.include != null) {
val inValues = names.intersect(setOf(option.include!!)).minus(originNames)
val includeCriteria = where(TRepository::projectId).isEqualTo(projectId)
.and(TRepository::name).inValues(inValues)
includeResults = repositoryDao.find(Query(includeCriteria)).map { convertToInfo(it)!! }
includeResults = repositoryDao.find(Query(includeCriteria)).map { convertToInfo(it, returnDecrypt)!! }
}
return originResults + includeResults
}
Expand All @@ -195,8 +207,9 @@ class RepositoryServiceImpl(
pageNumber: Int,
pageSize: Int,
option: RepoListOption,
returnDecrypt: Boolean,
): Page<RepositoryInfo> {
val allRepos = listPermissionRepo(userId, projectId, option)
val allRepos = listPermissionRepo(userId, projectId, option, returnDecrypt)
return Pages.buildPage(allRepos, pageNumber, pageSize)
}

Expand All @@ -215,7 +228,7 @@ class RepositoryServiceImpl(
}

@Transactional(rollbackFor = [Throwable::class])
override fun createRepo(repoCreateRequest: RepoCreateRequest): RepositoryDetail {
override fun createRepo(repoCreateRequest: RepoCreateRequest, returnDecrypt: Boolean): RepositoryDetail {
with(repoCreateRequest) {
Preconditions.matchPattern(name, REPO_NAME_PATTERN, this::name.name)
Preconditions.checkArgument((description?.length ?: 0) <= REPO_DESC_MAX_LENGTH, this::description.name)
Expand Down Expand Up @@ -257,10 +270,10 @@ class RepositoryServiceImpl(
key = event.getFullResourceKey(),
)
logger.info("Create repository [$repoCreateRequest] success.")
convertToDetail(repository)!!
convertToDetail(repository, returnDecrypt = returnDecrypt)!!
} catch (exception: DuplicateKeyException) {
logger.warn("Insert repository[$projectId/$name] error: [${exception.message}]")
getRepoDetail(projectId, name, type.name)!!
getRepoDetail(projectId, name, type.name, returnDecrypt)!!
}
}
}
Expand Down
Loading
Loading