@GET @Produces(MediaType.APPLICATION_JSON) @Path("/{id}/deployments/{version}") public IntegrationDeployment getDeployment(@NotNull @PathParam("id") @ApiParam(required = true) String id, @NotNull @PathParam("version") @ApiParam(required = true) Integer version) { String compositeId = IntegrationDeployment.compositeId(id, version); return getDataManager().fetch(IntegrationDeployment.class, compositeId); }
@POST @Produces(MediaType.APPLICATION_JSON) @Path("/{id}/deployments/{version}/targetState") @SuppressFBWarnings("UWF_UNWRITTEN_PUBLIC_OR_PROTECTED_FIELD") public void setTargetStatus( @NotNull @PathParam("id") @ApiParam(required = true) String id, @NotNull @PathParam("version") @ApiParam(required = true) Integer version, TargetStateRequest request) { String compositeId = IntegrationDeployment.compositeId(id, version); IntegrationDeployment deployment = getDataManager().fetch(IntegrationDeployment.class, compositeId); deployment = new IntegrationDeployment.Builder().createFrom(deployment).targetState(request.targetState).build(); getDataManager().update(deployment); }
@PUT @Produces(MediaType.APPLICATION_JSON) @Path("/{id}/deployments") public IntegrationDeployment putDeployment(@Context SecurityContext sec, @NotNull @PathParam("id") @ApiParam(required = true) String id) { Integration integration = Getter.super.get(id); int nextDeploymentVersion = 1; // Update previous deployments targetState=Undeployed and make sure nextDeploymentVersion is larger than all previous ones. Set<String> deploymentIds = getDataManager().fetchIdsByPropertyValue(IntegrationDeployment.class, "integrationId", id); if (deploymentIds != null && !deploymentIds.isEmpty()) { Stream<IntegrationDeployment> deployments = deploymentIds.stream() .map(i -> getDataManager().fetch(IntegrationDeployment.class, i)) .filter(r -> r != null); for (IntegrationDeployment d : deployments.toArray(IntegrationDeployment[]::new)) { nextDeploymentVersion = Math.max(nextDeploymentVersion, d.getVersion()+1); getDataManager().update(d.withTargetState(IntegrationDeploymentState.Unpublished)); } } IntegrationDeployment deployment = new IntegrationDeployment.Builder() .id(IntegrationDeployment.compositeId(id, nextDeploymentVersion)) .spec(integration) .version(nextDeploymentVersion) // .userId(SecurityContextHolder.getContext().getAuthentication().getName()) .userId(sec.getUserPrincipal().getName()) .build(); deployment = getDataManager().create(deployment); return deployment; }