diff --git a/apollo-portal/src/main/java/com/ctrip/framework/apollo/openapi/v1/controller/ReleaseController.java b/apollo-portal/src/main/java/com/ctrip/framework/apollo/openapi/v1/controller/ReleaseController.java index 37c2b2a3f59..b12895bb5af 100644 --- a/apollo-portal/src/main/java/com/ctrip/framework/apollo/openapi/v1/controller/ReleaseController.java +++ b/apollo-portal/src/main/java/com/ctrip/framework/apollo/openapi/v1/controller/ReleaseController.java @@ -110,99 +110,91 @@ public OpenReleaseDTO loadLatestActiveRelease(@PathVariable String appId, @PathV return this.releaseOpenApiService.getLatestActiveRelease(appId, env, clusterName, namespaceName); } - @PreAuthorize(value = "@consumerPermissionValidator.hasReleaseNamespacePermission(#request, #appId, #namespaceName, #env)") - @PostMapping(value = "/apps/{appId}/clusters/{clusterName}/namespaces/{namespaceName}/branches/{branchName}/merge") - public OpenReleaseDTO merge(@PathVariable String appId, @PathVariable String env, - @PathVariable String clusterName, @PathVariable String namespaceName, - @PathVariable String branchName, @RequestParam(value = "deleteBranch", defaultValue = "true") boolean deleteBranch, - @RequestBody NamespaceReleaseDTO model, HttpServletRequest request) { - RequestPrecondition.checkArguments(!StringUtils.isContainEmpty(model.getReleasedBy(), model - .getReleaseTitle()), - "Params(releaseTitle and releasedBy) can not be empty"); - - if (userService.findByUserId(model.getReleasedBy()) == null) { - throw BadRequestException.userNotExists(model.getReleasedBy()); - } - - ReleaseDTO mergedRelease = namespaceBranchService.merge(appId, Env.valueOf(env.toUpperCase()), clusterName, namespaceName, branchName, - model.getReleaseTitle(), model.getReleaseComment(), - model.isEmergencyPublish(), deleteBranch, model.getReleasedBy()); - - - ConfigPublishEvent event = ConfigPublishEvent.instance(); - event.withAppId(appId) - .withCluster(clusterName) - .withNamespace(namespaceName) - .withReleaseId(mergedRelease.getId()) - .setMergeEvent(true) - .setEnv(Env.valueOf(env)); - publisher.publishEvent(event); - - return OpenApiBeanUtils.transformFromReleaseDTO(mergedRelease); + @PreAuthorize(value = "@consumerPermissionValidator.hasReleaseNamespacePermission(#request, #appId, #namespaceName, #env)") + @PostMapping(value = "/apps/{appId}/clusters/{clusterName}/namespaces/{namespaceName}/branches/{branchName}/merge") + public OpenReleaseDTO merge(@PathVariable String appId, @PathVariable String env, + @PathVariable String clusterName, @PathVariable String namespaceName, + @PathVariable String branchName, + @RequestParam(value = "deleteBranch", defaultValue = "true") boolean deleteBranch, + @RequestBody NamespaceReleaseDTO model, HttpServletRequest request) { + RequestPrecondition.checkArguments( + !StringUtils.isContainEmpty(model.getReleasedBy(), model.getReleaseTitle()), + "Params(releaseTitle and releasedBy) can not be empty"); + + if (userService.findByUserId(model.getReleasedBy()) == null) { + throw BadRequestException.userNotExists(model.getReleasedBy()); } - @PreAuthorize(value = "@consumerPermissionValidator.hasReleaseNamespacePermission(#request, #appId, #namespaceName, #env)") - @PostMapping(value = "/apps/{appId}/clusters/{clusterName}/namespaces/{namespaceName}/branches/{branchName}/releases") - public OpenReleaseDTO createGrayRelease(@PathVariable String appId, - @PathVariable String env, @PathVariable String clusterName, - @PathVariable String namespaceName, @PathVariable String branchName, - @RequestBody NamespaceReleaseDTO model, - HttpServletRequest request) { - RequestPrecondition.checkArguments(!StringUtils.isContainEmpty(model.getReleasedBy(), model - .getReleaseTitle()), - "Params(releaseTitle and releasedBy) can not be empty"); - - if (userService.findByUserId(model.getReleasedBy()) == null) { - throw BadRequestException.userNotExists(model.getReleasedBy()); - } - - NamespaceReleaseModel releaseModel = BeanUtils.transform(NamespaceReleaseModel.class, model); - - releaseModel.setAppId(appId); - releaseModel.setEnv(Env.valueOf(env).toString()); - releaseModel.setClusterName(branchName); - releaseModel.setNamespaceName(namespaceName); - - ReleaseDTO releaseDTO = releaseService.publish(releaseModel); - - ConfigPublishEvent event = ConfigPublishEvent.instance(); - event.withAppId(appId) - .withCluster(clusterName) - .withNamespace(namespaceName) - .withReleaseId(releaseDTO.getId()) - .setGrayPublishEvent(true) - .setEnv(Env.valueOf(env)); - publisher.publishEvent(event); - - return OpenApiBeanUtils.transformFromReleaseDTO(releaseDTO); + ReleaseDTO mergedRelease = namespaceBranchService.merge(appId, Env.valueOf(env.toUpperCase()), + clusterName, namespaceName, branchName, model.getReleaseTitle(), model.getReleaseComment(), + model.isEmergencyPublish(), deleteBranch, model.getReleasedBy()); + + ConfigPublishEvent event = ConfigPublishEvent.instance(); + event.withAppId(appId).withCluster(clusterName).withNamespace(namespaceName) + .withReleaseId(mergedRelease.getId()).setMergeEvent(true).setEnv(Env.valueOf(env)); + publisher.publishEvent(event); + + return OpenApiBeanUtils.transformFromReleaseDTO(mergedRelease); + } + + @PreAuthorize(value = "@consumerPermissionValidator.hasReleaseNamespacePermission(#request, #appId, #namespaceName, #env)") + @PostMapping(value = "/apps/{appId}/clusters/{clusterName}/namespaces/{namespaceName}/branches/{branchName}/releases") + public OpenReleaseDTO createGrayRelease(@PathVariable String appId, @PathVariable String env, + @PathVariable String clusterName, @PathVariable String namespaceName, + @PathVariable String branchName, @RequestBody NamespaceReleaseDTO model, + HttpServletRequest request) { + RequestPrecondition.checkArguments( + !StringUtils.isContainEmpty(model.getReleasedBy(), model.getReleaseTitle()), + "Params(releaseTitle and releasedBy) can not be empty"); + + if (userService.findByUserId(model.getReleasedBy()) == null) { + throw BadRequestException.userNotExists(model.getReleasedBy()); } - @PreAuthorize(value = "@consumerPermissionValidator.hasReleaseNamespacePermission(#request, #appId, #namespaceName, #env)") - @PostMapping(value = "/apps/{appId}/clusters/{clusterName}/namespaces/{namespaceName}/branches/{branchName}/gray-del-releases") - public OpenReleaseDTO createGrayDelRelease(@PathVariable String appId, - @PathVariable String env, @PathVariable String clusterName, - @PathVariable String namespaceName, @PathVariable String branchName, - @RequestBody NamespaceGrayDelReleaseDTO model, - HttpServletRequest request) { - RequestPrecondition.checkArguments(!StringUtils.isContainEmpty(model.getReleasedBy(), model - .getReleaseTitle()), - "Params(releaseTitle and releasedBy) can not be empty"); - RequestPrecondition.checkArguments(model.getGrayDelKeys() != null, - "Params(grayDelKeys) can not be null"); - - if (userService.findByUserId(model.getReleasedBy()) == null) { - throw BadRequestException.userNotExists(model.getReleasedBy()); - } - - NamespaceGrayDelReleaseModel releaseModel = BeanUtils.transform(NamespaceGrayDelReleaseModel.class, model); - releaseModel.setAppId(appId); - releaseModel.setEnv(env.toUpperCase()); - releaseModel.setClusterName(branchName); - releaseModel.setNamespaceName(namespaceName); - - return OpenApiBeanUtils.transformFromReleaseDTO(releaseService.publish(releaseModel, releaseModel.getReleasedBy())); + NamespaceReleaseModel releaseModel = BeanUtils.transform(NamespaceReleaseModel.class, model); + + releaseModel.setAppId(appId); + releaseModel.setEnv(Env.valueOf(env).toString()); + releaseModel.setClusterName(branchName); + releaseModel.setNamespaceName(namespaceName); + + ReleaseDTO releaseDTO = releaseService.publish(releaseModel); + + ConfigPublishEvent event = ConfigPublishEvent.instance(); + event.withAppId(appId).withCluster(clusterName).withNamespace(namespaceName) + .withReleaseId(releaseDTO.getId()).setGrayPublishEvent(true).setEnv(Env.valueOf(env)); + publisher.publishEvent(event); + + return OpenApiBeanUtils.transformFromReleaseDTO(releaseDTO); + } + + @PreAuthorize(value = "@consumerPermissionValidator.hasReleaseNamespacePermission(#request, #appId, #namespaceName, #env)") + @PostMapping(value = "/apps/{appId}/clusters/{clusterName}/namespaces/{namespaceName}/branches/{branchName}/gray-del-releases") + public OpenReleaseDTO createGrayDelRelease(@PathVariable String appId, @PathVariable String env, + @PathVariable String clusterName, @PathVariable String namespaceName, + @PathVariable String branchName, @RequestBody NamespaceGrayDelReleaseDTO model, + HttpServletRequest request) { + RequestPrecondition.checkArguments( + !StringUtils.isContainEmpty(model.getReleasedBy(), model.getReleaseTitle()), + "Params(releaseTitle and releasedBy) can not be empty"); + RequestPrecondition.checkArguments(model.getGrayDelKeys() != null, + "Params(grayDelKeys) can not be null"); + + if (userService.findByUserId(model.getReleasedBy()) == null) { + throw BadRequestException.userNotExists(model.getReleasedBy()); } + NamespaceGrayDelReleaseModel releaseModel = BeanUtils.transform( + NamespaceGrayDelReleaseModel.class, model); + releaseModel.setAppId(appId); + releaseModel.setEnv(env.toUpperCase()); + releaseModel.setClusterName(branchName); + releaseModel.setNamespaceName(namespaceName); + + return OpenApiBeanUtils.transformFromReleaseDTO( + releaseService.publish(releaseModel, releaseModel.getReleasedBy())); + } + @PutMapping(path = "/releases/{releaseId}/rollback") public void rollback(@PathVariable String env, @PathVariable long releaseId, @RequestParam String operator, HttpServletRequest request) {