From cb8d238bf57c2723fac484a0f7c1dc77428a65c0 Mon Sep 17 00:00:00 2001 From: Jerry Flood Date: Tue, 23 Apr 2019 16:16:34 -0400 Subject: Remove dead code, add robot tests Issue-ID: OPTFRA-474 Change-Id: I409f3c16d287419357d07487032ceee8eda8cf94 Signed-off-by: Jerry Flood --- .../optf/cmso/CmsoEnvironmentPostProcessor.java | 47 ---- .../org/onap/optf/cmso/JerseyConfiguration.java | 2 - .../cmso/optimizer/bean/CmsoOptimizerRequest.java | 74 ----- .../cmso/optimizer/bean/CmsoOptimizerResponse.java | 124 --------- .../optf/cmso/optimizer/bean/CmsoRequestInfo.java | 83 ------ .../optf/cmso/optimizer/bean/CmsoSchedule.java | 88 ------ .../cmso/optimizer/bean/CmsoSchedulingInfo.java | 110 -------- .../optf/cmso/optimizer/bean/CmsoVnfDetails.java | 60 ---- .../cmso/service/rs/CmsoOptimizerCallback.java | 64 ----- .../cmso/service/rs/CmsoOptimizerCallbackImpl.java | 304 --------------------- .../onap/optf/cmso/service/rs/CmsoServiceImpl.java | 25 +- .../loopback/SchedulerTestLoopbackServiceImpl.java | 43 ++- 12 files changed, 63 insertions(+), 961 deletions(-) delete mode 100644 cmso-service/src/main/java/org/onap/optf/cmso/CmsoEnvironmentPostProcessor.java delete mode 100644 cmso-service/src/main/java/org/onap/optf/cmso/optimizer/bean/CmsoOptimizerRequest.java delete mode 100644 cmso-service/src/main/java/org/onap/optf/cmso/optimizer/bean/CmsoOptimizerResponse.java delete mode 100644 cmso-service/src/main/java/org/onap/optf/cmso/optimizer/bean/CmsoRequestInfo.java delete mode 100644 cmso-service/src/main/java/org/onap/optf/cmso/optimizer/bean/CmsoSchedule.java delete mode 100644 cmso-service/src/main/java/org/onap/optf/cmso/optimizer/bean/CmsoSchedulingInfo.java delete mode 100644 cmso-service/src/main/java/org/onap/optf/cmso/optimizer/bean/CmsoVnfDetails.java delete mode 100644 cmso-service/src/main/java/org/onap/optf/cmso/service/rs/CmsoOptimizerCallback.java delete mode 100644 cmso-service/src/main/java/org/onap/optf/cmso/service/rs/CmsoOptimizerCallbackImpl.java (limited to 'cmso-service/src/main/java') diff --git a/cmso-service/src/main/java/org/onap/optf/cmso/CmsoEnvironmentPostProcessor.java b/cmso-service/src/main/java/org/onap/optf/cmso/CmsoEnvironmentPostProcessor.java deleted file mode 100644 index 8b4c44a..0000000 --- a/cmso-service/src/main/java/org/onap/optf/cmso/CmsoEnvironmentPostProcessor.java +++ /dev/null @@ -1,47 +0,0 @@ -/* - * ============LICENSE_START======================================================================================= - * Copyright (c) 2019 AT&T Intellectual Property. - * =================================================================== - * Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance - * with the License. You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software distributed under the License is distributed - * on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS - * OF ANY KIND, either express or implied. See the License for the specific language governing permissions and - * limitations under the License. - * ============LICENSE_END========================================================================================= - * - ******************************************************************************/ - -package org.onap.optf.cmso; - -import java.util.HashMap; -import java.util.Map; -import org.onap.optf.cmso.common.PropertiesManagement; -import org.springframework.boot.SpringApplication; -import org.springframework.boot.env.EnvironmentPostProcessor; -import org.springframework.core.env.ConfigurableEnvironment; -import org.springframework.core.env.MapPropertySource; -import org.springframework.core.env.MutablePropertySources; - -public class CmsoEnvironmentPostProcessor implements EnvironmentPostProcessor { - // TODO tested in ONAP springboot and this is called before all of the properties files have been - // loaded... - // perhaps there is a post post processor? Until this works. DB password will be in the clear in the - // proeprties files. - @Override - public void postProcessEnvironment(ConfigurableEnvironment environment, SpringApplication application) { - String pwd = environment.getProperty("cmso.database.password"); - if (pwd != null) { - pwd = PropertiesManagement.getDecryptedValue(pwd); - Map map = new HashMap<>(); - map.put("spring.datasource.password", pwd); - MapPropertySource propertySource = new MapPropertySource("abc", map); - MutablePropertySources proeprtySources = environment.getPropertySources(); - proeprtySources.addLast(propertySource); - } - } - -} diff --git a/cmso-service/src/main/java/org/onap/optf/cmso/JerseyConfiguration.java b/cmso-service/src/main/java/org/onap/optf/cmso/JerseyConfiguration.java index 2ba5fa3..eb4160a 100644 --- a/cmso-service/src/main/java/org/onap/optf/cmso/JerseyConfiguration.java +++ b/cmso-service/src/main/java/org/onap/optf/cmso/JerseyConfiguration.java @@ -47,7 +47,6 @@ import org.glassfish.jersey.servlet.ServletProperties; import org.onap.optf.cmso.dispatcher.rs.DispatcherServiceImpl; import org.onap.optf.cmso.filters.CmsoContainerFilters; import org.onap.optf.cmso.service.rs.AdminToolImpl; -import org.onap.optf.cmso.service.rs.CmsoOptimizerCallbackImpl; import org.onap.optf.cmso.service.rs.CmsoServiceImpl; import org.onap.optf.cmso.service.rs.HealthCheckImpl; import org.onap.optf.cmso.test.loopback.SchedulerTestLoopbackServiceImpl; @@ -84,7 +83,6 @@ public class JerseyConfiguration extends ResourceConfig { @Autowired public JerseyConfiguration( /* LogRequestFilter lrf */ ) { register(CmsoServiceImpl.class); - register(CmsoOptimizerCallbackImpl.class); register(SchedulerTestLoopbackServiceImpl.class); register(TicketMgtLoopbackServiceImpl.class); register(HealthCheckImpl.class); diff --git a/cmso-service/src/main/java/org/onap/optf/cmso/optimizer/bean/CmsoOptimizerRequest.java b/cmso-service/src/main/java/org/onap/optf/cmso/optimizer/bean/CmsoOptimizerRequest.java deleted file mode 100644 index 05ab753..0000000 --- a/cmso-service/src/main/java/org/onap/optf/cmso/optimizer/bean/CmsoOptimizerRequest.java +++ /dev/null @@ -1,74 +0,0 @@ -/* - * Copyright � 2017-2018 AT&T Intellectual Property. - * Modifications Copyright � 2018 IBM. - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - * - * - * Unless otherwise specified, all documentation contained herein is licensed - * under the Creative Commons License, Attribution 4.0 Intl. (the "License"); - * you may not use this documentation except in compliance with the License. - * You may obtain a copy of the License at - * - * https://creativecommons.org/licenses/by/4.0/ - * - * Unless required by applicable law or agreed to in writing, documentation - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. -*/ - -package org.onap.optf.cmso.optimizer.bean; - -public class CmsoOptimizerRequest { - - /* - * - * { "schedulingInfo": { "scheduleId": "CM-<__SCHEDULE ID__>", "startTime": - * "2017-02-15T00:00:00+05:00", "endTime": "2017-02-18T23:59:00+05:00", - * "normalDurationInSecs": 60, "additionalDurationInSecs": 0, // for backout - * "concurrencyLimit": 10, "policyId": ["SNIRO.TimeLimitAndVerticalTopology"], - * "vnfDetails": [{ “node�?: "satmo415vbc", “groupId�?: “group1�?//optional }, { - * “node�?: "satmo415vbc", “groupId�?: “group1�?//optional }] }, "requestInfo": { - * “transactionId�?: �?__TRANSACTIONID__�?, //logging "requestId": - * "CM-<__SCHEDULE ID__>", "sourceId": "cm-portal", “optimizer�?: [“scheduling�?], - * "callbackUrl": "http://callbackurl.onap.org:8080/callback" } } - * - */ - - private CmsoSchedulingInfo schedulingInfo; - private CmsoRequestInfo requestInfo; - - public CmsoOptimizerRequest() { - schedulingInfo = new CmsoSchedulingInfo(); - requestInfo = new CmsoRequestInfo(); - } - - public CmsoSchedulingInfo getSchedulingInfo() { - return schedulingInfo; - } - - public void setSchedulingInfo(CmsoSchedulingInfo schedulingInfo) { - this.schedulingInfo = schedulingInfo; - } - - public CmsoRequestInfo getRequestInfo() { - return requestInfo; - } - - public void setRequestInfo(CmsoRequestInfo requestInfo) { - this.requestInfo = requestInfo; - } - -} diff --git a/cmso-service/src/main/java/org/onap/optf/cmso/optimizer/bean/CmsoOptimizerResponse.java b/cmso-service/src/main/java/org/onap/optf/cmso/optimizer/bean/CmsoOptimizerResponse.java deleted file mode 100644 index 1660866..0000000 --- a/cmso-service/src/main/java/org/onap/optf/cmso/optimizer/bean/CmsoOptimizerResponse.java +++ /dev/null @@ -1,124 +0,0 @@ -/* - * Copyright © 2017-2018 AT&T Intellectual Property. - * Modifications Copyright © 2018 IBM. - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - * - * - * Unless otherwise specified, all documentation contained herein is licensed - * under the Creative Commons License, Attribution 4.0 Intl. (the "License"); - * you may not use this documentation except in compliance with the License. - * You may obtain a copy of the License at - * - * https://creativecommons.org/licenses/by/4.0/ - * - * Unless required by applicable law or agreed to in writing, documentation - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. -*/ - -package org.onap.optf.cmso.optimizer.bean; - -import io.swagger.annotations.ApiModel; -import io.swagger.annotations.ApiModelProperty; - -@ApiModel(value = "Response from schedule optimizer", - description = "Asynchronous response to schedule oprimizer request.") -public class CmsoOptimizerResponse { - - /* - * - * { "transactionId": "dummy-transaction-id", - * "scheduleId":"CM-<__SCHEDULE ID__>", "requestState": "complete", "status": - * "Optimal", // diagnostic code "description": "Optimal solution found", // - * diagnostic code "schedule": [ { "groupId": "grp06", "startTime": - * "2016-10-01T00:30:00+05:00", // starting time for this group (In 1707, - * seconds will always be zero but there is no reason to hardcode that decision) - * "finishTime": "2016-10-01T00:40:00+05:00", // endtime for this group - * (including failover) "latestInstanceStartTime": "2016-10-01T00:38:00Z", // - * latest time when an instance of this group can be started "node": [ "up01", - * "up03", "up09" ] // list of instances for this group. } ] } - * - */ - - @ApiModelProperty(value = "Unique id of optimization request.") - private String transactionId; - - @ApiModelProperty(value = "Schedule id for which the optimization request was executed.") - private String scheduleId; - - @ApiModelProperty(value = "State of the request as reported by the optimizer.") - private String requestState; - - @ApiModelProperty(value = "Status of the request.") - private String status; - - @ApiModelProperty(value = "Description of the request status.") - private String description; - - @ApiModelProperty(value = "List of schedules returned, one per group. Only 1 group supported at this time.") - private CmsoSchedule[] schedule; - - public CmsoOptimizerResponse() {} - - public String getTransactionId() { - return transactionId; - } - - public void setTransactionId(String transactionId) { - this.transactionId = transactionId; - } - - public String getScheduleId() { - return scheduleId; - } - - public void setScheduleId(String scheduleId) { - this.scheduleId = scheduleId; - } - - public String getRequestState() { - return requestState; - } - - public void setRequestState(String requestState) { - this.requestState = requestState; - } - - public String getDescription() { - return description; - } - - public void setDescription(String description) { - this.description = description; - } - - public String getStatus() { - return status; - } - - public void setStatus(String status) { - this.status = status; - } - - public CmsoSchedule[] getSchedule() { - return schedule; - } - - public void setSchedule(CmsoSchedule[] schedule) { - this.schedule = schedule; - } - -} diff --git a/cmso-service/src/main/java/org/onap/optf/cmso/optimizer/bean/CmsoRequestInfo.java b/cmso-service/src/main/java/org/onap/optf/cmso/optimizer/bean/CmsoRequestInfo.java deleted file mode 100644 index dd74db2..0000000 --- a/cmso-service/src/main/java/org/onap/optf/cmso/optimizer/bean/CmsoRequestInfo.java +++ /dev/null @@ -1,83 +0,0 @@ -/* - * Copyright � 2017-2018 AT&T Intellectual Property. - * Modifications Copyright � 2018 IBM. - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - * - * - * Unless otherwise specified, all documentation contained herein is licensed - * under the Creative Commons License, Attribution 4.0 Intl. (the "License"); - * you may not use this documentation except in compliance with the License. - * You may obtain a copy of the License at - * - * https://creativecommons.org/licenses/by/4.0/ - * - * Unless required by applicable law or agreed to in writing, documentation - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. -*/ - -package org.onap.optf.cmso.optimizer.bean; - -public class CmsoRequestInfo { - private String transactionId; - private String requestId; - private String sourceId; - private String[] optimizer; - private String callbackUrl; - - public CmsoRequestInfo() {} - - public String getTransactionId() { - return transactionId; - } - - public void setTransactionId(String transactionId) { - this.transactionId = transactionId; - } - - public String getRequestId() { - return requestId; - } - - public void setRequestId(String requestId) { - this.requestId = requestId; - } - - public String getSourceId() { - return sourceId; - } - - public void setSourceId(String sourceId) { - this.sourceId = sourceId; - } - - public String[] getOptimizer() { - return optimizer; - } - - public void setOptimizer(String[] optimizer) { - this.optimizer = optimizer; - } - - public String getCallbackUrl() { - return callbackUrl; - } - - public void setCallbackUrl(String callbackUrl) { - this.callbackUrl = callbackUrl; - } - -} diff --git a/cmso-service/src/main/java/org/onap/optf/cmso/optimizer/bean/CmsoSchedule.java b/cmso-service/src/main/java/org/onap/optf/cmso/optimizer/bean/CmsoSchedule.java deleted file mode 100644 index 0d56fbd..0000000 --- a/cmso-service/src/main/java/org/onap/optf/cmso/optimizer/bean/CmsoSchedule.java +++ /dev/null @@ -1,88 +0,0 @@ -/* - * Copyright � 2017-2018 AT&T Intellectual Property. - * Modifications Copyright � 2018 IBM. - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - * - * - * Unless otherwise specified, all documentation contained herein is licensed - * under the Creative Commons License, Attribution 4.0 Intl. (the "License"); - * you may not use this documentation except in compliance with the License. - * You may obtain a copy of the License at - * - * https://creativecommons.org/licenses/by/4.0/ - * - * Unless required by applicable law or agreed to in writing, documentation - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. -*/ - -package org.onap.optf.cmso.optimizer.bean; - -import java.util.ArrayList; -import java.util.List; - -public class CmsoSchedule { - private String groupId; - private String startTime; - private String finishTime; - private String latestInstanceStartTime; - private List node; - - public CmsoSchedule() { - node = new ArrayList(); - } - - public String getGroupId() { - return groupId; - } - - public void setGroupId(String groupId) { - this.groupId = groupId; - } - - public String getStartTime() { - return startTime; - } - - public void setStartTime(String startTime) { - this.startTime = startTime; - } - - public String getFinishTime() { - return finishTime; - } - - public void setFinishTime(String finishTime) { - this.finishTime = finishTime; - } - - public String getLatestInstanceStartTime() { - return latestInstanceStartTime; - } - - public void setLatestInstanceStartTime(String latestInstanceStartTime) { - this.latestInstanceStartTime = latestInstanceStartTime; - } - - public List getNode() { - return node; - } - - public void setNode(List node) { - this.node = node; - } - -} diff --git a/cmso-service/src/main/java/org/onap/optf/cmso/optimizer/bean/CmsoSchedulingInfo.java b/cmso-service/src/main/java/org/onap/optf/cmso/optimizer/bean/CmsoSchedulingInfo.java deleted file mode 100644 index 840cbb7..0000000 --- a/cmso-service/src/main/java/org/onap/optf/cmso/optimizer/bean/CmsoSchedulingInfo.java +++ /dev/null @@ -1,110 +0,0 @@ -/* - * Copyright � 2017-2018 AT&T Intellectual Property. - * Modifications Copyright � 2018 IBM. - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - * - * - * Unless otherwise specified, all documentation contained herein is licensed - * under the Creative Commons License, Attribution 4.0 Intl. (the "License"); - * you may not use this documentation except in compliance with the License. - * You may obtain a copy of the License at - * - * https://creativecommons.org/licenses/by/4.0/ - * - * Unless required by applicable law or agreed to in writing, documentation - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. -*/ - -package org.onap.optf.cmso.optimizer.bean; - -public class CmsoSchedulingInfo { - private String scheduleId; - private String startTime; - private String endTime; - private int normalDurationInSecs; - private int additionalDurationInSecs; - private int concurrencyLimit; - private String[] policyId; - private CmsoVnfDetails[] vnfDetails; - - public CmsoSchedulingInfo() {} - - public String getScheduleId() { - return scheduleId; - } - - public void setScheduleId(String scheduleId) { - this.scheduleId = scheduleId; - } - - public String getStartTime() { - return startTime; - } - - public void setStartTime(String startTime) { - this.startTime = startTime; - } - - public String getEndTime() { - return endTime; - } - - public void setEndTime(String endTime) { - this.endTime = endTime; - } - - public int getNormalDurationInSecs() { - return normalDurationInSecs; - } - - public void setNormalDurationInSecs(int normalDurationInSecs) { - this.normalDurationInSecs = normalDurationInSecs; - } - - public int getAdditionalDurationInSecs() { - return additionalDurationInSecs; - } - - public void setAdditionalDurationInSecs(int additionalDurationInSecs) { - this.additionalDurationInSecs = additionalDurationInSecs; - } - - public int getConcurrencyLimit() { - return concurrencyLimit; - } - - public void setConcurrencyLimit(int concurrencyLimit) { - this.concurrencyLimit = concurrencyLimit; - } - - public String[] getPolicyId() { - return policyId; - } - - public void setPolicyId(String[] policyId) { - this.policyId = policyId; - } - - public CmsoVnfDetails[] getVnfDetails() { - return vnfDetails; - } - - public void setVnfDetails(CmsoVnfDetails[] vnfDetails) { - this.vnfDetails = vnfDetails; - } - -} diff --git a/cmso-service/src/main/java/org/onap/optf/cmso/optimizer/bean/CmsoVnfDetails.java b/cmso-service/src/main/java/org/onap/optf/cmso/optimizer/bean/CmsoVnfDetails.java deleted file mode 100644 index 4ee6053..0000000 --- a/cmso-service/src/main/java/org/onap/optf/cmso/optimizer/bean/CmsoVnfDetails.java +++ /dev/null @@ -1,60 +0,0 @@ -/* - * Copyright � 2017-2018 AT&T Intellectual Property. - * Modifications Copyright � 2018 IBM. - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - * - * - * Unless otherwise specified, all documentation contained herein is licensed - * under the Creative Commons License, Attribution 4.0 Intl. (the "License"); - * you may not use this documentation except in compliance with the License. - * You may obtain a copy of the License at - * - * https://creativecommons.org/licenses/by/4.0/ - * - * Unless required by applicable law or agreed to in writing, documentation - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. -*/ - -package org.onap.optf.cmso.optimizer.bean; - -public class CmsoVnfDetails { - private String node; - private String groupId; - - public CmsoVnfDetails() {} - - public CmsoVnfDetails(String groupId) { - this.groupId = groupId; - } - - public String getNode() { - return node; - } - - public void setNode(String node) { - this.node = node; - } - - public String getGroupId() { - return groupId; - } - - public void setGroupId(String groupId) { - this.groupId = groupId; - } - -} diff --git a/cmso-service/src/main/java/org/onap/optf/cmso/service/rs/CmsoOptimizerCallback.java b/cmso-service/src/main/java/org/onap/optf/cmso/service/rs/CmsoOptimizerCallback.java deleted file mode 100644 index b6b81e6..0000000 --- a/cmso-service/src/main/java/org/onap/optf/cmso/service/rs/CmsoOptimizerCallback.java +++ /dev/null @@ -1,64 +0,0 @@ -/* - * Copyright © 2017-2018 AT&T Intellectual Property. - * Modifications Copyright © 2018 IBM. - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - * - * - * Unless otherwise specified, all documentation contained herein is licensed - * under the Creative Commons License, Attribution 4.0 Intl. (the "License"); - * you may not use this documentation except in compliance with the License. - * You may obtain a copy of the License at - * - * https://creativecommons.org/licenses/by/4.0/ - * - * Unless required by applicable law or agreed to in writing, documentation - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. -*/ - -package org.onap.optf.cmso.service.rs; - -import io.swagger.annotations.Api; -import io.swagger.annotations.ApiOperation; -import io.swagger.annotations.ApiParam; -import io.swagger.annotations.ApiResponse; -import io.swagger.annotations.ApiResponses; -import javax.ws.rs.DefaultValue; -import javax.ws.rs.POST; -import javax.ws.rs.Path; -import javax.ws.rs.PathParam; -import javax.ws.rs.Produces; -import javax.ws.rs.core.MediaType; -import javax.ws.rs.core.Response; -import org.onap.optf.cmso.optimizer.bean.CmsoOptimizerResponse; - -@Api("CMSO Optimized Schedule API") -@Path("/{apiVersion}") -@Produces({MediaType.APPLICATION_JSON}) -public interface CmsoOptimizerCallback { - - // ****************************************************************** - @POST - @Path("/optimizerCallback") - @Produces({MediaType.APPLICATION_JSON}) - @ApiOperation(value = "", notes = "Processes optimizer results callback to a Pending Optimization schedule.") - @ApiResponses(value = {@ApiResponse(code = 200, message = "OK"), - @ApiResponse(code = 500, message = "Unexpected Runtime error", response = Exception.class)}) - public Response sniroCallback( - @ApiParam(value = "v1") @PathParam("apiVersion") @DefaultValue("v1") String apiVersion, - @ApiParam(value = "Return schedules > lastScheduleId") CmsoOptimizerResponse reponse); - -} diff --git a/cmso-service/src/main/java/org/onap/optf/cmso/service/rs/CmsoOptimizerCallbackImpl.java b/cmso-service/src/main/java/org/onap/optf/cmso/service/rs/CmsoOptimizerCallbackImpl.java deleted file mode 100644 index ffe00c5..0000000 --- a/cmso-service/src/main/java/org/onap/optf/cmso/service/rs/CmsoOptimizerCallbackImpl.java +++ /dev/null @@ -1,304 +0,0 @@ -/* - * Copyright © 2017-2019 AT&T Intellectual Property. - * Modifications Copyright © 2018 IBM. - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - * - * - * Unless otherwise specified, all documentation contained herein is licensed - * under the Creative Commons License, Attribution 4.0 Intl. (the "License"); - * you may not use this documentation except in compliance with the License. - * You may obtain a copy of the License at - * - * https://creativecommons.org/licenses/by/4.0/ - * - * Unless required by applicable law or agreed to in writing, documentation - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. -*/ - -package org.onap.optf.cmso.service.rs; - -import com.att.eelf.configuration.EELFLogger; -import com.att.eelf.configuration.EELFManager; -import com.fasterxml.jackson.databind.ObjectMapper; -import java.util.HashMap; -import java.util.List; -import java.util.Map; -import javax.servlet.http.HttpServletRequest; -import javax.transaction.Transactional; -import javax.ws.rs.core.Context; -import javax.ws.rs.core.Response; -import javax.ws.rs.core.Response.Status; -import javax.ws.rs.core.UriInfo; -import org.joda.time.DateTime; -import org.joda.time.format.DateTimeFormat; -import org.joda.time.format.ISODateTimeFormat; -import org.onap.optf.cmso.common.CmsoStatusEnum; -import org.onap.optf.cmso.common.DomainsEnum; -import org.onap.optf.cmso.common.LogMessages; -import org.onap.optf.cmso.common.exceptions.CmsoException; -import org.onap.optf.cmso.common.exceptions.CmsoNotFoundException; -import org.onap.optf.cmso.model.ChangeManagementGroup; -import org.onap.optf.cmso.model.ChangeManagementSchedule; -import org.onap.optf.cmso.model.Schedule; -import org.onap.optf.cmso.model.dao.ChangeManagementChangeWindowDao; -import org.onap.optf.cmso.model.dao.ChangeManagementDetailDao; -import org.onap.optf.cmso.model.dao.ChangeManagementGroupDao; -import org.onap.optf.cmso.model.dao.ChangeManagementScheduleDao; -import org.onap.optf.cmso.optimizer.bean.CmsoOptimizerResponse; -import org.onap.optf.cmso.optimizer.bean.CmsoSchedule; -import org.springframework.beans.factory.annotation.Autowired; -import org.springframework.stereotype.Controller; - -/** - * The Class CmsoOptimizerCallbackImpl. - */ -@Controller -public class CmsoOptimizerCallbackImpl extends BaseSchedulerServiceImpl implements CmsoOptimizerCallback { - private static EELFLogger log = EELFManager.getInstance().getLogger(CmsoOptimizerCallbackImpl.class); - private static EELFLogger debug = EELFManager.getInstance().getDebugLogger(); - private static EELFLogger errors = EELFManager.getInstance().getErrorLogger(); - - @Context - UriInfo uri; - - @Context - HttpServletRequest request; - - - @Autowired - ChangeManagementScheduleDao cmScheduleDao; - - @Autowired - ChangeManagementGroupDao cmGroupDao; - - @Autowired - ChangeManagementChangeWindowDao cmChangeWindowDao; - - @Autowired - ChangeManagementDetailDao cmDetailsDaoO; - - /** - * Sniro callback. - * - * @param apiVersion the api version - * @param sniroResponse the sniro response - * @return the response - */ - @Override - @Transactional - public Response sniroCallback(String apiVersion, CmsoOptimizerResponse sniroResponse) { - Response response = null; - log.info(LogMessages.PROCESS_OPTIMIZER_CALLBACK, "Received", request.getRemoteAddr(), ""); - log.info(LogMessages.OPTIMIZER_REQUEST, "Callback received", sniroResponse.getTransactionId(), - uri.getAbsolutePath().toString()); - try { - // Note that transaction ID and schedule ID are currently the same value. - - String transactionId = sniroResponse.getTransactionId(); - - // Synchronize this with transaction that scheduled the SNIRO optimization - // to ensure status updates are properly ordered. - // This is necessary only in the race condition where SNIRO callback comes - // before the SNIRO response is processed and the scheduling transaction is - // still in flight. - // Note that this may happen in loopback mode, but is not likely to happen with - // real SNIRO unless SNIRO changes to be synchronous and the callback comes before - // the response. - // If this lock times out, the schedule will remain in 'Optimization In - // Progress' and never complete. - Schedule schedule = scheduleDao.lockOneByTransactionId(transactionId); - - if (schedule == null) { - throw new CmsoNotFoundException(DomainsEnum.ChangeManagement.toString(), - "(OptimizerTransactionID=" + transactionId + ")"); - - } - CmsoStatusEnum status = CmsoStatusEnum.PendingApproval.fromString(schedule.getStatus()); - debug.debug("Status at time of SNIRO callback is " + status.toString()); - switch (status) { - // PendingSchedule may be a valid status in the cases where SNIRO async call - // returns before - // We have committed the OptimizationInProgress status - // The dispatch logic ensures that we only every dispatch once. - case OptimizationInProgress: - processSniroResponse(sniroResponse, schedule); - scheduleDao.save(schedule); - response = Response.ok().build(); - break; - default: - throw new CmsoException(Status.PRECONDITION_FAILED, LogMessages.OPTIMIZER_CALLBACK_STATE_ERROR, - CmsoStatusEnum.OptimizationInProgress.toString(), schedule.getStatus().toString()); - } - } catch (CmsoException e) { - errors.error(LogMessages.UNEXPECTED_EXCEPTION, e, e.getMessage()); - response = Response.status(e.getStatus()).entity(e.getRequestError()).build(); - } catch (Exception e) { - errors.error(LogMessages.UNEXPECTED_EXCEPTION, e, e.getMessage()); - response = Response.serverError().entity(e.getMessage()).build(); - } - return response; - } - - private void processSniroResponse(CmsoOptimizerResponse sniroResponse, Schedule schedule) { - try { - schedule.setOptimizerReturnDateTimeMillis(System.currentTimeMillis()); - schedule.setOptimizerStatus(sniroResponse.getRequestState()); - schedule.setOptimizerMessage(sniroResponse.getDescription()); - String scheduleId = sniroResponse.getScheduleId(); - ObjectMapper om = new ObjectMapper(); - CmsoSchedule[] scheduleArray = sniroResponse.getSchedule(); - if (scheduleArray != null && scheduleArray.length > 0) { - String scheduleString = om.writeValueAsString(scheduleArray); - schedule.setSchedule(scheduleString); - log.debug("scheduleId={0} schedule={1}", scheduleId, scheduleString); - for (CmsoSchedule sniroSchedule : sniroResponse.getSchedule()) { - String groupId = sniroSchedule.getGroupId(); - DateTime finishTime = convertDate(sniroSchedule.getFinishTime(), "finishTime"); - DateTime startTime = convertDate(sniroSchedule.getStartTime(), "startTime"); - ChangeManagementGroup group = cmGroupDao.findOneBySchedulesIdGroupId(schedule.getUuid(), groupId); - if (group == null) { - throw new CmsoException(Status.PRECONDITION_FAILED, - LogMessages.CHANGE_MANAGEMENT_GROUP_NOT_FOUND, schedule.getScheduleId(), groupId); - } - group.setStartTimeMillis(startTime.getMillis()); - group.setFinishTimeMillis(finishTime.getMillis()); - DateTime latestInstanceStartTime = - convertDate(sniroSchedule.getLatestInstanceStartTime(), "latestInstanceStartTime"); - group.setLastInstanceStartTimeMillis(latestInstanceStartTime.getMillis()); - cmGroupDao.save(group); - long totalDuration = - (group.getAdditionalDurationInSecs() + group.getNormalDurationInSecs()) * 1000L; - Map> startAndFinishTimeMap = new HashMap>(); - makeMap(startTime.getMillis(), latestInstanceStartTime.getMillis(), group.getConcurrencyLimit(), - totalDuration, sniroSchedule.getNode(), startAndFinishTimeMap); - for (String node : sniroSchedule.getNode()) { - processNode(schedule, group, node, startAndFinishTimeMap); - } - } - schedule.setStatus(CmsoStatusEnum.PendingApproval.toString()); - } else { - debug.debug("scheduleId={0} schedule=null status={1} ", scheduleId, schedule.getOptimizerStatus()); - schedule.setStatus(CmsoStatusEnum.OptimizationFailed.toString()); - } - } catch (CmsoException e) { - errors.error(LogMessages.UNEXPECTED_EXCEPTION, e, e.getMessage()); - schedule.setStatus(CmsoStatusEnum.OptimizationFailed.toString()); - schedule.setOptimizerStatus(e.getStatus().toString()); - schedule.setOptimizerMessage(e.getLocalizedMessage()); - } catch (Exception e) { - errors.error(LogMessages.UNEXPECTED_EXCEPTION, e, e.getMessage()); - schedule.setStatus(CmsoStatusEnum.OptimizationFailed.toString()); - schedule.setOptimizerStatus("Exception"); - schedule.setOptimizerMessage(e.getLocalizedMessage()); - } - } - - /** - * Make map. - * - * @param startTime the start time - * @param latestInstanceStartTime the latest instance start time - * @param concurrencyLimit the concurrency limit - * @param totalDuration the total duration - * @param nodeList the node list - * @param startAndFinishTimeMap the start and finish time map - * @throws CmsoException the CMS exception - */ - public static void makeMap(Long startTime, Long latestInstanceStartTime, int concurrencyLimit, long totalDuration, - List nodeList, Map> startAndFinishTimeMap) throws CmsoException { - Long nextStartTime = null; - Long nextFinishTime = null; - for (int nodeNumber = 0; nodeNumber < nodeList.size(); nodeNumber++) { - if (nodeNumber % concurrencyLimit == 0) { - if (nodeNumber == 0) { - nextStartTime = startTime; - } - else { - nextStartTime = nextStartTime + totalDuration; - } - if (nextStartTime > latestInstanceStartTime) { - throw new CmsoException(Status.BAD_REQUEST, LogMessages.UNABLE_TO_ALLOCATE_VNF_TIMESLOTS, - startTime.toString(), latestInstanceStartTime.toString(), String.valueOf(totalDuration), - String.valueOf(concurrencyLimit), String.valueOf(nodeList.size())); - } - nextFinishTime = nextStartTime + totalDuration; - } - Map map = new HashMap(); - map.put("startTime", nextStartTime); - map.put("finishTime", nextFinishTime); - String node = nodeList.get(nodeNumber); - startAndFinishTimeMap.put(node, map); - } - - } - - private void processNode(Schedule schedule, ChangeManagementGroup group, String node, - Map> startAndFinishTimeMap) throws CmsoException { - Map map = startAndFinishTimeMap.get(node); - ChangeManagementSchedule detail = cmScheduleDao.findOneByGroupUuidAndVnfName(group.getUuid(), node); - if (detail == null) { - throw new CmsoException(Status.NOT_FOUND, LogMessages.UNABLE_TO_LOCATE_SCHEDULE_DETAIL, - schedule.getScheduleId(), group.getGroupId(), node); - } - detail.setStartTimeMillis(map.get("startTime")); - detail.setFinishTimeMillis(map.get("finishTime")); - detail.setVnfId(""); - detail.setStatus(CmsoStatusEnum.PendingApproval.toString()); - cmScheduleDao.save(detail); - } - - /** - * Convert date. - * - * @param utcDate the utc date - * @param attrName the attr name - * @return the date time - * @throws CmsoException the CMS exception - */ - public static DateTime convertDate(String utcDate, String attrName) throws CmsoException { - try { - DateTime dateTime = DateTimeFormat.forPattern("yyyy-MM-dd HH:mm:ss").withZoneUTC().parseDateTime(utcDate); - if (dateTime != null) { - return dateTime; - } - } catch (Exception e) { - debug.debug(LogMessages.UNEXPECTED_EXCEPTION, e, e.getMessage()); - } - throw new CmsoException(Status.BAD_REQUEST, LogMessages.INVALID_ATTRIBUTE, attrName, utcDate); - } - - /** - * Convert ISO date. - * - * @param utcDate the utc date - * @param attrName the attr name - * @return the date time - * @throws CmsoException the CMS exception - */ - public static DateTime convertIsoDate(String utcDate, String attrName) throws CmsoException { - try { - DateTime dateTime = ISODateTimeFormat.dateTimeParser().parseDateTime(utcDate); - if (dateTime != null) { - return dateTime; - } - } catch (Exception e) { - debug.debug(LogMessages.UNEXPECTED_EXCEPTION, e, e.getMessage()); - } - throw new CmsoException(Status.BAD_REQUEST, LogMessages.INVALID_ATTRIBUTE, attrName, utcDate); - } - -} diff --git a/cmso-service/src/main/java/org/onap/optf/cmso/service/rs/CmsoServiceImpl.java b/cmso-service/src/main/java/org/onap/optf/cmso/service/rs/CmsoServiceImpl.java index b9d0b60..8a1633a 100644 --- a/cmso-service/src/main/java/org/onap/optf/cmso/service/rs/CmsoServiceImpl.java +++ b/cmso-service/src/main/java/org/onap/optf/cmso/service/rs/CmsoServiceImpl.java @@ -46,6 +46,7 @@ import javax.ws.rs.core.Response; import javax.ws.rs.core.Response.Status; import javax.ws.rs.core.UriInfo; import org.joda.time.DateTime; +import org.joda.time.format.ISODateTimeFormat; import org.onap.observations.Observation; import org.onap.optf.cmso.common.DomainsEnum; import org.onap.optf.cmso.common.LogMessages; @@ -244,8 +245,8 @@ public class CmsoServiceImpl extends CommonServiceImpl implements CmsoService { if (vdm.getChangeWindow() != null) { for (ChangeWindowMessage cwm : vdm.getChangeWindow()) { ChangeWindow cw = new ChangeWindow(); - DateTime start = CmsoOptimizerCallbackImpl.convertIsoDate(cwm.getStartTime(), "startTime"); - DateTime end = CmsoOptimizerCallbackImpl.convertIsoDate(cwm.getEndTime(), "endTime"); + DateTime start = convertIsoDate(cwm.getStartTime(), "startTime"); + DateTime end = convertIsoDate(cwm.getEndTime(), "endTime"); cw.setStartTime(start.toDate()); cw.setEndTime(end.toDate()); windows.add(cw); @@ -457,4 +458,24 @@ public class CmsoServiceImpl extends CommonServiceImpl implements CmsoService { } return msg; } + /** + * Convert ISO date. + * + * @param utcDate the utc date + * @param attrName the attr name + * @return the date time + * @throws CmsoException the CMS exception + */ + public static DateTime convertIsoDate(String utcDate, String attrName) throws CmsoException { + try { + DateTime dateTime = ISODateTimeFormat.dateTimeParser().parseDateTime(utcDate); + if (dateTime != null) { + return dateTime; + } + } catch (Exception e) { + debug.debug(LogMessages.UNEXPECTED_EXCEPTION, e, e.getMessage()); + } + throw new CmsoException(Status.BAD_REQUEST, LogMessages.INVALID_ATTRIBUTE, attrName, utcDate); + } + } diff --git a/cmso-service/src/main/java/org/onap/optf/cmso/test/loopback/SchedulerTestLoopbackServiceImpl.java b/cmso-service/src/main/java/org/onap/optf/cmso/test/loopback/SchedulerTestLoopbackServiceImpl.java index 9be348a..a834878 100644 --- a/cmso-service/src/main/java/org/onap/optf/cmso/test/loopback/SchedulerTestLoopbackServiceImpl.java +++ b/cmso-service/src/main/java/org/onap/optf/cmso/test/loopback/SchedulerTestLoopbackServiceImpl.java @@ -42,6 +42,7 @@ import org.joda.time.DateTime; import org.onap.observations.Observation; import org.onap.optf.cmso.common.LogMessages; import org.onap.optf.cmso.common.PropertiesManagement; +import org.onap.optf.cmso.common.exceptions.CmsoException; import org.onap.optf.cmso.optimizer.model.OptimizerElementInfo; import org.onap.optf.cmso.optimizer.model.OptimizerRequest; import org.onap.optf.cmso.optimizer.model.OptimizerResponse; @@ -49,7 +50,6 @@ import org.onap.optf.cmso.optimizer.model.OptimizerScheduleInfo; import org.onap.optf.cmso.optimizer.model.ScheduledElement; import org.onap.optf.cmso.optimizer.model.ScheduledElement.ScheduleType; import org.onap.optf.cmso.optimizer.model.UnScheduledElement; -import org.onap.optf.cmso.service.rs.CmsoOptimizerCallbackImpl; import org.onap.optf.cmso.service.rs.models.v2.ChangeWindow; import org.onap.optf.cmso.wf.bean.WfCmResponse200; import org.onap.optf.cmso.wf.bean.WfMsoRequestReferences; @@ -129,13 +129,12 @@ public class SchedulerTestLoopbackServiceImpl implements SchedulerTestLoopbackSe serialized = (serialized * totalDuration); } DateTime latestInstanceStartTime = startTime.plus(serialized); - DateTime finishTime = latestInstanceStartTime.plus(totalDuration); // Reformat request into a response setting the groups start finish // time based upon Map> startAndFinishTimeMap = new HashMap>(); try { - CmsoOptimizerCallbackImpl.makeMap(startTime.getMillis(), latestInstanceStartTime.getMillis(), + makeMap(startTime.getMillis(), latestInstanceStartTime.getMillis(), concurrencyLimit, totalDuration, nodeList, startAndFinishTimeMap); for (String node : nodes.keySet()) { Map map = startAndFinishTimeMap.get(node); @@ -197,5 +196,43 @@ public class SchedulerTestLoopbackServiceImpl implements SchedulerTestLoopbackSe return Response.ok().entity(response).build(); } + /** + * Make map. + * + * @param startTime the start time + * @param latestInstanceStartTime the latest instance start time + * @param concurrencyLimit the concurrency limit + * @param totalDuration the total duration + * @param nodeList the node list + * @param startAndFinishTimeMap the start and finish time map + * @throws CmsoException the CMS exception + */ + public static void makeMap(Long startTime, Long latestInstanceStartTime, int concurrencyLimit, long totalDuration, + List nodeList, Map> startAndFinishTimeMap) throws CmsoException { + Long nextStartTime = null; + Long nextFinishTime = null; + for (int nodeNumber = 0; nodeNumber < nodeList.size(); nodeNumber++) { + if (nodeNumber % concurrencyLimit == 0) { + if (nodeNumber == 0) { + nextStartTime = startTime; + } + else { + nextStartTime = nextStartTime + totalDuration; + } + if (nextStartTime > latestInstanceStartTime) { + throw new CmsoException(Status.BAD_REQUEST, LogMessages.UNABLE_TO_ALLOCATE_VNF_TIMESLOTS, + startTime.toString(), latestInstanceStartTime.toString(), String.valueOf(totalDuration), + String.valueOf(concurrencyLimit), String.valueOf(nodeList.size())); + } + nextFinishTime = nextStartTime + totalDuration; + } + Map map = new HashMap(); + map.put("startTime", nextStartTime); + map.put("finishTime", nextFinishTime); + String node = nodeList.get(nodeNumber); + startAndFinishTimeMap.put(node, map); + } + + } } -- cgit 1.2.3-korg