From 3f5135065af92499061fa33f8527895e93e8bd48 Mon Sep 17 00:00:00 2001 From: Jerry Flood Date: Mon, 25 Mar 2019 12:26:54 -0400 Subject: Commit 13 for Create Optimized Sched API Multiple commits required due to commit size limitation. Change-Id: If14235dd0e1f5cc788f03a02f6b4bc0c72d73975 Issue-ID: OPTFRA-458 Signed-off-by: Jerry Flood --- .../optf/cmso/service/rs/CommonServiceImpl.java | 423 +++++++++++++++++++++ .../org/onap/optf/cmso/service/rs/HealthCheck.java | 12 +- .../onap/optf/cmso/service/rs/HealthCheckImpl.java | 64 ++-- .../cmso/service/rs/models/ApprovalMessage.java | 74 +++- .../service/rs/models/ChangeWindowMessage.java | 24 +- .../cmso/service/rs/models/CmDetailsMessage.java | 6 +- .../cmso/service/rs/models/CmDomainDataEnum.java | 35 +- 7 files changed, 558 insertions(+), 80 deletions(-) create mode 100644 cmso-service/src/main/java/org/onap/optf/cmso/service/rs/CommonServiceImpl.java (limited to 'cmso-service') diff --git a/cmso-service/src/main/java/org/onap/optf/cmso/service/rs/CommonServiceImpl.java b/cmso-service/src/main/java/org/onap/optf/cmso/service/rs/CommonServiceImpl.java new file mode 100644 index 0000000..52a0928 --- /dev/null +++ b/cmso-service/src/main/java/org/onap/optf/cmso/service/rs/CommonServiceImpl.java @@ -0,0 +1,423 @@ +/* + * 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.core.JsonProcessingException; +import java.util.ArrayList; +import java.util.Date; +import java.util.HashMap; +import java.util.List; +import java.util.Map; +import java.util.UUID; +import javax.servlet.http.HttpServletRequest; +import javax.ws.rs.core.Response.Status; +import org.onap.optf.cmso.common.ApprovalStatusEnum; +import org.onap.optf.cmso.common.ApprovalTypesEnum; +import org.onap.optf.cmso.common.CMSStatusEnum; +import org.onap.optf.cmso.common.DomainsEnum; +import org.onap.optf.cmso.common.LogMessages; +import org.onap.optf.cmso.common.exceptions.CMSException; +import org.onap.optf.cmso.eventq.CMSQueueJob; +import org.onap.optf.cmso.model.ChangeManagementChangeWindow; +import org.onap.optf.cmso.model.ChangeManagementGroup; +import org.onap.optf.cmso.model.ChangeManagementSchedule; +import org.onap.optf.cmso.model.DomainData; +import org.onap.optf.cmso.model.ElementData; +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.model.dao.ElementDataDAO; +import org.onap.optf.cmso.model.dao.ScheduleDAO; +import org.onap.optf.cmso.model.dao.ScheduleQueryDAO; +import org.onap.optf.cmso.service.rs.models.ApprovalMessage; +import org.onap.optf.cmso.service.rs.models.v2.ChangeWindow; +import org.onap.optf.cmso.service.rs.models.v2.ElementInfo; +import org.onap.optf.cmso.service.rs.models.v2.NameValue; +import org.onap.optf.cmso.service.rs.models.v2.OptimizedScheduleMessage; +import org.onap.optf.cmso.service.rs.models.v2.SchedulingData; +import org.onap.optf.cmso.ticketmgt.TmClient; +import org.onap.optf.cmso.ticketmgt.bean.BuildCreateRequest; +import org.onap.optf.cmso.ticketmgt.bean.TmApprovalStatusEnum; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.core.env.Environment; +import org.springframework.stereotype.Controller; + +@Controller +public class CommonServiceImpl extends BaseSchedulerServiceImpl { + private static EELFLogger debug = EELFManager.getInstance().getDebugLogger(); + + @Autowired + CMSQueueJob qqJob; + + @Autowired + Environment env; + + @Autowired + ChangeManagementScheduleDAO cmScheduleDAO; + + @Autowired + ChangeManagementGroupDAO cmGroupDAO; + + @Autowired + ChangeManagementChangeWindowDAO cmChangeWindowDAO; + + @Autowired + ChangeManagementDetailDAO cmDetailsDAO; + + @Autowired + ScheduleQueryDAO scheduleQueryDAO; + + @Autowired + ScheduleDAO scheduleDAO; + + @Autowired + ElementDataDAO elementDataDAO; + + @Autowired + TmClient tmClient; + + @Autowired + BuildCreateRequest buildCreateRequest; + + + protected void createSchedule(OptimizedScheduleMessage scheduleMessage, String scheduleId, + HttpServletRequest request) throws CMSException, JsonProcessingException { + if (!scheduleMessage.getDomain().equals(DomainsEnum.ChangeManagement.toString())) { + throw new CMSException(Status.BAD_REQUEST, LogMessages.INVALID_ATTRIBUTE, "domain", + scheduleMessage.getDomain()); + } + if (scheduleMessage.getScheduleId() == null || !scheduleMessage.getScheduleId().equals(scheduleId)) { + throw new CMSException(Status.BAD_REQUEST, LogMessages.INVALID_ATTRIBUTE, "schedulerId", + scheduleMessage.getScheduleId()); + } + // Force the name to be = to the ID because there is no way fot the provide a + // name + scheduleMessage.setScheduleName(scheduleMessage.getScheduleId()); + + List domainData = marshallDomainData(scheduleMessage); + Map> groups = new HashMap<>(); + boolean immediate = validate(scheduleMessage, groups); + Schedule schedule = validateAndAddScheduleRequest(scheduleMessage, domainData); + if (immediate) { + createChangeManagementImmediate(schedule, scheduleMessage, groups); + + // Create automatic approval + ApprovalMessage am = new ApprovalMessage(); + am.setApprovalStatus(ApprovalStatusEnum.Accepted); + am.setApprovalType(ApprovalTypesEnum.Tier2); + am.setApprovalUserId(schedule.getUserId()); + processApproveScheduleRequest(schedule, am, domainData); + + } else { + createChangeManagement(schedule, scheduleMessage, groups); + } + } + + /** + * Returns whether this is an immediate request. + */ + private boolean validate(OptimizedScheduleMessage scheduleMessage, Map> groups) + throws CMSException { + SchedulingData info = scheduleMessage.getSchedulingData(); + boolean immediate = true; + if (info == null) { + throw new CMSException(Status.BAD_REQUEST, LogMessages.UNABLE_TO_PARSE_SCHEDULING_INFO); + } + + if (info.getAdditionalDurationInSeconds() == null) { + throw new CMSException(Status.BAD_REQUEST, LogMessages.MISSING_REQUIRED_ATTRIBUTE, + "additionalDurationInSeconds"); + } + if (info.getNormalDurationInSeconds() == null) { + throw new CMSException(Status.BAD_REQUEST, LogMessages.MISSING_REQUIRED_ATTRIBUTE, + "normalDurationInSeconds"); + } + if (info.getAdditionalDurationInSeconds() < 0) { + throw new CMSException(Status.BAD_REQUEST, LogMessages.INVALID_ATTRIBUTE, "additionalDurationInSeconds", + info.getAdditionalDurationInSeconds().toString()); + } + if (info.getNormalDurationInSeconds() < 1) { + throw new CMSException(Status.BAD_REQUEST, LogMessages.INVALID_ATTRIBUTE, "normalDurationInSeconds", + info.getNormalDurationInSeconds().toString()); + } + if (info.getChangeWindows() != null && info.getChangeWindows().size() > 0) { + for (ChangeWindow cw : info.getChangeWindows()) { + immediate = false; + if (cw.getStartTime() == null) { + throw new CMSException(Status.BAD_REQUEST, LogMessages.MISSING_REQUIRED_ATTRIBUTE, "startTime"); + } + if (cw.getEndTime() == null) { + throw new CMSException(Status.BAD_REQUEST, LogMessages.MISSING_REQUIRED_ATTRIBUTE, "endTime"); + } + Date start = cw.getStartTime(); + Date end = cw.getEndTime(); + if (!end.after(start)) { + throw new CMSException(Status.BAD_REQUEST, LogMessages.INVALID_CHANGE_WINDOW, start.toString(), + end.toString()); + } + } + if (info.getConcurrencyLimit() == null) { + throw new CMSException(Status.BAD_REQUEST, LogMessages.MISSING_REQUIRED_ATTRIBUTE, "concurrencyLimit"); + } + if (info.getConcurrencyLimit() < 1) { + throw new CMSException(Status.BAD_REQUEST, LogMessages.INVALID_ATTRIBUTE, "concurrencyLimit", + info.getConcurrencyLimit().toString()); + } + } + + if (info.getElements() == null || info.getElements().size() == 0) { + throw new CMSException(Status.BAD_REQUEST, LogMessages.MISSING_REQUIRED_ATTRIBUTE, "elements"); + } + + for (ElementInfo element : info.getElements()) { + if (element.getGroupId() == null || element.getGroupId().equals("")) { + element.setElementId("default"); + } + List groupedElements = groups.get(element.getGroupId()); + if (groupedElements == null) { + groupedElements = new ArrayList(); + groups.put(element.getGroupId(), groupedElements); + } + + groupedElements.add(element); + } + return immediate; + } + + private void createChangeManagement(Schedule schedule, OptimizedScheduleMessage scheduleMessage, + Map> groups) throws CMSException { + SchedulingData schedulingInfo = scheduleMessage.getSchedulingData(); + for (String groupId : groups.keySet()) { + + ChangeManagementGroup cmg = new ChangeManagementGroup(); + cmg.setUuid(UUID.randomUUID()); + cmg.setSchedulesUuid(schedule.getUuid()); + cmg.setGroupId(groupId); + cmg.setPolicyId(schedulingInfo.getPolicies().toString()); + cmg.setNormalDurationInSecs(schedulingInfo.getNormalDurationInSeconds()); + cmg.setAdditionalDurationInSecs(schedulingInfo.getAdditionalDurationInSeconds()); + cmg.setConcurrencyLimit(schedulingInfo.getConcurrencyLimit()); + cmGroupDAO.save(cmg); + for (ChangeWindow cw : schedulingInfo.getChangeWindows()) { + ChangeManagementChangeWindow cmcw = new ChangeManagementChangeWindow(); + cmcw.setUuid(UUID.randomUUID()); + cmcw.setChangeManagementGroupUuid(cmg.getUuid()); + cmcw.setStartTimeMillis(cw.getStartTime().getTime()); + cmcw.setFinishTimeMillis(cw.getEndTime().getTime()); + cmChangeWindowDAO.save(cmcw); + } + + for (ElementInfo element : groups.get(groupId)) { + ChangeManagementSchedule cms = new ChangeManagementSchedule(); + cms.setUuid(UUID.randomUUID()); + cms.setChangeManagementGroupUuid(cmg.getUuid()); + cms.setVnfName(element.getElementId()); + cms.setStatus(CMSStatusEnum.PendingSchedule.toString()); + cms.setRequest(element.getRequest().toString()); + cmScheduleDAO.save(cms); + // Save elementData + saveElementData(cms, element); + } + } + } + + private void saveElementData(ChangeManagementSchedule cms, ElementInfo element) { + List elementData = element.getElementData(); + if (elementData != null) { + for (NameValue nv : elementData) { + ElementData ed = new ElementData(); + ed.setUuid(UUID.randomUUID()); + ed.setChangeManagementSchedulesUuid(cms.getUuid()); + ed.setName(nv.getName()); + // TODO Save as JSON + ed.setValue(nv.getValue().toString()); + elementDataDAO.save(ed); + } + } + + } + + private void createChangeManagementImmediate(Schedule schedule, OptimizedScheduleMessage scheduleMessage, + Map> groups) throws CMSException, JsonProcessingException { + SchedulingData schedulingInfo = scheduleMessage.getSchedulingData(); + for (String groupId : groups.keySet()) { + ChangeManagementGroup cmg = new ChangeManagementGroup(); + cmg.setUuid(UUID.randomUUID()); + cmg.setSchedulesUuid(schedule.getUuid()); + cmg.setGroupId(groupId); + int duration = schedulingInfo.getNormalDurationInSeconds(); + int backout = schedulingInfo.getAdditionalDurationInSeconds(); + cmg.setStartTimeMillis(System.currentTimeMillis()); + cmg.setFinishTimeMillis(System.currentTimeMillis() + ((duration * 1000) + (backout * 1000))); + cmg.setNormalDurationInSecs(duration); + cmg.setAdditionalDurationInSecs(backout); + cmGroupDAO.save(cmg); + for (ElementInfo element : groups.get(groupId)) { + ChangeManagementSchedule cms = new ChangeManagementSchedule(); + cms.setUuid(UUID.randomUUID()); + cms.setChangeManagementGroupUuid(cmg.getUuid()); + cms.setVnfName(element.getElementId()); + cms.setRequest(element.getRequest().toString()); + cms.setStatus(CMSStatusEnum.PendingApproval.toString()); + cmScheduleDAO.save(cms); + } + schedule.setStatus(CMSStatusEnum.PendingApproval.toString()); + scheduleDAO.save(schedule); + } + } + + protected void deleteChangeManagement(Schedule schedule) throws CMSException { + List cmgs = cmGroupDAO.findBySchedulesID(schedule.getUuid()); + + for (ChangeManagementGroup cmg : cmgs) { + List schedules = cmScheduleDAO.findByChangeManagementGroupId(cmg.getUuid()); + for (ChangeManagementSchedule s : schedules) { + CMSStatusEnum currentState = CMSStatusEnum.Completed.fromString(s.getStatus()); + switch (currentState) { + case Scheduled: + if (s.getTmChangeId() != null && !s.getTmChangeId().equals("")) { + tmClient.cancelTicket(schedule, s, s.getTmChangeId()); + } + s.setStatus(CMSStatusEnum.Cancelled.toString()); + break; + case Triggered: + // Too late... + break; + default: + s.setStatus(CMSStatusEnum.Deleted.toString()); + } + cmScheduleDAO.save(s); + } + } + + } + + // + // Marshall commonData into DB DomainData + // No validation. + // + private List marshallDomainData(OptimizedScheduleMessage scheduleMessage) throws CMSException { + List domainData = scheduleMessage.getCommonData(); + List domainDataList = new ArrayList(); + for (NameValue nameValue : domainData) { + DomainData dd = new DomainData(); + dd.setName(nameValue.getName()); + Object obj = nameValue.getValue(); + String objString = obj.toString(); + // TODO: Store as json + dd.setValue(objString); + domainDataList.add(dd); + } + return domainDataList; + } + + + protected void processApproveScheduleRequest(Schedule sch, ApprovalMessage approval, List domainData) + throws CMSException { + sch = scheduleDAO.lockOne(sch.getUuid()); + String domain = DomainsEnum.ChangeManagement.toString(); + processApproval(sch, domain, approval); + if (sch.getStatus().equals(CMSStatusEnum.Accepted.toString())) { + openTickets(sch, domainData); + } + if (sch.getStatus().equals(CMSStatusEnum.Rejected.toString())) { + updateChangeManagementSchedules(sch, CMSStatusEnum.ApprovalRejected); + } + } + + private void openTickets(Schedule sch, List domainData) throws CMSException { + debug.debug("Entered openTickets scheduleId=" + sch.getScheduleId()); + + Integer maxvnfsperticket = env.getProperty("tm.vnfs.per.ticket", Integer.class, 1); + + List groups = cmGroupDAO.findBySchedulesID(sch.getUuid()); + for (ChangeManagementGroup group : groups) { + + List schedules = cmScheduleDAO.findByChangeManagementGroupId(group.getUuid()); + List> ticketList = new ArrayList>(); + List current = null; + for (ChangeManagementSchedule cms : schedules) { + if (current == null || current.size() == maxvnfsperticket) { + current = new ArrayList(); + ticketList.add(current); + } + current.add(cms); + } + for (List list : ticketList) { + openTicketForList(sch, group, list, domainData); + } + } + debug.debug("Exited openTickets scheduleId=" + sch.getScheduleId()); + } + + private void openTicketForList(Schedule schedule, ChangeManagementGroup group, List list, + List domainData) throws CMSException { + List vnfNames = new ArrayList<>(); + for (ChangeManagementSchedule cms : list) { + vnfNames.add(cms.getVnfName()); + } + + debug.debug("Calling createChangeTicket scheduleId=" + schedule.getScheduleId() + ", group=" + + group.getGroupId(), ", vnfNames=" + vnfNames); + String changeId = tmClient.createChangeTicket(schedule, group, vnfNames, domainData); + + // Pre-approve the ticket + for (ChangeManagementSchedule cms : list) { + cms.getTmApprovalStatus(); + cms.setTmChangeId(changeId); + cms.setTmApprovalStatus(TmApprovalStatusEnum.Approved.toString()); + // cms.setStatus(CMSStatusEnum.PendingApproval.toString()); + if (cms.getStartTimeMillis() == null) { + cms.setStatus(CMSStatusEnum.ScheduledImmediate.toString()); + } + else { + cms.setStatus(CMSStatusEnum.Scheduled.toString()); + } + cmScheduleDAO.save(cms); + } + schedule.setStatus(CMSStatusEnum.Scheduled.toString()); + scheduleDAO.save(schedule); + } + + private void updateChangeManagementSchedules(Schedule sch, CMSStatusEnum approvalrejected) { + debug.debug("Entered updateChangeManagementSchedules"); + List groups = cmGroupDAO.findBySchedulesID(sch.getUuid()); + for (ChangeManagementGroup group : groups) { + List schedules = cmScheduleDAO.findByChangeManagementGroupId(group.getUuid()); + for (ChangeManagementSchedule schedule : schedules) { + schedule.setStatus(approvalrejected.toString()); + cmScheduleDAO.save(schedule); + } + } + debug.debug("Exited updateChangeManagementSchedules"); + } + +} diff --git a/cmso-service/src/main/java/org/onap/optf/cmso/service/rs/HealthCheck.java b/cmso-service/src/main/java/org/onap/optf/cmso/service/rs/HealthCheck.java index fb69e31..981657c 100644 --- a/cmso-service/src/main/java/org/onap/optf/cmso/service/rs/HealthCheck.java +++ b/cmso-service/src/main/java/org/onap/optf/cmso/service/rs/HealthCheck.java @@ -31,6 +31,11 @@ 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.GET; import javax.ws.rs.Path; @@ -39,15 +44,8 @@ import javax.ws.rs.Produces; import javax.ws.rs.QueryParam; import javax.ws.rs.core.MediaType; import javax.ws.rs.core.Response; - import org.onap.optf.cmso.service.rs.models.HealthCheckMessage; -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; - @Api("CMSO Administration") @Path("/{apiVersion}") @Produces({MediaType.APPLICATION_JSON}) diff --git a/cmso-service/src/main/java/org/onap/optf/cmso/service/rs/HealthCheckImpl.java b/cmso-service/src/main/java/org/onap/optf/cmso/service/rs/HealthCheckImpl.java index 8e6b09e..6f60248 100644 --- a/cmso-service/src/main/java/org/onap/optf/cmso/service/rs/HealthCheckImpl.java +++ b/cmso-service/src/main/java/org/onap/optf/cmso/service/rs/HealthCheckImpl.java @@ -1,27 +1,27 @@ /* * 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. @@ -31,16 +31,14 @@ package org.onap.optf.cmso.service.rs; -import java.util.List; - +import com.att.eelf.configuration.EELFLogger; +import com.att.eelf.configuration.EELFManager; import javax.servlet.http.HttpServletRequest; import javax.ws.rs.core.Context; import javax.ws.rs.core.Response; import javax.ws.rs.core.UriInfo; - -import org.onap.optf.cmso.model.ApprovalType; import org.onap.optf.cmso.model.dao.ApprovalTypeDAO; -import org.onap.optf.cmso.optimizer.CMSOptimizerClient; +import org.onap.optf.cmso.optimizer.CmsoOptimizerClient; import org.onap.optf.cmso.service.rs.models.HealthCheckComponent; import org.onap.optf.cmso.service.rs.models.HealthCheckMessage; import org.onap.optf.cmso.sostatus.MsoStatusClient; @@ -49,24 +47,25 @@ import org.springframework.beans.factory.annotation.Autowired; import org.springframework.core.env.Environment; import org.springframework.stereotype.Controller; -import com.att.eelf.configuration.EELFLogger; -import com.att.eelf.configuration.EELFManager; - +/** + * @author jf9860 + * + */ @Controller public class HealthCheckImpl implements HealthCheck { private static EELFLogger debug = EELFManager.getInstance().getDebugLogger(); - @Context + @Context UriInfo uri; - + @Context HttpServletRequest request; - + @Autowired TmClient tmClient; @Autowired - CMSOptimizerClient optimizerClient; + CmsoOptimizerClient optimizerClient; @Autowired ApprovalTypeDAO approvalTypeDAO; @@ -77,6 +76,13 @@ public class HealthCheckImpl implements HealthCheck { @Autowired MsoStatusClient msoStatusClient; + /** + * Health check. + * + * @param apiVersion the api version + * @param checkInterfaces the check interfaces + * @return the response + */ @Override public Response healthCheck(String apiVersion, Boolean checkInterfaces) { debug.debug("Entered healthcheck"); @@ -89,30 +95,38 @@ public class HealthCheckImpl implements HealthCheck { addToHealthCheckMessage(hc, msoStatusClient.healthCheck()); addToHealthCheckMessage(hc, optimizerClient.healthCheck()); } - addToHealthCheckMessage(hc, this.healthCheck()); + addToHealthCheckMessage(hc, this.healthCheckCrap()); - if (hc.getHealthy()) + if (hc.getHealthy()) { response = Response.ok().entity(hc).build(); - else + } + else { response = Response.status(Response.Status.BAD_REQUEST).entity(hc).build(); + } return response; } private void addToHealthCheckMessage(HealthCheckMessage hc, HealthCheckComponent hcc) { - if (!hcc.getHealthy()) + if (!hcc.getHealthy()) { hc.setHealthy(false); + } hc.setHostname(System.getenv("HOSTNAME")); hc.addComponent(hcc); } - public HealthCheckComponent healthCheck() { + /** + * Health check. + * + * @return the health check component + */ + private HealthCheckComponent healthCheckCrap() { HealthCheckComponent hcc = new HealthCheckComponent(); hcc.setName("Scheduler Database"); String url = env.getProperty("spring.datasource.url"); hcc.setUrl(url); try { - List approvalTypes = approvalTypeDAO.findByDomain("HealthCheck"); + approvalTypeDAO.findByDomain("HealthCheck"); hcc.setHealthy(true); hcc.setStatus("OK"); } catch (Exception e) { diff --git a/cmso-service/src/main/java/org/onap/optf/cmso/service/rs/models/ApprovalMessage.java b/cmso-service/src/main/java/org/onap/optf/cmso/service/rs/models/ApprovalMessage.java index 0d43799..f038905 100644 --- a/cmso-service/src/main/java/org/onap/optf/cmso/service/rs/models/ApprovalMessage.java +++ b/cmso-service/src/main/java/org/onap/optf/cmso/service/rs/models/ApprovalMessage.java @@ -1,27 +1,27 @@ /* - * Copyright © 2017-2018 AT&T Intellectual Property. - * Modifications Copyright © 2018 IBM. - * + * 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. @@ -31,20 +31,20 @@ package org.onap.optf.cmso.service.rs.models; -import java.io.Serializable; -import java.sql.Timestamp; -import org.onap.optf.cmso.common.ApprovalStatusEnum; -import org.onap.optf.cmso.common.ApprovalTypesEnum; import com.att.eelf.configuration.EELFLogger; import com.att.eelf.configuration.EELFManager; import com.fasterxml.jackson.core.JsonProcessingException; import com.fasterxml.jackson.databind.ObjectMapper; import io.swagger.annotations.ApiModel; import io.swagger.annotations.ApiModelProperty; +import java.io.Serializable; +import java.sql.Timestamp; +import org.onap.optf.cmso.common.ApprovalStatusEnum; +import org.onap.optf.cmso.common.ApprovalTypesEnum; /** * The persistent class for the approval_types database table. - * + * */ @ApiModel(value = "Schedule Approval Request", description = "Request to accept or reject an optimized time slot.") public class ApprovalMessage implements Serializable { @@ -62,38 +62,84 @@ public class ApprovalMessage implements Serializable { private Timestamp approvalDateTime; + /** + * Gets the approval user id. + * + * @return the approval user id + */ public String getApprovalUserId() { return approvalUserId; } + /** + * Sets the approval user id. + * + * @param approvalUserId the new approval user id + */ public void setApprovalUserId(String approvalUserId) { this.approvalUserId = approvalUserId; } + /** + * Gets the approval status. + * + * @return the approval status + */ public ApprovalStatusEnum getApprovalStatus() { return approvalStatus; } + /** + * Sets the approval status. + * + * @param approvalStatus the new approval status + */ public void setApprovalStatus(ApprovalStatusEnum approvalStatus) { this.approvalStatus = approvalStatus; } + /** + * Gets the approval type. + * + * @return the approval type + */ public ApprovalTypesEnum getApprovalType() { return approvalType; } + /** + * Sets the approval type. + * + * @param approvalType the new approval type + */ public void setApprovalType(ApprovalTypesEnum approvalType) { this.approvalType = approvalType; } + /** + * Gets the approval date time. + * + * @return the approval date time + */ public Timestamp getApprovalDateTime() { return approvalDateTime; } + /** + * Sets the approval date time. + * + * @param approvalDateTime the new approval date time + */ public void setApprovalDateTime(Timestamp approvalDateTime) { this.approvalDateTime = approvalDateTime; } + /** + * To string. + * + * @return the string + */ + @Override public String toString() { ObjectMapper mapper = new ObjectMapper(); try { diff --git a/cmso-service/src/main/java/org/onap/optf/cmso/service/rs/models/ChangeWindowMessage.java b/cmso-service/src/main/java/org/onap/optf/cmso/service/rs/models/ChangeWindowMessage.java index 58aaa2e..071ab8f 100644 --- a/cmso-service/src/main/java/org/onap/optf/cmso/service/rs/models/ChangeWindowMessage.java +++ b/cmso-service/src/main/java/org/onap/optf/cmso/service/rs/models/ChangeWindowMessage.java @@ -1,27 +1,27 @@ /* - * Copyright © 2017-2018 AT&T Intellectual Property. - * Modifications Copyright © 2018 IBM. - * + * 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. @@ -31,16 +31,17 @@ package org.onap.optf.cmso.service.rs.models; -import java.io.Serializable; import com.att.eelf.configuration.EELFLogger; import com.att.eelf.configuration.EELFManager; import com.fasterxml.jackson.core.JsonProcessingException; import com.fasterxml.jackson.databind.ObjectMapper; import io.swagger.annotations.ApiModel; import io.swagger.annotations.ApiModelProperty; +import java.io.Serializable; @ApiModel(value = "Change Window", - description = "Time window within which the scheduler optimizer can schedule the changes for the group of NVFs") + description = "Time window within which the scheduler" + + " optimizer can schedule the changes for the group of NVFs") public class ChangeWindowMessage implements Serializable { private static final long serialVersionUID = 1L; private static EELFLogger log = EELFManager.getInstance().getLogger(ChangeWindowMessage.class); @@ -67,6 +68,7 @@ public class ChangeWindowMessage implements Serializable { this.endTime = endTime; } + @Override public String toString() { ObjectMapper mapper = new ObjectMapper(); try { diff --git a/cmso-service/src/main/java/org/onap/optf/cmso/service/rs/models/CmDetailsMessage.java b/cmso-service/src/main/java/org/onap/optf/cmso/service/rs/models/CmDetailsMessage.java index b021af9..a526065 100644 --- a/cmso-service/src/main/java/org/onap/optf/cmso/service/rs/models/CmDetailsMessage.java +++ b/cmso-service/src/main/java/org/onap/optf/cmso/service/rs/models/CmDetailsMessage.java @@ -1,6 +1,6 @@ /* - * Copyright © 2017-2018 AT&T Intellectual Property. - * Modifications Copyright © 2018 IBM. + * 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. @@ -31,11 +31,11 @@ package org.onap.optf.cmso.service.rs.models; +import io.swagger.annotations.ApiModel; import java.io.Serializable; import java.util.List; import org.onap.optf.cmso.model.ChangeManagementDetail; import org.onap.optf.cmso.model.Schedule; -import io.swagger.annotations.ApiModel; /** * The persistent class for the change_management_groups database table. diff --git a/cmso-service/src/main/java/org/onap/optf/cmso/service/rs/models/CmDomainDataEnum.java b/cmso-service/src/main/java/org/onap/optf/cmso/service/rs/models/CmDomainDataEnum.java index 675a8d9..570fc06 100644 --- a/cmso-service/src/main/java/org/onap/optf/cmso/service/rs/models/CmDomainDataEnum.java +++ b/cmso-service/src/main/java/org/onap/optf/cmso/service/rs/models/CmDomainDataEnum.java @@ -1,27 +1,27 @@ /* - * Copyright © 2017-2018 AT&T Intellectual Property. - * Modifications Copyright © 2018 IBM. - * + * 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. @@ -32,15 +32,10 @@ package org.onap.optf.cmso.service.rs.models; public enum CmDomainDataEnum { - WorkflowName(true), CallbackUrl(true), ServiceType(false), VnfType(false), SubscriberName(false), CallbackData( - true),; - private final Boolean required; - - private CmDomainDataEnum(boolean required) { - this.required = required; - } - - public boolean isRequired() { - return required; - } + Scheduler_RequestData, + @Deprecated + CallbackData, + @Deprecated + WorkflowName, + ; } -- cgit 1.2.3-korg