summaryrefslogtreecommitdiffstats
path: root/cmso-optimizer
diff options
context:
space:
mode:
authorJerry Flood <jflood@att.com>2019-03-28 15:41:57 -0400
committerJerry Flood <jflood@att.com>2019-03-28 16:02:41 -0400
commitfe8c1df09a3c74321831b40f6f953016d746aa61 (patch)
treeeb7be4e995899ff38a385219f37e952f47e48c02 /cmso-optimizer
parentb49d93de48e5404b1a17ddb1b2f4c3b432de9506 (diff)
Merge missing optimizer classes
Implement policy model. Issue-ID: OPTFRA-458 Change-Id: Ibb7f8535af910dff3ab9ce671b62fb826899058c Signed-off-by: Jerry Flood <jflood@att.com>
Diffstat (limited to 'cmso-optimizer')
-rw-r--r--cmso-optimizer/etc/config/optimizer.properties2
-rw-r--r--cmso-optimizer/pom.xml5
-rw-r--r--cmso-optimizer/src/main/java/org/onap/optf/cmso/optimizer/common/LogMessages.java1
-rw-r--r--cmso-optimizer/src/main/java/org/onap/optf/cmso/optimizer/service/rs/models/OptimizerRequest.java160
-rw-r--r--cmso-optimizer/src/main/java/org/onap/optf/cmso/optimizer/service/rs/models/OptimizerResponse.java110
-rw-r--r--cmso-optimizer/src/main/java/org/onap/optf/cmso/optimizer/service/rs/models/OptimizerScheduleInfo.java82
-rw-r--r--cmso-optimizer/src/main/java/org/onap/optf/cmso/optimizer/service/rs/models/PolicyInfo.java88
-rw-r--r--cmso-optimizer/src/main/java/org/onap/optf/cmso/optimizer/service/rs/models/ReferencedElementInfo.java100
-rw-r--r--cmso-optimizer/src/main/java/org/onap/optf/cmso/optimizer/service/rs/models/ScheduledElement.java127
-rw-r--r--cmso-optimizer/src/main/java/org/onap/optf/cmso/optimizer/service/rs/models/UnScheduledElement.java103
-rw-r--r--cmso-optimizer/src/main/resources/META-INF/spring.factories1
-rw-r--r--cmso-optimizer/src/main/resources/aaf/AAFUserRoles.properties1
-rw-r--r--cmso-optimizer/src/main/resources/aaf/org.onap.oof.cred.props11
-rw-r--r--cmso-optimizer/src/main/resources/aaf/org.onap.oof.keyfile27
-rw-r--r--cmso-optimizer/src/main/resources/aaf/org.onap.oof.location.props8
-rw-r--r--cmso-optimizer/src/main/resources/aaf/org.onap.oof.props14
-rw-r--r--cmso-optimizer/src/main/resources/aaf/permissions.properties2
-rw-r--r--cmso-optimizer/src/main/resources/application.properties49
-rw-r--r--cmso-optimizer/src/main/resources/banner.txt10
-rw-r--r--cmso-optimizer/src/main/resources/logmessages.properties1
20 files changed, 900 insertions, 2 deletions
diff --git a/cmso-optimizer/etc/config/optimizer.properties b/cmso-optimizer/etc/config/optimizer.properties
index 7dc75f5..8b8c6a1 100644
--- a/cmso-optimizer/etc/config/optimizer.properties
+++ b/cmso-optimizer/etc/config/optimizer.properties
@@ -45,3 +45,5 @@ logging.level.org.hibernate=TRACE
cmso.topology.create.request.url=http://127.0.0.1:7998/topology/v1/current
+
+cmso.local.policy.folder=data/policies \ No newline at end of file
diff --git a/cmso-optimizer/pom.xml b/cmso-optimizer/pom.xml
index afa75f2..8db7eb2 100644
--- a/cmso-optimizer/pom.xml
+++ b/cmso-optimizer/pom.xml
@@ -239,8 +239,9 @@
</dependency>
<dependency>
- <groupId>joda-time</groupId>
- <artifactId>joda-time</artifactId>
+ <groupId>org.scala-saddle</groupId>
+ <artifactId>google-rfc-2445</artifactId>
+ <version>20110304</version>
</dependency>
<dependency>
<groupId>org.apache.commons</groupId>
diff --git a/cmso-optimizer/src/main/java/org/onap/optf/cmso/optimizer/common/LogMessages.java b/cmso-optimizer/src/main/java/org/onap/optf/cmso/optimizer/common/LogMessages.java
index ce1c389..b61b02a 100644
--- a/cmso-optimizer/src/main/java/org/onap/optf/cmso/optimizer/common/LogMessages.java
+++ b/cmso-optimizer/src/main/java/org/onap/optf/cmso/optimizer/common/LogMessages.java
@@ -72,6 +72,7 @@ public enum LogMessages implements ObservationInterface {
TOPOLOGY_REQUEST("Topology request {0} for {1} URL: {1}", Status.OK, Level.INFO),
OPTIMIZER_REQUEST("OPtimizer request {0} for {1} Command: {1}", Status.OK, Level.INFO),
TICKETS_REQUEST("Tickets request {0} for {1} URL: {1}", Status.OK, Level.INFO),
+ UNSUPPORTED_PERIODIC_TIME("Unsupported periodic time from policy: {0}", Status.INTERNAL_SERVER_ERROR, Level.ERROR),
;
private final String defaultId;
diff --git a/cmso-optimizer/src/main/java/org/onap/optf/cmso/optimizer/service/rs/models/OptimizerRequest.java b/cmso-optimizer/src/main/java/org/onap/optf/cmso/optimizer/service/rs/models/OptimizerRequest.java
new file mode 100644
index 0000000..0961de5
--- /dev/null
+++ b/cmso-optimizer/src/main/java/org/onap/optf/cmso/optimizer/service/rs/models/OptimizerRequest.java
@@ -0,0 +1,160 @@
+/*
+ * 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.service.rs.models;
+
+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.util.ArrayList;
+import java.util.List;
+
+@ApiModel(value = "Optimizer Request",
+ description = "Request to provide an \"conflict free\" schedule for passed elements.")
+public class OptimizerRequest implements Serializable {
+ private static final long serialVersionUID = 1L;
+ private static EELFLogger log = EELFManager.getInstance().getLogger(OptimizerRequest.class);
+
+ @ApiModelProperty(value = "Unique Id of the request")
+ private String requestId;
+
+ @ApiModelProperty(value = "Concurrency limit for this request")
+ private Integer concurrencyLimit;
+
+ @ApiModelProperty(value = "Expected duration of normal change")
+ private Integer normalDuration;
+
+ @ApiModelProperty(value = "Additional duration for failed change")
+ private Integer additionalDuration;
+
+ @ApiModelProperty(value = "Implementation specific name value pairs.")
+ private List<NameValue> commonData;
+
+ @ApiModelProperty(value = "Lists of desired change windows to schedule the elements.")
+ private List<ChangeWindow> changeWindows = new ArrayList<>();
+
+ @ApiModelProperty(value = "List of the elements to schedule.")
+ private List<ElementInfo> elements = new ArrayList<>();
+
+ @ApiModelProperty(value = "List of the policies to control optimization.")
+ private List<PolicyInfo> policies = new ArrayList<>();
+
+ public String getRequestId() {
+ return requestId;
+ }
+
+
+ public void setRequestId(String requestId) {
+ this.requestId = requestId;
+ }
+
+
+ public List<PolicyInfo> getPolicies() {
+ return policies;
+ }
+
+
+ public void setPolicies(List<PolicyInfo> policies) {
+ this.policies = policies;
+ }
+
+
+ public List<NameValue> getCommonData() {
+ return commonData;
+ }
+
+
+ public void setCommonData(List<NameValue> commonData) {
+ this.commonData = commonData;
+ }
+
+
+ public List<ElementInfo> getElements() {
+ return elements;
+ }
+
+
+ public void setElements(List<ElementInfo> elements) {
+ this.elements = elements;
+ }
+
+
+ public List<ChangeWindow> getChangeWindows() {
+ return changeWindows;
+ }
+
+
+ public void setChangeWindows(List<ChangeWindow> changeWindows) {
+ this.changeWindows = changeWindows;
+ }
+
+
+ public Integer getConcurrencyLimit() {
+ return concurrencyLimit;
+ }
+
+
+ public void setConcurrencyLimit(Integer concurrencyLimit) {
+ this.concurrencyLimit = concurrencyLimit;
+ }
+
+
+ public Integer getNormalDuration() {
+ return normalDuration;
+ }
+
+
+ public void setNormalDuration(Integer normalDuration) {
+ this.normalDuration = normalDuration;
+ }
+
+
+ public Integer getAdditionalDuration() {
+ return additionalDuration;
+ }
+
+
+ public void setAdditionalDuration(Integer additionalDuration) {
+ this.additionalDuration = additionalDuration;
+ }
+
+
+ @Override
+ public String toString() {
+ ObjectMapper mapper = new ObjectMapper();
+ try {
+ return mapper.writeValueAsString(this);
+ } catch (JsonProcessingException e) {
+ log.debug("Error in toString()", e);
+ }
+ return "";
+ }
+
+}
diff --git a/cmso-optimizer/src/main/java/org/onap/optf/cmso/optimizer/service/rs/models/OptimizerResponse.java b/cmso-optimizer/src/main/java/org/onap/optf/cmso/optimizer/service/rs/models/OptimizerResponse.java
new file mode 100644
index 0000000..2f8e705
--- /dev/null
+++ b/cmso-optimizer/src/main/java/org/onap/optf/cmso/optimizer/service/rs/models/OptimizerResponse.java
@@ -0,0 +1,110 @@
+/*
+ * 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.service.rs.models;
+
+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.util.ArrayList;
+import java.util.List;
+
+@ApiModel(value = "Optimizer Response", description = "Response to optimizer request for the requested elements.")
+public class OptimizerResponse implements Serializable {
+ private static final long serialVersionUID = 1L;
+ private static EELFLogger log = EELFManager.getInstance().getLogger(OptimizerResponse.class);
+
+ public enum OptimizeScheduleStatus {
+ CREATED, PENDING_TOPOLOGY, PENDING_TICKETS, PENDING_OPTIMIZER, COMPLETED, FAILED, DELETED,
+ }
+
+ @ApiModelProperty(value = "Unique Id of the request")
+ private String requestId;
+
+ @ApiModelProperty(value = "Status of the optimization")
+ private OptimizeScheduleStatus status;
+
+ @ApiModelProperty(value = "Message for failed optimization")
+ private String errorMessage;
+
+
+ @ApiModelProperty(value = "List of schedules returned by the optimizer.")
+ private List<OptimizerScheduleInfo> schedules = new ArrayList<>();
+
+ public String getRequestId() {
+ return requestId;
+ }
+
+ public void setRequestId(String requestId) {
+ this.requestId = requestId;
+ }
+
+
+ public List<OptimizerScheduleInfo> getSchedules() {
+ return schedules;
+ }
+
+ public void setSchedules(List<OptimizerScheduleInfo> schedules) {
+ this.schedules = schedules;
+ }
+
+ public OptimizeScheduleStatus getStatus() {
+ return status;
+ }
+
+ public void setStatus(OptimizeScheduleStatus status) {
+ this.status = status;
+ }
+
+ public String getErrorMessage() {
+ return errorMessage;
+ }
+
+ public void setErrorMessage(String errorMessage) {
+ this.errorMessage = errorMessage;
+ }
+
+ /**
+ * To string.
+ *
+ * @return the string
+ */
+ @Override
+ public String toString() {
+ ObjectMapper mapper = new ObjectMapper();
+ try {
+ return mapper.writeValueAsString(this);
+ } catch (JsonProcessingException e) {
+ log.debug("Error in toString()", e);
+ }
+ return "";
+ }
+
+}
diff --git a/cmso-optimizer/src/main/java/org/onap/optf/cmso/optimizer/service/rs/models/OptimizerScheduleInfo.java b/cmso-optimizer/src/main/java/org/onap/optf/cmso/optimizer/service/rs/models/OptimizerScheduleInfo.java
new file mode 100644
index 0000000..37bb404
--- /dev/null
+++ b/cmso-optimizer/src/main/java/org/onap/optf/cmso/optimizer/service/rs/models/OptimizerScheduleInfo.java
@@ -0,0 +1,82 @@
+/*******************************************************************************
+ *
+ * Copyright © 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.
+ *
+ *
+ * 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.service.rs.models;
+
+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.util.ArrayList;
+import java.util.List;
+
+@ApiModel(value = "Optimizer Schedule Info", description = "Schedule Information returned from optimizer request.")
+public class OptimizerScheduleInfo implements Serializable {
+ private static final long serialVersionUID = 1L;
+ private static EELFLogger log = EELFManager.getInstance().getLogger(OptimizerScheduleInfo.class);
+
+ @ApiModelProperty(value = "Lists of elements with start times.")
+ private List<ScheduledElement> scheduledElements = new ArrayList<>();
+
+ @ApiModelProperty(value = "Lists of elements that were not able to be scheduled.")
+ private List<UnScheduledElement> unScheduledElements = new ArrayList<>();
+
+
+ public List<ScheduledElement> getScheduledElements() {
+ return scheduledElements;
+ }
+
+
+ public void setScheduledElements(List<ScheduledElement> scheduledElements) {
+ this.scheduledElements = scheduledElements;
+ }
+
+
+ public List<UnScheduledElement> getUnScheduledElements() {
+ return unScheduledElements;
+ }
+
+
+ public void setUnScheduledElements(List<UnScheduledElement> unScheduledElements) {
+ this.unScheduledElements = unScheduledElements;
+ }
+
+
+ @Override
+ public String toString() {
+ ObjectMapper mapper = new ObjectMapper();
+ try {
+ return mapper.writeValueAsString(this);
+ } catch (JsonProcessingException e) {
+ log.debug("Error in toString()", e);
+ }
+ return "";
+ }
+}
diff --git a/cmso-optimizer/src/main/java/org/onap/optf/cmso/optimizer/service/rs/models/PolicyInfo.java b/cmso-optimizer/src/main/java/org/onap/optf/cmso/optimizer/service/rs/models/PolicyInfo.java
new file mode 100644
index 0000000..524571a
--- /dev/null
+++ b/cmso-optimizer/src/main/java/org/onap/optf/cmso/optimizer/service/rs/models/PolicyInfo.java
@@ -0,0 +1,88 @@
+/*******************************************************************************
+ *
+ * Copyright © 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.
+ *
+ *
+ * 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.service.rs.models;
+
+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.util.ArrayList;
+import java.util.List;
+
+@ApiModel(value = "Supported Policy Information", description = "Policy Information returned from get policies API.")
+public class PolicyInfo implements Serializable {
+ private static final long serialVersionUID = 1L;
+ private static EELFLogger log = EELFManager.getInstance().getLogger(PolicyInfo.class);
+
+ @ApiModelProperty(value = "Policy name")
+ private String policyName;
+
+ @ApiModelProperty(value = "Policy description")
+ private String policyDescription;
+
+ @ApiModelProperty(value = "Named values to modify/override policy attributes.")
+ public List<NameValue> policyModifiers = new ArrayList<>();
+
+ public String getPolicyName() {
+ return policyName;
+ }
+
+ public void setPolicyName(String policyName) {
+ this.policyName = policyName;
+ }
+
+ public String getPolicyDescription() {
+ return policyDescription;
+ }
+
+ public void setPolicyDescription(String policyDescription) {
+ this.policyDescription = policyDescription;
+ }
+
+ public List<NameValue> getPolicyModifiers() {
+ return policyModifiers;
+ }
+
+ public void setPolicyModifiers(List<NameValue> policyModifiers) {
+ this.policyModifiers = policyModifiers;
+ }
+
+ @Override
+ public String toString() {
+ ObjectMapper mapper = new ObjectMapper();
+ try {
+ return mapper.writeValueAsString(this);
+ } catch (JsonProcessingException e) {
+ log.debug("Error in toString()", e);
+ }
+ return "";
+ }
+}
diff --git a/cmso-optimizer/src/main/java/org/onap/optf/cmso/optimizer/service/rs/models/ReferencedElementInfo.java b/cmso-optimizer/src/main/java/org/onap/optf/cmso/optimizer/service/rs/models/ReferencedElementInfo.java
new file mode 100644
index 0000000..97210b1
--- /dev/null
+++ b/cmso-optimizer/src/main/java/org/onap/optf/cmso/optimizer/service/rs/models/ReferencedElementInfo.java
@@ -0,0 +1,100 @@
+/*******************************************************************************
+ *
+ * Copyright © 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.
+ *
+ *
+ * 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.service.rs.models;
+
+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.util.ArrayList;
+import java.util.List;
+
+@ApiModel(value = "Topology Related Element", description = "Element Information returned from TopologyRequuest.")
+public class ReferencedElementInfo implements Serializable {
+ private static final long serialVersionUID = 1L;
+ private static EELFLogger log = EELFManager.getInstance().getLogger(ReferencedElementInfo.class);
+
+ @ApiModelProperty(value = "Element identifier")
+ private String elementId;
+
+ @ApiModelProperty(value = "Location information for the element.")
+ private ElementLocation elementLocation;
+
+ @ApiModelProperty(value = "Related elements only. Element ids of the element(s) ")
+ private List<String> referencingElements;
+
+ @ApiModelProperty(value = "Implementation specific element data.")
+ public List<NameValue> elementData = new ArrayList<>();
+
+ public String getElementId() {
+ return elementId;
+ }
+
+ public void setElementId(String elementId) {
+ this.elementId = elementId;
+ }
+
+ public ElementLocation getElementLocation() {
+ return elementLocation;
+ }
+
+ public void setElementLocation(ElementLocation elementLocation) {
+ this.elementLocation = elementLocation;
+ }
+
+
+ public List<String> getRelatedElements() {
+ return referencingElements;
+ }
+
+ public void setRelatedElements(List<String> relatedElements) {
+ this.referencingElements = relatedElements;
+ }
+
+ public List<NameValue> getElementData() {
+ return elementData;
+ }
+
+ public void setElementData(List<NameValue> elementData) {
+ this.elementData = elementData;
+ }
+
+ @Override
+ public String toString() {
+ ObjectMapper mapper = new ObjectMapper();
+ try {
+ return mapper.writeValueAsString(this);
+ } catch (JsonProcessingException e) {
+ log.debug("Error in toString()", e);
+ }
+ return "";
+ }
+}
diff --git a/cmso-optimizer/src/main/java/org/onap/optf/cmso/optimizer/service/rs/models/ScheduledElement.java b/cmso-optimizer/src/main/java/org/onap/optf/cmso/optimizer/service/rs/models/ScheduledElement.java
new file mode 100644
index 0000000..b3561dd
--- /dev/null
+++ b/cmso-optimizer/src/main/java/org/onap/optf/cmso/optimizer/service/rs/models/ScheduledElement.java
@@ -0,0 +1,127 @@
+/*******************************************************************************
+ *
+ * Copyright © 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.
+ *
+ *
+ * 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.service.rs.models;
+
+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.util.Date;
+import org.springframework.format.annotation.DateTimeFormat;
+
+@ApiModel(value = "Scheduled Element", description = "Scheduled element returned by the optimizer.")
+public class ScheduledElement implements Serializable {
+ private static final long serialVersionUID = 1L;
+ private static EELFLogger log = EELFManager.getInstance().getLogger(ScheduledElement.class);
+
+ public enum ScheduleType {
+ UNKNOWN, GROUP_DISPATCH, INDIVIDUAL,
+ }
+
+ @ApiModelProperty(value = "Element identifier")
+ private String elementId;
+
+ @ApiModelProperty(value = "Group identifier")
+ private String groupId;
+
+ private ScheduleType scheduleType = ScheduleType.UNKNOWN;
+
+ @ApiModelProperty(value = "Earliest time for which changes may begin.")
+ @DateTimeFormat(pattern = "yyyy-MM-dd'T'hh:mm:ss'Z'")
+ private Date startTime;
+
+ @ApiModelProperty(value = "Latest time by which all changes must be completed.")
+ @DateTimeFormat(pattern = "yyyy-MM-dd'T'hh:mm:ss'Z'")
+ private Date endTime;
+
+ @ApiModelProperty(value = "Expected duration of change in seconds.")
+ private Long durationSeconds;
+
+ public String getElementId() {
+ return elementId;
+ }
+
+ public void setElementId(String elementId) {
+ this.elementId = elementId;
+ }
+
+
+ public String getGroupId() {
+ return groupId;
+ }
+
+ public void setGroupId(String groupId) {
+ this.groupId = groupId;
+ }
+
+ public ScheduleType getScheduleType() {
+ return scheduleType;
+ }
+
+ public void setScheduleType(ScheduleType scheduleType) {
+ this.scheduleType = scheduleType;
+ }
+
+ public Date getStartTime() {
+ return startTime;
+ }
+
+ public void setStartTime(Date startTime) {
+ this.startTime = startTime;
+ }
+
+ public Date getEndTime() {
+ return endTime;
+ }
+
+ public void setEndTime(Date endTime) {
+ this.endTime = endTime;
+ }
+
+ public Long getDurationSeconds() {
+ return durationSeconds;
+ }
+
+ public void setDurationSeconds(Long durationSeconds) {
+ this.durationSeconds = durationSeconds;
+ }
+
+ @Override
+ public String toString() {
+ ObjectMapper mapper = new ObjectMapper();
+ try {
+ return mapper.writeValueAsString(this);
+ } catch (JsonProcessingException e) {
+ log.debug("Error in toString()", e);
+ }
+ return "";
+ }
+}
diff --git a/cmso-optimizer/src/main/java/org/onap/optf/cmso/optimizer/service/rs/models/UnScheduledElement.java b/cmso-optimizer/src/main/java/org/onap/optf/cmso/optimizer/service/rs/models/UnScheduledElement.java
new file mode 100644
index 0000000..775c760
--- /dev/null
+++ b/cmso-optimizer/src/main/java/org/onap/optf/cmso/optimizer/service/rs/models/UnScheduledElement.java
@@ -0,0 +1,103 @@
+/*******************************************************************************
+ *
+ * Copyright © 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.
+ *
+ *
+ * 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.service.rs.models;
+
+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.util.ArrayList;
+import java.util.List;
+
+@ApiModel(value = "Unscheduled Element", description = "Scheduled element returned by the optimizer.")
+public class UnScheduledElement implements Serializable {
+ private static final long serialVersionUID = 1L;
+ private static EELFLogger log = EELFManager.getInstance().getLogger(UnScheduledElement.class);
+
+ public enum NotScheduledReason {
+ ConcurrencyConstraint, AvailabilityConstraint, Other,
+ }
+
+ @ApiModelProperty(value = "Element identifier")
+ private String elementId;
+
+ @ApiModelProperty(value = "Group identifier")
+ private String groupId;
+
+ @ApiModelProperty(value = "List of reasons not able to schedule this element.")
+ private List<NotScheduledReason> notScheduledReaons = new ArrayList<>();
+
+ @ApiModelProperty(value = "List of messages not able to schedule this element.")
+ private List<String> notScheduledMessages = new ArrayList<>();
+
+ public String getElementId() {
+ return elementId;
+ }
+
+ public void setElementId(String elementId) {
+ this.elementId = elementId;
+ }
+
+ public List<NotScheduledReason> getNotScheduledReaons() {
+ return notScheduledReaons;
+ }
+
+ public void setNotScheduledReaons(List<NotScheduledReason> notScheduledReaons) {
+ this.notScheduledReaons = notScheduledReaons;
+ }
+
+ public List<String> getNotScheduledMessages() {
+ return notScheduledMessages;
+ }
+
+ public void setNotScheduledMessages(List<String> notScheduledMessages) {
+ this.notScheduledMessages = notScheduledMessages;
+ }
+
+ public String getGroupId() {
+ return groupId;
+ }
+
+ public void setGroupId(String groupId) {
+ this.groupId = groupId;
+ }
+
+ @Override
+ public String toString() {
+ ObjectMapper mapper = new ObjectMapper();
+ try {
+ return mapper.writeValueAsString(this);
+ } catch (JsonProcessingException e) {
+ log.debug("Error in toString()", e);
+ }
+ return "";
+ }
+}
diff --git a/cmso-optimizer/src/main/resources/META-INF/spring.factories b/cmso-optimizer/src/main/resources/META-INF/spring.factories
new file mode 100644
index 0000000..c0b4a01
--- /dev/null
+++ b/cmso-optimizer/src/main/resources/META-INF/spring.factories
@@ -0,0 +1 @@
+org.springframework.boot.env.EnvironmentPostProcessor=org.onap.optf.cmso.CmsoEnvironmentPostProcessor \ No newline at end of file
diff --git a/cmso-optimizer/src/main/resources/aaf/AAFUserRoles.properties b/cmso-optimizer/src/main/resources/aaf/AAFUserRoles.properties
new file mode 100644
index 0000000..e7fc221
--- /dev/null
+++ b/cmso-optimizer/src/main/resources/aaf/AAFUserRoles.properties
@@ -0,0 +1 @@
+/**=org.onap.oof.access|*|get ALL \ No newline at end of file
diff --git a/cmso-optimizer/src/main/resources/aaf/org.onap.oof.cred.props b/cmso-optimizer/src/main/resources/aaf/org.onap.oof.cred.props
new file mode 100644
index 0000000..21945b8
--- /dev/null
+++ b/cmso-optimizer/src/main/resources/aaf/org.onap.oof.cred.props
@@ -0,0 +1,11 @@
+############################################################
+# Properties Generated by AT&T Certificate Manager
+# by root
+# on 2019-02-15T21:01:19.868+0000
+# @copyright 2016, AT&T
+############################################################
+aaf_id=oof@oof.onap.org
+aaf_password=demo123456!
+cadi_keyfile=src/main/resources/aaf/org.onap.oof.keyfile
+cadi_truststore=src/main/resources/aaf/truststoreONAPall.jks
+#cadi_truststore_password=enc:erNqS33_5xn_bwcaroba7NvYfPLpPUYxqzw3rdwGTY7jbnygOTyQ-R6dpSC_3iPOomp-rqZkHgMGImiUk9DFPr
diff --git a/cmso-optimizer/src/main/resources/aaf/org.onap.oof.keyfile b/cmso-optimizer/src/main/resources/aaf/org.onap.oof.keyfile
new file mode 100644
index 0000000..f85a567
--- /dev/null
+++ b/cmso-optimizer/src/main/resources/aaf/org.onap.oof.keyfile
@@ -0,0 +1,27 @@
+liD-IR8Y1MHqPDTUqq3AaTtqnWn5jCpfIRBlyi6xY4A0fbQz8ZPlTZPHkshRt0dHdST3R7TIvTyQ
+JpTCeBNBu2df3vBbUzsN0rIpPG9TGjzmE7cRu4V4kfefSqsIj-S7OTAaWaWpwGWJYLLCB2sQALkS
+f68VWdupUEw3g9jqCU1QzjKOnLGvhlp6Qrc1xG4Z5Ar8WERw-C3DqTWUKANoEvjWkvH2rAywzj93
+pmspvd5fQfH1rp1ACNvnPrRb_oYNfwPrNpE7Sb4LvM1muoiKMDF64IDO0TkxhjHZ9wpJgVsnowby
+qmokqf39dMRRk3S1IEpOiBGyLS_885JDj_XJKYRQsjvkTzjpFJ7wE2-HDZEVWCITvtS9-Xorm5TI
+3iU4rjMDew5fkBnjoKuSOS7Lksva4ouZOCiUkDos1jAJ5XMDEQm4BcPHtcW6PpC602-qRcgnNjjP
+wOPdF7hCm27ZTai3lAtNGByR7oBr9r5Uma-soORFvg8drV8Rgh0lax-poFVhoEH7RhKPIzYpSco9
+jnpURzi_epTjAhjjup-erTv2GAIllKsSEHZLbfsFWlNUZTOx58PSB0jBN5m_8HxTyNm0zsm0Cb7U
+KsjPduQ5ZblsfRIJwqpOBXoof7WerKReMZSOdgjZUNueiuEImVH9_SYOdKZhkluSi4yfEtme7CCP
+kZ2JhdiT5km3SeonalhU2MUsx60krxyQ1mnjI4jS9QagUME4mujdvM_L7mtjcPZVSfXUn49whakE
+J-NQV6q2iZgN2IxsT_uCnlZYwnE5i-IbQkQAEu13m6ETsMmf0cwPnKaSwRhb8G48EkJhTL-GP9Z0
+-EsIKT7lQt7kfX-mmNoEirTg9gQAaN3uxLmdHvXpeJdlETnnaLYYJJ3h-SL0e_5Yz2SpdsEwZ3Bk
+PtR-QvlYKDhG1nhPOna65ctCzn81PZOUP3lsO6MSTOK6D6Taxfh1TYEBAvzCP0BfFBodw4lSglFP
+I5IfdiJmomTGARa36nC_O5YzH_jBWLQrgd2gxI5H5bB-5zqzu79SGX9o2_LRVY_LVV0BmI3xSYOI
+vziYYC1XyTY6blfdiOM5a5KjraErxSTEFZVFrsx4OQ_dLA0woVtixawrIy1rgfQr49U1oIRe8BgN
+j3eis_UQAbPbmdbEe1qtXnvi6T7trHskzt6K-vTgo5ITJkr-F2Sds_QgNdaFBGuES6X5RwRGlbHT
+Tl_M8Ja_1K-RMNKJRssoRTKstpwnrhk9IcoSwYcLykbDLgeC0mhSMHOOuWv1RGRaZdzObc5YA1eB
+idQmzy5xAHzNxPHHrB-fpjFJRYv_QZY9qZcGvP58d6bHO0upxbj-BBt9zfc7Qt0JLU6EAdYbW5TI
+2v4JImikrx6KvtoK8vcjJMTDAanTVB31J65tat0rq9wYKxUdjBJLzkT3psYs_DRtYQc0i02YTD7t
+dWya0-3p1Yrt0em3XGb8JAh2PA3BsQKmvKAOc054wf_B8n8saxSFw1WQL30vU5c4-Z_p53HfaUYd
+Qg7DZskzgwBRy48sLJNCrn81RtxXfQP1XtPEZs-AAlTUslHoUdoQ1cwrYEgkNT1cjk6sLI_oKSK-
+dDICBnlYLrZRBS3sH8K38WaIh1WRY6vbGVDs1tUectUpng_-Khavd0Crw7D_CE6T7Rnfcn0pnTV-
+HW1PIXejFsONQn-2c3a9HZ-v6Hg4JL6UWm-qgBPC5118ymO0LfmrviAFAC6Wt3WFiNzrvx9Jggus
+lE0qvLVfkQVZXAy-hSPHlYZmtxk5voVsf60qPoDN2-NdpWz62M9PrXd_A03YGxzt0G6J4VXExRES
+xqLeGNGB496AfX_vEub97sR8xcbbUXsyt12uVnygifGyND60coikaKrMktv2OLOLEl8AudLp0ZNA
+oOoYJZqfUnQqaLt0dNmNa5OtzYjf7f6bYX0V8XLTHlFqZ6QzqYGFMPNhDYjqtet6d--Q8t7_5S5C
+RfXP8Wh8CjbEh2_rsr9rvy1nhM_Cptxc0BFXcS5Dt_R4vjd2G4B_LEC4Hy1s_rZThzUVxRCl \ No newline at end of file
diff --git a/cmso-optimizer/src/main/resources/aaf/org.onap.oof.location.props b/cmso-optimizer/src/main/resources/aaf/org.onap.oof.location.props
new file mode 100644
index 0000000..d4a48df
--- /dev/null
+++ b/cmso-optimizer/src/main/resources/aaf/org.onap.oof.location.props
@@ -0,0 +1,8 @@
+############################################################
+# Properties Generated by AT&T Certificate Manager
+# by root
+# on 2019-02-15T21:01:19.861+0000
+# @copyright 2016, AT&T
+############################################################
+cadi_latitude=0.00
+cadi_longitude=0.00
diff --git a/cmso-optimizer/src/main/resources/aaf/org.onap.oof.props b/cmso-optimizer/src/main/resources/aaf/org.onap.oof.props
new file mode 100644
index 0000000..766c354
--- /dev/null
+++ b/cmso-optimizer/src/main/resources/aaf/org.onap.oof.props
@@ -0,0 +1,14 @@
+############################################################
+# Properties Generated by AT&T Certificate Manager
+# by root
+# on 2019-02-15T21:01:19.866+0000
+# @copyright 2016, AT&T
+############################################################
+aaf_id=oof@oof.onap.org
+aaf_locate_url=https://aaf-onap-test.osaaf.org:8095
+aaf_url=https://AAF_LOCATE_URL/AAF_NS.service:2.1
+cadi_etc_dir=etc/config
+cadi_latitude=0.00
+cadi_longitude=0.00
+cadi_prop_files=src/main/resources/aaf/org.onap.oof.location.props;src/main/resources/aaf/org.onap.oof.cred.props
+cm_url=https://AAF_LOCATE_URL/AAF_NS.cm:2.1
diff --git a/cmso-optimizer/src/main/resources/aaf/permissions.properties b/cmso-optimizer/src/main/resources/aaf/permissions.properties
new file mode 100644
index 0000000..85d3e3c
--- /dev/null
+++ b/cmso-optimizer/src/main/resources/aaf/permissions.properties
@@ -0,0 +1,2 @@
+permission.type=org.onap.oof
+permission.instance=* \ No newline at end of file
diff --git a/cmso-optimizer/src/main/resources/application.properties b/cmso-optimizer/src/main/resources/application.properties
new file mode 100644
index 0000000..a22df14
--- /dev/null
+++ b/cmso-optimizer/src/main/resources/application.properties
@@ -0,0 +1,49 @@
+#-------------------------------------------------------------------------------
+# ============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=================================================
+#
+#-------------------------------------------------------------------------------
+
+info.build.artifact=@project.artifactId@
+info.build.name=@project.name@
+info.build.description=@project.description@
+info.build.version=@project.version@
+
+spring.jersey.type=filter
+spring.mvc.urls=swagger,docs,prometheus
+server.servlet.context-path=/optimizer
+spring.main.allow-bean-definition-overriding=true
+
+#This property is used to set the Tomcat connector attributes.developers can define multiple attributes separated by comma
+#tomcat.connector.attributes=allowTrace-true
+
+#The max number of active threads in this pool
+server.tomcat.max-threads=200
+
+#The minimum number of threads always kept alive
+server.tomcat.min-spare-threads=25
+
+# External API port
+server.port=7997
+
+kubernetes.namespace=org.onap.optf.cmso
+
+
+com.att.eelf.logging.file=logback.xml
+com.att.eelf.logging.path=
+
+logging.config=
+spring.profiles.active=proprietary-auth
diff --git a/cmso-optimizer/src/main/resources/banner.txt b/cmso-optimizer/src/main/resources/banner.txt
new file mode 100644
index 0000000..ecb0dd9
--- /dev/null
+++ b/cmso-optimizer/src/main/resources/banner.txt
@@ -0,0 +1,10 @@
+#-----------------------------------------------------------
+ ____ ____ ____________ ________ ________ ____
+ / __ \/ __ \/_ __/ ____/ / ____/ |/ / ___// __ \
+ / / / / /_/ / / / / /_ / / / /|_/ /\__ \/ / / /
+ / /_/ / ____/ / / / __/ / /___/ / / /___/ / /_/ /
+ \____/_/ /_/ /_/ \____/_/ /_//____/\____/
+
+${archetype.name}-Version:${archetype.version}
+
+#----------------------------------------------------------- \ No newline at end of file
diff --git a/cmso-optimizer/src/main/resources/logmessages.properties b/cmso-optimizer/src/main/resources/logmessages.properties
index 9961749..2c7a32c 100644
--- a/cmso-optimizer/src/main/resources/logmessages.properties
+++ b/cmso-optimizer/src/main/resources/logmessages.properties
@@ -25,3 +25,4 @@ DUPLICATE_REQUEST_ID DUPLICATE_REQUEST_ID|Request id {0} already exists|No resol
TOPOLOGY_REQUEST TOPOLOGY_REQUEST|Topology request {0} for {1} URL: {1}|No resolution needed|No action is required
OPTIMIZER_REQUEST OPTIMIZER_REQUEST|OPtimizer request {0} for {1} Command: {1}|No resolution needed|No action is required
TICKETS_REQUEST TICKETS_REQUEST|Tickets request {0} for {1} URL: {1}|No resolution needed|No action is required
+UNSUPPORTED_PERIODIC_TIME UNSUPPORTED_PERIODIC_TIME|Unsupported periodic time from policy: {0}|No resolution needed|No action is required