diff options
author | FrancescoFioraEst <francesco.fiora@est.tech> | 2023-01-03 16:15:39 +0000 |
---|---|---|
committer | FrancescoFioraEst <francesco.fiora@est.tech> | 2023-01-04 11:15:03 +0000 |
commit | a76f5614e10f99658114ea1ff2eaf334e0df01c8 (patch) | |
tree | e3d468119c6795d54d3894e363ba9a7d6e11fa88 /runtime-acm/src/main/java | |
parent | c6fb86de3dae6f26aec9813cd5ef4cc8d9268359 (diff) |
Refactor Post instances to create and update ACM instances
Issue-ID: POLICY-4493
Change-Id: I31c00e6d61a53dcd6a03a911a618f1c6495f2d38
Signed-off-by: FrancescoFioraEst <francesco.fiora@est.tech>
Diffstat (limited to 'runtime-acm/src/main/java')
5 files changed, 76 insertions, 137 deletions
diff --git a/runtime-acm/src/main/java/org/onap/policy/clamp/acm/runtime/instantiation/AutomationCompositionInstantiationProvider.java b/runtime-acm/src/main/java/org/onap/policy/clamp/acm/runtime/instantiation/AutomationCompositionInstantiationProvider.java index b723dba7f..099c0e740 100644 --- a/runtime-acm/src/main/java/org/onap/policy/clamp/acm/runtime/instantiation/AutomationCompositionInstantiationProvider.java +++ b/runtime-acm/src/main/java/org/onap/policy/clamp/acm/runtime/instantiation/AutomationCompositionInstantiationProvider.java @@ -37,7 +37,6 @@ import org.onap.policy.clamp.models.acm.concepts.AutomationCompositions; import org.onap.policy.clamp.models.acm.concepts.Participant; import org.onap.policy.clamp.models.acm.messages.rest.instantiation.InstantiationCommand; import org.onap.policy.clamp.models.acm.messages.rest.instantiation.InstantiationResponse; -import org.onap.policy.clamp.models.acm.messages.rest.instantiation.InstantiationUpdate; import org.onap.policy.clamp.models.acm.persistence.provider.AcDefinitionProvider; import org.onap.policy.clamp.models.acm.persistence.provider.AutomationCompositionProvider; import org.onap.policy.clamp.models.acm.persistence.provider.ParticipantProvider; @@ -102,29 +101,27 @@ public class AutomationCompositionInstantiationProvider { * Update automation composition. * * @param compositionId The UUID of the automation composition definition - * @param instanceId The UUID of the automation composition instance - * @param instanceUpdate the automation composition + * @param automationComposition the automation composition * @return the result of the update */ - public InstantiationResponse updateAutomationComposition(UUID compositionId, UUID instanceId, - InstantiationUpdate instanceUpdate) { - var automationComposition = automationCompositionProvider.getAutomationComposition(instanceId); - if (!compositionId.equals(automationComposition.getCompositionId())) { + public InstantiationResponse updateAutomationComposition(UUID compositionId, + AutomationComposition automationComposition) { + var instanceId = automationComposition.getInstanceId(); + var acToUpdate = automationCompositionProvider.getAutomationComposition(instanceId); + if (!compositionId.equals(acToUpdate.getCompositionId())) { throw new PfModelRuntimeException(Response.Status.BAD_REQUEST, automationComposition.getCompositionId() + DO_NOT_MATCH + compositionId); } - if (instanceUpdate.getElements() != null) { - automationComposition.setElements(instanceUpdate.getElements()); - var validationResult = validateAutomationComposition(automationComposition); - if (!validationResult.isValid()) { - throw new PfModelRuntimeException(Response.Status.BAD_REQUEST, validationResult.getResult()); - } - automationComposition = automationCompositionProvider.updateAutomationComposition(automationComposition); - } - - if (instanceUpdate.getInstantiationCommand() != null) { - issueAutomationCompositionCommand(automationComposition, instanceUpdate.getInstantiationCommand()); + acToUpdate.setElements(automationComposition.getElements()); + acToUpdate.setName(automationComposition.getName()); + acToUpdate.setVersion(automationComposition.getVersion()); + acToUpdate.setDescription(automationComposition.getDescription()); + acToUpdate.setDerivedFrom(automationComposition.getDerivedFrom()); + var validationResult = validateAutomationComposition(acToUpdate); + if (!validationResult.isValid()) { + throw new PfModelRuntimeException(Response.Status.BAD_REQUEST, validationResult.getResult()); } + automationComposition = automationCompositionProvider.updateAutomationComposition(acToUpdate); var response = new InstantiationResponse(); response.setInstanceId(instanceId); diff --git a/runtime-acm/src/main/java/org/onap/policy/clamp/acm/runtime/main/rest/InstantiationController.java b/runtime-acm/src/main/java/org/onap/policy/clamp/acm/runtime/main/rest/InstantiationController.java index 1ff7c019e..94c111e00 100644 --- a/runtime-acm/src/main/java/org/onap/policy/clamp/acm/runtime/main/rest/InstantiationController.java +++ b/runtime-acm/src/main/java/org/onap/policy/clamp/acm/runtime/main/rest/InstantiationController.java @@ -31,7 +31,6 @@ import org.onap.policy.clamp.models.acm.concepts.AutomationComposition; import org.onap.policy.clamp.models.acm.concepts.AutomationCompositions; import org.onap.policy.clamp.models.acm.messages.rest.instantiation.AcInstanceStateUpdate; import org.onap.policy.clamp.models.acm.messages.rest.instantiation.InstantiationResponse; -import org.onap.policy.clamp.models.acm.messages.rest.instantiation.InstantiationUpdate; import org.springframework.context.annotation.Profile; import org.springframework.http.ResponseEntity; import org.springframework.web.bind.annotation.RestController; @@ -59,10 +58,14 @@ public class InstantiationController extends AbstractRestController implements A public ResponseEntity<InstantiationResponse> createCompositionInstance(UUID compositionId, AutomationComposition automationComposition, UUID requestId) { - var response = provider.createAutomationComposition(compositionId, automationComposition); - return ResponseEntity - .created(createUri("/compositions/" + compositionId + "/instances/" + response.getInstanceId())) - .body(response); + if (automationComposition.getInstanceId() == null) { + var response = provider.createAutomationComposition(compositionId, automationComposition); + return ResponseEntity + .created(createUri("/compositions/" + compositionId + "/instances/" + response.getInstanceId())) + .body(response); + } else { + return ResponseEntity.ok().body(provider.updateAutomationComposition(compositionId, automationComposition)); + } } /** @@ -96,22 +99,6 @@ public class InstantiationController extends AbstractRestController implements A } /** - * Updates a automation composition. - * - * @param compositionId The UUID of the automation composition definition - * @param instanceId The UUID of the automation composition instance - * @param instanceUpdate the automation composition to update - * @param requestId request ID used in ONAP logging - * @return a response - */ - public ResponseEntity<InstantiationResponse> updateCompositionInstance(UUID compositionId, UUID instanceId, - InstantiationUpdate instanceUpdate, UUID requestId) { - - return ResponseEntity.ok() - .body(provider.updateAutomationComposition(compositionId, instanceId, instanceUpdate)); - } - - /** * Deletes a automation composition definition. * * @param compositionId The UUID of the automation composition definition @@ -127,8 +114,8 @@ public class InstantiationController extends AbstractRestController implements A } @Override - public ResponseEntity<Void> ompositionInstanceState(UUID compositionId, UUID instanceId, - @Valid AcInstanceStateUpdate body, UUID requestId) { + public ResponseEntity<Void> compositionInstanceState(UUID compositionId, UUID instanceId, + @Valid AcInstanceStateUpdate body, UUID requestId) { // TODO Auto-generated method stub return null; } diff --git a/runtime-acm/src/main/java/org/onap/policy/clamp/acm/runtime/main/rest/stub/CommissioningControllerStub.java b/runtime-acm/src/main/java/org/onap/policy/clamp/acm/runtime/main/rest/stub/CommissioningControllerStub.java index 833b3fa0b..98c71dc6f 100644 --- a/runtime-acm/src/main/java/org/onap/policy/clamp/acm/runtime/main/rest/stub/CommissioningControllerStub.java +++ b/runtime-acm/src/main/java/org/onap/policy/clamp/acm/runtime/main/rest/stub/CommissioningControllerStub.java @@ -21,37 +21,24 @@ package org.onap.policy.clamp.acm.runtime.main.rest.stub; import java.util.UUID; -import javax.servlet.http.HttpServletRequest; -import javax.validation.Valid; +import lombok.RequiredArgsConstructor; import org.onap.policy.clamp.acm.runtime.main.rest.gen.AutomationCompositionDefinitionApi; import org.onap.policy.clamp.acm.runtime.main.web.AbstractRestController; import org.onap.policy.clamp.models.acm.messages.rest.commissioning.AcTypeStateUpdate; import org.onap.policy.clamp.models.acm.messages.rest.commissioning.CommissioningResponse; import org.onap.policy.models.tosca.authorative.concepts.ToscaServiceTemplate; import org.onap.policy.models.tosca.authorative.concepts.ToscaServiceTemplates; -import org.slf4j.Logger; -import org.slf4j.LoggerFactory; -import org.springframework.beans.factory.annotation.Autowired; import org.springframework.beans.factory.annotation.Value; import org.springframework.context.annotation.Profile; import org.springframework.http.ResponseEntity; -import org.springframework.web.bind.annotation.PathVariable; -import org.springframework.web.bind.annotation.RequestBody; -import org.springframework.web.bind.annotation.RequestHeader; -import org.springframework.web.bind.annotation.RequestParam; import org.springframework.web.bind.annotation.RestController; @RestController @Profile("stub") -public class CommissioningControllerStub extends AbstractRestController - implements AutomationCompositionDefinitionApi { +@RequiredArgsConstructor +public class CommissioningControllerStub extends AbstractRestController implements AutomationCompositionDefinitionApi { - private static final Logger log = LoggerFactory.getLogger(CommissioningControllerStub.class); - - private StubUtils stubUtils = new StubUtils(); - - @Autowired - private HttpServletRequest request; + private final StubUtils stubUtils; @Value("${stub.deleteCompositionDefinitionResponse}") private String pathToResponseFile; @@ -69,44 +56,35 @@ public class CommissioningControllerStub extends AbstractRestController private String pathToPutUpdate; @Override - public ResponseEntity<CommissioningResponse> createCompositionDefinitions( - @Valid @RequestBody ToscaServiceTemplate body, - @RequestHeader(value = "X-onap-RequestId", required = false) UUID xonaprequestid) { - return stubUtils.getResponse(pathToPostResponse, CommissioningResponse.class, request, log); + public ResponseEntity<CommissioningResponse> createCompositionDefinitions(ToscaServiceTemplate body, + UUID xonaprequestid) { + var compositionId = body.getMetadata() != null ? body.getMetadata().get("compositionId") : null; + if (compositionId == null) { + return stubUtils.getResponse(pathToPostResponse, CommissioningResponse.class); + } else { + return stubUtils.getResponse(pathToPutUpdate, CommissioningResponse.class); + } } @Override - public ResponseEntity<CommissioningResponse> deleteCompositionDefinition( - @PathVariable("compositionId") UUID compositionId, - @RequestHeader(value = "X-onap-RequestId", required = false) UUID xonaprequestid) { - return stubUtils.getResponse(pathToResponseFile, CommissioningResponse.class, request, log); + public ResponseEntity<CommissioningResponse> deleteCompositionDefinition(UUID compositionId, UUID xonaprequestid) { + return stubUtils.getResponse(pathToResponseFile, CommissioningResponse.class); } @Override - public ResponseEntity<ToscaServiceTemplate> getCompositionDefinition( - @PathVariable("compositionId") UUID compositionId, - @RequestHeader(value = "X-onap-RequestId", required = false) UUID xonaprequestid) { - return stubUtils.getResponse(pathToSingleDefinition, ToscaServiceTemplate.class, request, log); + public ResponseEntity<ToscaServiceTemplate> getCompositionDefinition(UUID compositionId, UUID xonaprequestid) { + return stubUtils.getResponse(pathToSingleDefinition, ToscaServiceTemplate.class); } @Override - public ResponseEntity<ToscaServiceTemplates> queryCompositionDefinitions( - @Valid @RequestParam(value = "name", required = false) String name, - @Valid @RequestParam(value = "version", required = false) String version, - @RequestHeader(value = "X-onap-RequestId", required = false) UUID xonaprequestid) { - return stubUtils.getResponse(pathToAllDefinitions, ToscaServiceTemplates.class, request, log); - } - - public ResponseEntity<CommissioningResponse> updateCompositionDefinition( - @PathVariable("compositionId") UUID compositionId, - @Valid @RequestBody ToscaServiceTemplate body, - @RequestHeader(value = "X-onap-RequestId", required = false) UUID xonaprequestid) { - return stubUtils.getResponse(pathToPutUpdate, CommissioningResponse.class, request, log); + public ResponseEntity<ToscaServiceTemplates> queryCompositionDefinitions(String name, String version, + UUID xonaprequestid) { + return stubUtils.getResponse(pathToAllDefinitions, ToscaServiceTemplates.class); } @Override public ResponseEntity<Void> compositionDefinitionPriming(UUID compositionId, UUID requestId, - AcTypeStateUpdate body) { + AcTypeStateUpdate body) { // TODO Auto-generated method stub return null; } diff --git a/runtime-acm/src/main/java/org/onap/policy/clamp/acm/runtime/main/rest/stub/InstantiationControllerStub.java b/runtime-acm/src/main/java/org/onap/policy/clamp/acm/runtime/main/rest/stub/InstantiationControllerStub.java index ac34f227d..d0b190dd3 100644 --- a/runtime-acm/src/main/java/org/onap/policy/clamp/acm/runtime/main/rest/stub/InstantiationControllerStub.java +++ b/runtime-acm/src/main/java/org/onap/policy/clamp/acm/runtime/main/rest/stub/InstantiationControllerStub.java @@ -21,37 +21,25 @@ package org.onap.policy.clamp.acm.runtime.main.rest.stub; import java.util.UUID; -import javax.servlet.http.HttpServletRequest; import javax.validation.Valid; +import lombok.RequiredArgsConstructor; import org.onap.policy.clamp.acm.runtime.main.rest.gen.AutomationCompositionInstanceApi; import org.onap.policy.clamp.acm.runtime.main.web.AbstractRestController; import org.onap.policy.clamp.models.acm.concepts.AutomationComposition; import org.onap.policy.clamp.models.acm.concepts.AutomationCompositions; import org.onap.policy.clamp.models.acm.messages.rest.instantiation.AcInstanceStateUpdate; import org.onap.policy.clamp.models.acm.messages.rest.instantiation.InstantiationResponse; -import org.onap.policy.clamp.models.acm.messages.rest.instantiation.InstantiationUpdate; -import org.slf4j.Logger; -import org.slf4j.LoggerFactory; -import org.springframework.beans.factory.annotation.Autowired; import org.springframework.beans.factory.annotation.Value; import org.springframework.context.annotation.Profile; import org.springframework.http.ResponseEntity; -import org.springframework.web.bind.annotation.PathVariable; -import org.springframework.web.bind.annotation.RequestBody; -import org.springframework.web.bind.annotation.RequestHeader; -import org.springframework.web.bind.annotation.RequestParam; import org.springframework.web.bind.annotation.RestController; @RestController @Profile("stub") +@RequiredArgsConstructor public class InstantiationControllerStub extends AbstractRestController implements AutomationCompositionInstanceApi { - private static final Logger log = LoggerFactory.getLogger(InstantiationControllerStub.class); - - private StubUtils stubUtils = new StubUtils(); - - @Autowired - private HttpServletRequest request; + private final StubUtils stubUtils; @Value("${stub.deleteCompositionInstanceResponse}") private String pathToResponseFile; @@ -69,50 +57,37 @@ public class InstantiationControllerStub extends AbstractRestController implemen private String pathToPutUpdate; @Override - public ResponseEntity<InstantiationResponse> createCompositionInstance( - @PathVariable("compositionId") UUID compositionId, - @Valid @RequestBody AutomationComposition body, - @RequestHeader(value = "X-onap-RequestId", required = false) UUID xonaprequestid) { - return stubUtils.getResponse(pathPostIntance, InstantiationResponse.class, request, log); + public ResponseEntity<InstantiationResponse> createCompositionInstance(UUID compositionId, + AutomationComposition body, UUID xonaprequestid) { + if (body.getInstanceId() == null) { + return stubUtils.getResponse(pathPostIntance, InstantiationResponse.class); + } else { + return stubUtils.getResponse(pathToResponseFile, InstantiationResponse.class); + } } @Override - public ResponseEntity<InstantiationResponse> deleteCompositionInstance( - @PathVariable("compositionId") UUID compositionId, - @PathVariable("instanceId") UUID instanceId, - @RequestHeader(value = "X-onap-RequestId", required = false) UUID xonaprequestid) { - return stubUtils.getResponse(pathToResponseFile, InstantiationResponse.class, request, log); + public ResponseEntity<InstantiationResponse> deleteCompositionInstance(UUID compositionId, UUID instanceId, + UUID xonaprequestid) { + return stubUtils.getResponse(pathToResponseFile, InstantiationResponse.class); } @Override - public ResponseEntity<AutomationComposition> getCompositionInstance( - @PathVariable("compositionId") UUID compositionId, - @PathVariable("instanceId") UUID instanceId, - @RequestHeader(value = "X-onap-RequestId", required = false) UUID xonaprequestid) { - return stubUtils.getResponse(pathToSingleIntance, AutomationComposition.class, request, log); + public ResponseEntity<AutomationComposition> getCompositionInstance(UUID compositionId, UUID instanceId, + UUID xonaprequestid) { + return stubUtils.getResponse(pathToSingleIntance, AutomationComposition.class); } @Override - public ResponseEntity<AutomationCompositions> queryCompositionInstances( - @PathVariable("compositionId") UUID compositionId, - @Valid @RequestParam(value = "name", required = false) String name, - @Valid @RequestParam(value = "version", required = false) String version, - @RequestHeader(value = "X-onap-RequestId", required = false) UUID xonaprequestid) { - return stubUtils.getResponse(pathToAllIntances, AutomationCompositions.class, request, log); - } - - public ResponseEntity<InstantiationResponse> updateCompositionInstance( - UUID compositionId, - UUID instanceId, - InstantiationUpdate body, - UUID xonaprequestid) { - return stubUtils.getResponse(pathToResponseFile, InstantiationResponse.class, request, log); + public ResponseEntity<AutomationCompositions> queryCompositionInstances(UUID compositionId, String name, + String version, UUID xonaprequestid) { + return stubUtils.getResponse(pathToAllIntances, AutomationCompositions.class); } @Override - public ResponseEntity<Void> ompositionInstanceState(UUID compositionId, UUID instanceId, - @Valid AcInstanceStateUpdate body, UUID requestId) { + public ResponseEntity<Void> compositionInstanceState(UUID compositionId, UUID instanceId, + @Valid AcInstanceStateUpdate body, UUID requestId) { // TODO Auto-generated method stub return null; } -}
\ No newline at end of file +} diff --git a/runtime-acm/src/main/java/org/onap/policy/clamp/acm/runtime/main/rest/stub/StubUtils.java b/runtime-acm/src/main/java/org/onap/policy/clamp/acm/runtime/main/rest/stub/StubUtils.java index 650426681..3a209a096 100644 --- a/runtime-acm/src/main/java/org/onap/policy/clamp/acm/runtime/main/rest/stub/StubUtils.java +++ b/runtime-acm/src/main/java/org/onap/policy/clamp/acm/runtime/main/rest/stub/StubUtils.java @@ -22,13 +22,13 @@ package org.onap.policy.clamp.acm.runtime.main.rest.stub; import com.google.gson.Gson; import java.io.IOException; -import java.io.InputStream; import java.nio.charset.StandardCharsets; import javax.servlet.http.HttpServletRequest; import lombok.RequiredArgsConstructor; import org.onap.policy.common.utils.coder.CoderException; import org.onap.policy.common.utils.coder.StandardYamlCoder; import org.slf4j.Logger; +import org.slf4j.LoggerFactory; import org.springframework.context.annotation.Profile; import org.springframework.core.io.ClassPathResource; import org.springframework.http.HttpStatus; @@ -40,21 +40,23 @@ import org.springframework.stereotype.Service; @Profile("stub") public class StubUtils { + private static final Logger log = LoggerFactory.getLogger(StubUtils.class); + private final HttpServletRequest request; + private static final StandardYamlCoder YAML_TRANSLATOR = new StandardYamlCoder(); private static final Gson JSON_TRANSLATOR = new Gson(); private static final String YAML = "application/yaml"; private static final String ACCEPT = "Accept"; - <T> ResponseEntity<T> getResponse(String path, Class<T> clazz, - HttpServletRequest request, Logger log) { - String accept = request.getHeader(ACCEPT); - final ClassPathResource resource = new ClassPathResource(path); - try (InputStream inputStream = resource.getInputStream()) { + <T> ResponseEntity<T> getResponse(String path, Class<T> clazz) { + var accept = request.getHeader(ACCEPT); + final var resource = new ClassPathResource(path); + try (var inputStream = resource.getInputStream()) { if (accept.contains(YAML)) { var targetObject = YAML_TRANSLATOR.decode(inputStream, clazz); return new ResponseEntity<>(targetObject, HttpStatus.OK); } else { - final String string = new String(inputStream.readAllBytes(), StandardCharsets.UTF_8); + final var string = new String(inputStream.readAllBytes(), StandardCharsets.UTF_8); var targetObject = JSON_TRANSLATOR.fromJson(string, clazz); return new ResponseEntity<>(targetObject, HttpStatus.OK); } |