aboutsummaryrefslogtreecommitdiffstats
path: root/src/main
diff options
context:
space:
mode:
authorDeterme, Sebastien (sd378r) <sd378r@intl.att.com>2017-09-22 15:52:45 +0200
committerDeterme, Sebastien (sd378r) <sd378r@intl.att.com>2017-09-22 16:04:11 +0200
commit8c5ffd0eb1269ceeb9b19a2c274577fae6240840 (patch)
treeb2c21078726a8cf13a0070a579b45248710b3934 /src/main
parent10efd56cf30699a2d241d2b8aef6d504faf3090d (diff)
Add the target resource ID
Add target resource ID in operational policy code as requested. It changes the UI, the Policy code, the model and the tests. Change-Id: Ie72badde55e7f8b5c2e5234099a09b95958205cf Issue-ID: CLAMP-55 Signed-off-by: Determe, Sebastien (sd378r) <sd378r@intl.att.com>
Diffstat (limited to 'src/main')
-rw-r--r--src/main/java/org/onap/clamp/clds/client/req/OperationalPolicyReq.java39
-rw-r--r--src/main/java/org/onap/clamp/clds/model/prop/PolicyChain.java23
-rw-r--r--src/main/java/org/onap/clamp/clds/model/prop/PolicyItem.java33
-rw-r--r--src/main/resources/META-INF/resources/designer/partials/portfolios/PolicyWindow_properties.html245
4 files changed, 185 insertions, 155 deletions
diff --git a/src/main/java/org/onap/clamp/clds/client/req/OperationalPolicyReq.java b/src/main/java/org/onap/clamp/clds/client/req/OperationalPolicyReq.java
index ad466ee7..a64bd717 100644
--- a/src/main/java/org/onap/clamp/clds/client/req/OperationalPolicyReq.java
+++ b/src/main/java/org/onap/clamp/clds/client/req/OperationalPolicyReq.java
@@ -66,6 +66,10 @@ public class OperationalPolicyReq {
protected static final EELFLogger logger = EELFManager.getInstance().getLogger(OperationalPolicyReq.class);
protected static final EELFLogger metricsLogger = EELFManager.getInstance().getMetricsLogger();
+ private OperationalPolicyReq() {
+
+ }
+
/**
* Format Operational Policy attributes.
*
@@ -127,12 +131,16 @@ public class OperationalPolicyReq {
String recipe = policyItem.getRecipe();
String maxRetries = String.valueOf(policyItem.getMaxRetries());
String retryTimeLimit = String.valueOf(policyItem.getRetryTimeLimit());
+ String targetResourceId = String.valueOf(policyItem.getTargetResourceId());
logger.info("recipe=" + recipe);
logger.info("maxRetries=" + maxRetries);
logger.info("retryTimeLimit=" + retryTimeLimit);
+ logger.info("targetResourceId=" + targetResourceId);
ruleAttributes.put("Recipe", recipe);
ruleAttributes.put("MaxRetries", maxRetries);
ruleAttributes.put("RetryTimeLimit", retryTimeLimit);
+ ruleAttributes.put("ResourceId", targetResourceId);
+
} else {
logger.info("templateName=" + templateName);
logger.info("operationTopic=" + operationTopic);
@@ -189,24 +197,22 @@ public class OperationalPolicyReq {
builder.addResource(vfcResources);
// process each policy
- HashMap<String, org.onap.policy.controlloop.policy.Policy> policyObjMap = new HashMap<>();
+ HashMap<String, Policy> policyObjMap = new HashMap<>();
List<PolicyItem> policyItemList = orderParentFirst(policyChain.getPolicyItems());
- Target target = new Target();
- target.setType(TargetType.VM);
- for (int i = 0; i < policyItemList.size(); i++) {
-
- org.onap.policy.controlloop.policy.Policy policyObj;
- PolicyItem policyItem = policyItemList.get(i);
+ for (PolicyItem policyItem : policyItemList) {
String policyName = policyItem.getRecipe() + " Policy";
- if (i == 0) {
+ Target target = new Target();
+ target.setType(TargetType.VM);
+ target.setResourceID(policyItem.getTargetResourceId());
+ Policy policyObj;
+ if (policyItemList.indexOf(policyItem) == 0) {
String policyDescription = policyItem.getRecipe()
+ " Policy - the trigger (no parent) policy - created by CLDS";
policyObj = builder.setTriggerPolicy(policyName, policyDescription,
refProp.getStringValue("op.policy.appc"), target, policyItem.getRecipe(), null,
policyItem.getMaxRetries(), policyItem.getRetryTimeLimit());
} else {
- org.onap.policy.controlloop.policy.Policy parentPolicyObj = policyObjMap
- .get(policyItem.getParentPolicy());
+ Policy parentPolicyObj = policyObjMap.get(policyItem.getParentPolicy());
String policyDescription = policyItem.getRecipe() + " Policy - triggered conditionally by "
+ parentPolicyObj.getName() + " - created by CLDS";
policyObj = builder.setPolicyForPolicyResult(policyName, policyDescription,
@@ -269,14 +275,15 @@ public class OperationalPolicyReq {
HashMap<String, Policy> policyObjMap = new HashMap<>();
List<PolicyItem> policyItemList = addAOTSActorRecipe(refProp, global.getService(),
policyChain.getPolicyItems());
- Target target = new Target();
- target.setType(TargetType.VM);
+
Policy lastPolicyObj = new Policy();
- for (int i = 0; i < policyItemList.size(); i++) {
- org.onap.policy.controlloop.policy.Policy policyObj;
- PolicyItem policyItem = policyItemList.get(i);
+ for (PolicyItem policyItem : policyItemList) {
+ Target target = new Target();
+ target.setType(TargetType.VM);
+ target.setResourceID(policyItem.getTargetResourceId());
String policyName = policyItem.getRecipe() + " Policy";
- if (i == 0) {
+ Policy policyObj;
+ if (policyItemList.indexOf(policyItem) == 0) {
// To set up time window payload for trigger policy
Map<String, String> payloadMap = new HashMap<>();
payloadMap.put("timeWindow", refProp.getStringValue("op.eNodeB.timeWindow"));
diff --git a/src/main/java/org/onap/clamp/clds/model/prop/PolicyChain.java b/src/main/java/org/onap/clamp/clds/model/prop/PolicyChain.java
index c8c2ef46..5264629f 100644
--- a/src/main/java/org/onap/clamp/clds/model/prop/PolicyChain.java
+++ b/src/main/java/org/onap/clamp/clds/model/prop/PolicyChain.java
@@ -23,14 +23,14 @@
package org.onap.clamp.clds.model.prop;
-import java.util.ArrayList;
-import java.util.Iterator;
-import java.util.List;
-
import com.att.eelf.configuration.EELFLogger;
import com.att.eelf.configuration.EELFManager;
import com.fasterxml.jackson.databind.JsonNode;
+import java.util.ArrayList;
+import java.util.Iterator;
+import java.util.List;
+
/**
* Parse Policy json properties.
*
@@ -42,24 +42,27 @@ import com.fasterxml.jackson.databind.JsonNode;
* :"_id","value":["q2JmHD5"]},{"name":"parentPolicy","value":[""]}],[{"name":
* "recipe","value":["rebuild"]},{"name":"maxRetries","value":["3"]},{"name":
* "retryTimeLimit","value":["180"]},{"name":"_id","value":["0ZqHdrR"]},{"name":
- * "parentPolicy","value":[""]}]]}],"PolicyTest2":[{"name":"pname","value":
+ * "parentPolicy","value":[""]},{"name":
+ * "targetResourceId","value":["Eace933104d443b496b8.nodes.heat.vpg"]}]]}],
+ * "PolicyTest2":[{"name":"pname","value":
* "PolicyTest2"},{"name":"pid","value":"2"},{"name":"timeout","value":"345"},{
* "policyConfigurations":[[{"name":"recipe","value":["restart"]},{"name":
* "maxRetries","value":["3"]},{"name":"retryTimeLimit","value":["180"]},{"name"
* :"_id","value":["q2JmHD5"]},{"name":"parentPolicy","value":[""]}],[{"name":
* "recipe","value":["rebuild"]},{"name":"maxRetries","value":["3"]},{"name":
* "retryTimeLimit","value":["180"]},{"name":"_id","value":["0ZqHdrR"]},{"name":
- * "parentPolicy","value":[""]}]]}]}} f
+ * "parentPolicy","value":[""]},{"name":
+ * "targetResourceId","value":["Eace933104d443b496b8.nodes.heat.vpg"]}]]}]}} f
*
*/
public class PolicyChain {
- protected static final EELFLogger logger = EELFManager.getInstance().getLogger(PolicyChain.class);
+ protected static final EELFLogger logger = EELFManager.getInstance().getLogger(PolicyChain.class);
protected static final EELFLogger auditLogger = EELFManager.getInstance().getAuditLogger();
- private String policyId;
- private Integer timeout;
- private List<PolicyItem> policyItems;
+ private String policyId;
+ private Integer timeout;
+ private List<PolicyItem> policyItems;
public PolicyChain(JsonNode node) {
diff --git a/src/main/java/org/onap/clamp/clds/model/prop/PolicyItem.java b/src/main/java/org/onap/clamp/clds/model/prop/PolicyItem.java
index c84affef..5fc82983 100644
--- a/src/main/java/org/onap/clamp/clds/model/prop/PolicyItem.java
+++ b/src/main/java/org/onap/clamp/clds/model/prop/PolicyItem.java
@@ -23,12 +23,12 @@
package org.onap.clamp.clds.model.prop;
-import java.util.List;
-
import com.att.eelf.configuration.EELFLogger;
import com.att.eelf.configuration.EELFManager;
import com.fasterxml.jackson.databind.JsonNode;
+import java.util.List;
+
/**
* Parse policyConfigurations from Policy json properties.
* <p>
@@ -44,19 +44,21 @@ import com.fasterxml.jackson.databind.JsonNode;
* ,{"name":"location","value":["san_diego"]},{"name":"resource","value":["vCTS"
* ]},{"name":"onMaxRetriesLimit","value":[""]},{"name":"onTimeLimit","value":[
* ""]},{"name":"onOtherFailure","value":[""]},{"name":"policy_parent","value":[
- * "vf3RtPi"]}]]}]
+ * "vf3RtPi"]},{"name":
+ * "targetResourceId","value":["Eace933104d443b496b8.nodes.heat.vpg"]}]]}]
*/
public class PolicyItem implements Cloneable {
- protected static final EELFLogger logger = EELFManager.getInstance().getLogger(PolicyItem.class);
+ protected static final EELFLogger logger = EELFManager.getInstance().getLogger(PolicyItem.class);
protected static final EELFLogger auditLogger = EELFManager.getInstance().getAuditLogger();
- private String id;
- private String recipe;
- private int maxRetries;
- private int retryTimeLimit;
- private String parentPolicy;
- private List<String> parentPolicyConditions;
- private String actor;
+ private String id;
+ private String recipe;
+ private int maxRetries;
+ private int retryTimeLimit;
+ private String parentPolicy;
+ private List<String> parentPolicyConditions;
+ private String actor;
+ private String targetResourceId;
/**
* Parse Policy given json node.
@@ -70,6 +72,7 @@ public class PolicyItem implements Cloneable {
retryTimeLimit = AbstractModelElement.getIntValueByName(node, "retryTimeLimit");
parentPolicy = AbstractModelElement.getValueByName(node, "parentPolicy");
parentPolicyConditions = AbstractModelElement.getValuesByName(node, "parentPolicyConditions");
+ targetResourceId = AbstractModelElement.getValueByName(node, "targetResourceId");
}
@@ -171,6 +174,14 @@ public class PolicyItem implements Cloneable {
this.actor = actor;
}
+ public String getTargetResourceId() {
+ return targetResourceId;
+ }
+
+ public void setTargetResourceId(String targetResourceId) {
+ this.targetResourceId = targetResourceId;
+ }
+
@Override
public Object clone() throws CloneNotSupportedException {
return super.clone();
diff --git a/src/main/resources/META-INF/resources/designer/partials/portfolios/PolicyWindow_properties.html b/src/main/resources/META-INF/resources/designer/partials/portfolios/PolicyWindow_properties.html
index 4f7a77d4..00e16751 100644
--- a/src/main/resources/META-INF/resources/designer/partials/portfolios/PolicyWindow_properties.html
+++ b/src/main/resources/META-INF/resources/designer/partials/portfolios/PolicyWindow_properties.html
@@ -23,14 +23,15 @@
<style>
-#deletePolicy{
- height:34px;
- background-color:#dddd;
+#deletePolicy {
+ height: 34px;
+ background-color: #dddd;
}
-.disabled{
+.disabled {
background-color: #dddd;
}
+
.fileUpload {
position: relative;
overflow: hidden;
@@ -60,61 +61,62 @@
margin-top: 17px;
}
-.modelSearchBox{
- position:absolute;
+.modelSearchBox {
+ position: absolute;
padding: 25px 12px;
}
-label{
- text-align:right;
- vertical-align:middle;
+label {
+ text-align: right;
+ vertical-align: middle;
}
-.leftPolicyPanel{
+.leftPolicyPanel {
padding: 0 10px 0 0;
}
-#createNewPolicy{
- height:34px;
- width:120px; /*84*/
- background-color:#f2bfab;
+#createNewPolicy {
+ height: 34px;
+ width: 120px; /*84*/
+ background-color: #f2bfab;
}
-.idError{
- color:red;
- padding:50px 0px;
- text-align:center;
- display:none;
+.idError {
+ color: red;
+ padding: 50px 0px;
+ text-align: center;
+ display: none;
}
-.policyPanel{
+.policyPanel {
background-color: #f5f5f5;
padding: 15px 5px 0 5px;
}
-.form-group.clearfix{
- display:-webkit-flex;
- display: flex;
+.form-group.clearfix {
+ display: -webkit-flex;
+ display: flex;
align-items: center;
}
-label{
- margin-bottom:0px;
+label {
+ margin-bottom: 0px;
}
-#policySearch{
+#policySearch {
height: 33px;
font-size: 12px;
padding: 2px 2px 2px 30px;
margin-bottom: 5px;
- width:100%;
+ width: 100%;
}
-#policyTable{
+
+#policyTable {
cursor: pointer;
- width:100%;
+ width: 100%;
}
-#policyTable tr{
+#policyTable tr {
border-bottom: 1px solid #ddd;
border-collapse: collapse;
text-align: left;
@@ -122,22 +124,21 @@ label{
font-weight: normal;
}
-#policyTable td{
+#policyTable td {
padding: 8px 10px;
}
-#policyTable tr.highlight{
+#policyTable tr.highlight {
background-color: #f5f5f5;
font-weight: bold;
font-size: 13px;
}
-#policyTableHolder{
- height:200px;
- width: 100%;
- overflow:auto;
+#policyTableHolder {
+ height: 200px;
+ width: 100%;
+ overflow: auto;
}
-
</style>
<script type="text/javascript">
@@ -163,128 +164,136 @@ label{
</script>
- <div attribute-test="policywindowproperties" id="configure-widgets"
- class="disabled-block-container">
+<div attribute-test="policywindowproperties" id="configure-widgets"
+ class="disabled-block-container">
<div attribute-test="policywindowpropertiesh" class="modal-header">
<button type="button" class="close" ng-click="close(false)"
aria-hidden="true" style="margin-top: -3px">&times;</button>
<h4>Operational Policy</h4>
- </div>
-
-
+ </div>
+
+
<div class="modal-body">
- <div attribute-test="policywindowpropertiesb" class="modal-body row">
-
- <div class="leftPolicyPanel">
- <div class="panel panel-default">
+ <div attribute-test="policywindowpropertiesb" class="modal-body row">
+
+ <div class="leftPolicyPanel">
+ <div class="panel panel-default">
<i class="glyphicon glyphicon-search modelSearchBox"></i>
<input type="text" id="policySearch" onkeyup="searchPolicyList()"
- placeholder="Search ...">
- <div id="policyTableHolder">
- <table id="policyTable"></table>
+ placeholder="Search ...">
+ <div id="policyTableHolder">
+ <table id="policyTable"></table>
+ </div>
</div>
- </div>
- <div style="float:left">
+ <div style="float: left">
<button type="button" id="createNewPolicy" class="btn btn-sm">New Policy</button></span>
- </div>
- <div style="float:right">
+ </div>
+ <div style="float: right">
<button type="button" id="deletePolicy" class="btn btn-sm glyphicon glyphicon-trash" disabled></button></span>
- </div>
+ </div>
<div id="repeatIdError" class="idError">Error: This Policy name is already taken.</div>
<div id="newIdError" class="idError">Error: Please rename your new Policy.</div>
<div id="spaceError" class="idError">Error: Spaces are not allowed in the ID.</div>
- </div>
-
+ </div>
+
<div class="panel panel-default col-sm-9 policyPanel" style="display:none;">
- <form id="Timeoutform" class="form-horizontal">
- <div>
- <div class="form-group clearfix row">
- <label class="col-sm-2">Name</label>
- <div class="col-sm-3" style="padding:0px;">
+ <form id="Timeoutform" class="form-horizontal">
+ <div>
+ <div class="form-group clearfix row">
+ <label class="col-sm-2">Name</label>
+ <div class="col-sm-3" style="padding: 0px;">
<input type="text" id="pname" name="pname" maxlength="48" placeholder="Enter Unique Name" class="form-control">
- </div>
-
- <label class="col-sm-1">ID</label>
- <div class="col-sm-1" style="padding:0px;">
+ </div>
+
+ <label class="col-sm-1">ID</label>
+ <div class="col-sm-1" style="padding: 0px;">
<input onkeydown="return false;" type="text" id="pid" name="pid" class="form-control" readonly>
- </div>
-
+ </div>
+
<label for="userID" class="col-sm-3" style="padding-left:5px;padding-right:10px;">Overall Time Limit</label>
- <div class="col-sm-2" style="padding-left:0px;">
+ <div class="col-sm-2" style="padding-left: 0px;">
<input type="text" maxlength="10" onkeypress="return isNumberKey(event)"
class="form-control" id="timeout" name="timeout">
- </div>
+ </div>
+ </div>
</div>
+ </form>
+ <div class="panel-heading" style="background-color: white;">
+ <ul id="nav_Tabs" class="nav nav-tabs">
+ <li class><a id="add_one_more" href="#desc_tab"><span
+ class="glyphicon glyphicon-plus" aria-hidden="true"></span></a></li>
+ </ul>
</div>
- </form>
- <div class="panel-heading" style="background-color: white;">
- <ul id="nav_Tabs" class="nav nav-tabs">
- <li class><a id="add_one_more" href="#desc_tab"><span
- class="glyphicon glyphicon-plus" aria-hidden="true"></span></a></li>
- </ul>
- </div>
- <div class="panel-body">
- <div class="tab-content">
- <div id="properties_tab" class="tab-pane fade in active"></div>
+ <div class="panel-body">
+ <div class="tab-content">
+ <div id="properties_tab" class="tab-pane fade in active"></div>
+ </div>
</div>
</div>
- </div>
-
- <span id="formSpan" style="display: none">
- <form class="saveProps" class="form-horizontal">
- <div>
- <div class="form-group clearfix" >
- <label class="col-sm-4 control-label" for="recipe">Recipe</label>
- <div class="col-sm-8">
+
+ <span id="formSpan" style="display: none">
+ <form class="saveProps" class="form-horizontal">
+ <div>
+ <div class="form-group clearfix">
+ <label class="col-sm-4 control-label" for="recipe">Recipe</label>
+ <div class="col-sm-8">
<select class="form-control" name="recipe" id="recipe" enableFilter="true"></select>
+ </div>
</div>
- </div>
- <div class="form-group clearfix">
- <label for="maxRetries" class="col-sm-4 control-label">
- Max Retries</label>
- <div class="col-sm-8">
+ <div class="form-group clearfix">
+ <label for="maxRetries" class="col-sm-4 control-label">
+ Max Retries</label>
+ <div class="col-sm-8">
<input type="text" maxlength="5" class="form-control" id="maxRetries"
onkeypress="return isNumberKey(event)"
- name="maxRetries"> </input>
+ name="maxRetries"> </input>
+ </div>
</div>
- </div>
- <div class="form-group clearfix" >
- <label for="retryTimeLimit" class="col-sm-4 control-label" >
- Retry Time Limit</label>
- <div class="col-sm-8">
+ <div class="form-group clearfix">
+ <label for="retryTimeLimit" class="col-sm-4 control-label">
+ Retry Time Limit</label>
+ <div class="col-sm-8">
<input type="text" maxlength="5" class="form-control" id="retryTimeLimit"
onkeypress="return isNumberKey(event)"
- name="retryTimeLimit"></input>
+ name="retryTimeLimit"></input>
+ </div>
</div>
- </div>
- <div style="display:none;" class="form-group clearfix">
+ <div style="display: none;" class="form-group clearfix">
<label for="_id" class="col-sm-4 control-label">
PolicyID</label>
- <div class="col-sm-8">
+ <div class="col-sm-8">
<input type="text" onkeydown="return false;" class="form-control" id="_id"
name="_id" value=""></input>
+ </div>
</div>
- </div>
- <div class="form-group clearfix">
- <label for="parentPolicy" class="col-sm-4 control-label">
- Parent Policy</label>
- <div class="col-sm-8">
- <select class="form-control" id="parentPolicy"
+ <div class="form-group clearfix">
+ <label for="parentPolicy" class="col-sm-4 control-label">
+ Parent Policy</label>
+ <div class="col-sm-8">
+ <select class="form-control" id="parentPolicy"
name="parentPolicy" enableFilter="true"><option value=""></option></select>
+ </div>
</div>
- </div>
- <div class="form-group clearfix">
+ <div class="form-group clearfix">
<label for="parentPolicyConditions" class="col-sm-4 control-label">
Parent Policy Conditions</label>
- <div class="col-sm-8">
- <select class="form-control" id="parentPolicyConditions"
- name="parentPolicyConditions" multiple></select>
+ <div class="col-sm-8">
+ <select class="form-control" id="parentPolicyConditions"
+ name="parentPolicyConditions" multiple></select>
+ </div>
+ </div>
+ <div class="form-group clearfix">
+ <label for="targetResourceId" class="col-sm-4 control-label">
+ Target ResourceId</label>
+ <div class="col-sm-8">
+ <input type="text" class="form-control" id="targetResourceId"
+ name="targetResourceId"> </input>
+ </div>
</div>
</div>
- </div>
- </form>
- </span>
- </div>
+ </form>
+ </span>
+ </div>
</div>
<div attribute-test="policywindowpropertiesf" class="modal-footer">
@@ -293,7 +302,7 @@ label{
<button ng-click="close(true)" id="close_button"
class="btn btn-primary">Cancel</button>
</div>
-
+
<script>
//Basically this method will add a new form. All forms share the same class. When you want one form to show(active form) the other forms get the
// css attribute display:none