updatePdpGroupMap(opPolicy.getPdpGroup(), opPolicy.getPdpSubgroup(),
opPolicy.getName(),
"1.0.0", pdpGroupMap);
- if (opPolicy.isLegacy()) {
- for (String guardName:opPolicy.createGuardPolicyPayloads().keySet()) {
- updatePdpGroupMap(opPolicy.getPdpGroup(), opPolicy.getPdpSubgroup(),
- guardName,
- "1.0.0", pdpGroupMap);
- }
- }
}
for (MicroServicePolicy msPolicy : loop.getMicroServicePolicies()) {
/**
* This is a method that expect the results of the queries getPolicy and
- * getPolicyDeployed for a unique policy (op,guard, config, etc ...). It
+ * getPolicyDeployed for a unique policy (op, config, etc ...). It
* re-computes the global policy state for each policy results given. Therefore
* this method is called multiple times from the camel route and must be reset
* for a new global policy state retrieval. The state to compute the global
return super.createPolicyPayload();
}
}
-
- /**
- * Return a map containing all Guard policies indexed by Guard policy Name.
- *
- * @return The Guards map
- */
- public Map<String, String> createGuardPolicyPayloads() {
- Map<String, String> result = new HashMap<>();
-
- if (this.getConfigurationsJson() != null) {
- JsonElement guardsList = this.getConfigurationsJson().get("guard_policies");
- if (guardsList != null) {
- for (JsonElement guardElem : guardsList.getAsJsonArray()) {
- result.put(guardElem.getAsJsonObject().get("policy-id").getAsString(),
- new GsonBuilder().create().toJson(guardElem));
- }
- }
- }
- logger.info("Guard policy payload: " + result);
- return result;
- }
}
<to
uri="bean:org.onap.clamp.loop.LoopController?method=updateOperationalPolicies(${header.loopName},${header.OperationalPoliciesArray})" />
<to
- uri="bean:org.onap.clamp.loop.log.LoopLogService?method=addLog('Operational and Guard policies UPDATED','INFO',${exchangeProperty[loopObject]})" />
+ uri="bean:org.onap.clamp.loop.log.LoopLogService?method=addLog('Operational policies UPDATED','INFO',${exchangeProperty[loopObject]})" />
<to
uri="bean:org.onap.clamp.flow.log.FlowLogOperation?method=endLog()" />
<doCatch>
<to uri="direct:delete-policy" />
<to uri="direct:create-policy" />
- <choice>
- <when>
- <simple>${exchangeProperty['policy'].isLegacy()} == true
- </simple>
- <log loggingLevel="INFO"
- message="Processing all GUARD policies (LEGACY) defined in loop ${exchangeProperty[loopObject].getName()}" />
- <split>
- <simple>${exchangeProperty[operationalPolicy].createGuardPolicyPayloads().entrySet()}
- </simple>
- <setProperty propertyName="guardPolicy">
- <simple>${body}</simple>
- </setProperty>
- <log loggingLevel="INFO"
- message="Processing Guard Policy: ${exchangeProperty[guardPolicy].getKey()}" />
-
- <setProperty propertyName="raiseHttpExceptionFlag">
- <simple resultType="java.lang.Boolean">false</simple>
- </setProperty>
- <to uri="direct:delete-guard-policy" />
- <to uri="direct:create-guard-policy" />
- </split>
- </when>
- </choice>
</split>
<delay>
<simple resultType="java.lang.Boolean">false</simple>
</setProperty>
<to uri="direct:delete-policy" />
- <choice>
- <when>
- <simple>${exchangeProperty['policy'].isLegacy()} == true
- </simple>
- <log loggingLevel="INFO"
- message="Deleting all GUARD policies (LEGACY) defined in loop ${exchangeProperty[loopObject].getName()}" />
- <split>
- <simple>${exchangeProperty[operationalPolicy].createGuardPolicyPayloads().entrySet()}
- </simple>
- <setProperty propertyName="guardPolicy">
- <simple>${body}</simple>
- </setProperty>
- <log loggingLevel="INFO"
- message="Deleting Guard Policy: ${exchangeProperty[guardPolicy].getKey()}" />
- <setProperty propertyName="raiseHttpExceptionFlag">
- <simple resultType="java.lang.Boolean">false</simple>
- </setProperty>
- <to uri="direct:delete-guard-policy" />
- </split>
- </when>
- </choice>
</split>
<to
uri="bean:org.onap.clamp.loop.LoopController?method=deleteLoop(${header.loopName})" />
<constant>500</constant>
</setHeader>
<setBody>
- <simple>ADD Operational policy request FAILED</simple>
+ <simple>ADD Operational policy request FAILED for loop: ${header.loopName}, ${exception.message}"</simple>
</setBody>
+
</doCatch>
</doTry>
</route>
<constant>null</constant>
</setBody>
<log loggingLevel="INFO"
- message="Processing Micro Service Policy: ${exchangeProperty[policyName]} of type ${exchangeProperty[policyType]}" />
+ message="Processing Operational Policy: ${exchangeProperty[policyName]} of type ${exchangeProperty[policyType]}" />
<to uri="direct:verify-one-policy" />
- <log loggingLevel="INFO"
- message="Processing all GUARD policies defined in loop ${exchangeProperty[loopObject].getName()}" />
- <split>
- <simple>${exchangeProperty[operationalPolicy].createGuardPolicyPayloads().entrySet()}
- </simple>
- <setProperty propertyName="policyName">
- <simple>${body.getKey()}</simple>
- </setProperty>
- <setProperty propertyName="policyType">
- <simple>onap.policies.controlloop.Guard</simple>
- </setProperty>
- <setProperty propertyName="policyTypeVersion">
- <simple>1.0.0</simple>
- </setProperty>
- <setProperty propertyName="policyVersion">
- <simple>1</simple>
- </setProperty>
- <setBody>
- <constant>null</constant>
- </setBody>
- <log loggingLevel="INFO"
- message="Processing Guard Policy: ${exchangeProperty[policyName]} of type ${exchangeProperty[policyType]}" />
- <to uri="direct:verify-one-policy" />
- </split>
</split>
<setProperty propertyName="policyState">
<simple> ${exchangeProperty[policyComponent].getState()}
</doFinally>
</doTry>
</route>
- <route id="create-guard-policy">
- <from uri="direct:create-guard-policy"/>
- <doTry>
- <log loggingLevel="INFO"
- message="Creating Guard Policy: ${exchangeProperty[guardPolicy].getKey()}"/>
- <to
- uri="bean:org.onap.clamp.flow.log.FlowLogOperation?method=invokeLog('Policy', 'Create Guard Policy')"/>
- <setBody>
- <simple>${exchangeProperty[guardPolicy].getValue()}
- </simple>
- </setBody>
- <setHeader headerName="CamelHttpMethod">
- <constant>POST</constant>
- </setHeader>
- <setHeader headerName="Content-Type">
- <constant>application/json</constant>
- </setHeader>
- <setHeader headerName="X-ONAP-RequestID">
- <simple>${exchangeProperty[X-ONAP-RequestID]}
- </simple>
- </setHeader>
- <setHeader headerName="X-ONAP-InvocationID">
- <simple>${exchangeProperty[X-ONAP-InvocationID]}
- </simple>
- </setHeader>
- <setHeader headerName="X-ONAP-PartnerName">
- <simple>${exchangeProperty[X-ONAP-PartnerName]}
- </simple>
- </setHeader>
- <log loggingLevel="INFO"
- message="Endpoint to create guard policy: {{clamp.config.policy.api.url}}/policy/api/v1/policytypes/onap.policies.controlloop.Guard/versions/1.0.0/policies"></log>
- <toD
- uri="{{clamp.config.policy.api.url}}/policy/api/v1/policytypes/onap.policies.controlloop.Guard/versions/1.0.0/policies?bridgeEndpoint=true&useSystemProperties=true&mapHttpMessageHeaders=false&throwExceptionOnFailure=${exchangeProperty[raiseHttpExceptionFlag]}&authUsername={{clamp.config.policy.api.userName}}&authPassword={{clamp.config.policy.api.password}}&connectionTimeToLive=5000&httpClient.connectTimeout=10000&httpClient.socketTimeout=20000&authenticationPreemptive=true&connectionClose=true"/>
- <doFinally>
- <to uri="direct:reset-raise-http-exception-flag"/>
- <to
- uri="bean:org.onap.clamp.flow.log.FlowLogOperation?method=invokeReturnLog()"/>
- <setProperty propertyName="logMessage">
- <simple>${exchangeProperty[guardPolicy].getKey()} creation status
- </simple>
- </setProperty>
- <setProperty propertyName="logComponent">
- <simple>POLICY</simple>
- </setProperty>
- <to uri="direct:dump-loop-log-http-response"/>
- </doFinally>
- </doTry>
- </route>
-
- <route id="delete-guard-policy">
- <from uri="direct:delete-guard-policy"/>
- <doTry>
- <log loggingLevel="INFO"
- message="Deleting Guard Policy: ${exchangeProperty[guardPolicy].getKey()}"/>
- <to
- uri="bean:org.onap.clamp.flow.log.FlowLogOperation?method=invokeLog('Policy', 'Delete Guard Policy')"/>
- <setBody>
- <constant>null</constant>
- </setBody>
- <setHeader headerName="CamelHttpMethod">
- <constant>DELETE</constant>
- </setHeader>
- <setHeader headerName="X-ONAP-RequestID">
- <simple>${exchangeProperty[X-ONAP-RequestID]}
- </simple>
- </setHeader>
- <setHeader headerName="X-ONAP-InvocationID">
- <simple>${exchangeProperty[X-ONAP-InvocationID]}
- </simple>
- </setHeader>
- <setHeader headerName="X-ONAP-PartnerName">
- <simple>${exchangeProperty[X-ONAP-PartnerName]}
- </simple>
- </setHeader>
- <log loggingLevel="INFO"
- message="Endpoint to delete guard policy: {{clamp.config.policy.api.url}}/policy/api/v1/policytypes/onap.policies.controlloop.Guard/versions/1.0.0/policies/${exchangeProperty[guardPolicy].getKey()}/versions/1"></log>
- <toD
- uri="{{clamp.config.policy.api.url}}/policy/api/v1/policytypes/onap.policies.controlloop.Guard/versions/1.0.0/policies/${exchangeProperty[guardPolicy].getKey()}/versions/1?bridgeEndpoint=true&useSystemProperties=true&throwExceptionOnFailure=${exchangeProperty[raiseHttpExceptionFlag]}&deleteWithBody=false&mapHttpMessageBody=false&mapHttpMessageFormUrlEncodedBody=false&authUsername={{clamp.config.policy.api.userName}}&authPassword={{clamp.config.policy.api.password}}&connectionTimeToLive=5000&httpClient.connectTimeout=10000&httpClient.socketTimeout=20000&authenticationPreemptive=true&connectionClose=true"/>
-
- <doFinally>
- <to uri="direct:reset-raise-http-exception-flag"/>
- <to
- uri="bean:org.onap.clamp.flow.log.FlowLogOperation?method=invokeReturnLog()"/>
- <setProperty propertyName="logMessage">
- <simple>${exchangeProperty[guardPolicy].getKey()} removal status
- </simple>
- </setProperty>
- <setProperty propertyName="logComponent">
- <simple>POLICY</simple>
- </setProperty>
- <to uri="direct:dump-loop-log-http-response"/>
- </doFinally>
- </doTry>
- </route>
-
<route id="add-all-to-active-pdp-group">
<from uri="direct:add-all-to-active-pdp-group"/>
<doTry>
"type": "object",
"title": "Configuration",
"required": [
- "operational_policy",
- "guard_policies"
+ "operational_policy"
],
"properties": {
"operational_policy": {
}
}
}
- },
- "guard_policies": {
- "type": "array",
- "format": "tabs-top",
- "title": "Associated Guard policies",
- "items": {
- "headerTemplate": "{{self.policy-id}} - {{self.content.recipe}}",
- "anyOf": [
- {
- "title": "Guard MinMax",
- "type": "object",
- "properties": {
- "policy-id": {
- "type": "string",
- "default": "guard.minmax.new",
- "pattern": "^(guard.minmax\\..*)$"
- },
- "content": {
- "properties": {
- "actor": {
- "type": "string",
- "enum": [
- "APPC",
- "SO",
- "VFC",
- "SDNC",
- "SDNR"
- ]
- },
- "recipe": {
- "type": "string",
- "enum": [
- "Restart",
- "Rebuild",
- "Migrate",
- "Health-Check",
- "ModifyConfig",
- "VF Module Create",
- "VF Module Delete",
- "Reroute"
- ]
- },
- "targets": {
- "type": "string",
- "default": ".*"
- },
- "clname": {
- "type": "string",
- "template": "{{loopName}}",
- "watch": {
- "loopName": "operational_policy.controlLoop.controlLoopName"
- }
- },
- "guardActiveStart": {
- "type": "string",
- "default": "00:00:00Z"
- },
- "guardActiveEnd": {
- "type": "string",
- "default": "10:00:00Z"
- },
- "min": {
- "type": "string",
- "default": "0"
- },
- "max": {
- "type": "string",
- "default": "1"
- }
- }
- }
- }
- },
- {
- "title": "Guard Frequency",
- "type": "object",
- "properties": {
- "policy-id": {
- "type": "string",
- "default": "guard.frequency.new",
- "pattern": "^(guard.frequency\\..*)$"
- },
- "content": {
- "properties": {
- "actor": {
- "type": "string",
- "enum": [
- "APPC",
- "SO",
- "VFC",
- "SDNC",
- "SDNR"
- ]
- },
- "recipe": {
- "type": "string",
- "enum": [
- "Restart",
- "Rebuild",
- "Migrate",
- "Health-Check",
- "ModifyConfig",
- "VF Module Create",
- "VF Module Delete",
- "Reroute"
- ]
- },
- "targets": {
- "type": "string",
- "default": ".*"
- },
- "clname": {
- "type": "string",
- "template": "{{loopName}}",
- "watch": {
- "loopName": "operational_policy.controlLoop.controlLoopName"
- }
- },
- "guardActiveStart": {
- "type": "string",
- "default": "00:00:00Z"
- },
- "guardActiveEnd": {
- "type": "string",
- "default": "10:00:00Z"
- },
- "limit": {
- "type": "string"
- },
- "timeWindow": {
- "type": "string"
- },
- "timeUnits": {
- "type": "string",
- "enum": [
- "minute",
- "hour",
- "day",
- "week",
- "month",
- "year"
- ]
- }
- }
- }
- }
- }
- ]
- }
}
}
}
public void testUpdateOperationalPolicies() {
saveTestLoopToDb();
String policy = "[{\"name\":\"OPERATIONAL_CLholmes31_v1_0_vFW_PG_T10_k8s-holmes-rules\","
- + "\"configurationsJson\":{\"guard_policies\":{},"
+ + "\"configurationsJson\":{"
+ "\"operational_policy\":{\"controlLoop\":{\"trigger_policy\":\"unique-policy-id-1-modifyConfig\","
+ "\"timeout\":\"3600\",\"abatement\":\"false\","
+ "\"controlLoopName\":\"LOOP_CLholmes31_v1_0_vFW_PG_T10_k8s-holmes-rules\"},"
assertThat(LegacyOperationalPolicy.createPolicyPayloadYamlLegacy(jsonConfig.get("operational_policy")))
.isEqualTo(ResourceFileUtil.getResourceAsString("tosca/operational-policy-payload-legacy.yaml"));
}
-
- @Test
- public void testGuardPolicyEmptyPayloadConstruction() throws IOException {
- JsonObject jsonConfig = new GsonBuilder().create().fromJson(
- ResourceFileUtil.getResourceAsString("tosca/operational-policy-no-guard-properties.json"),
- JsonObject.class);
- OperationalPolicy policy = new OperationalPolicy("testPolicy", jsonConfig, null, null, null, null, null);
- Map<String, String> guardsMap = policy.createGuardPolicyPayloads();
- assertThat(guardsMap).isEmpty();
- assertThat(guardsMap.entrySet()).isEmpty();
- }
-
- @Test
- public void testGuardPolicyPayloadConstruction() throws IOException {
- JsonObject jsonConfig = new GsonBuilder().create().fromJson(
- ResourceFileUtil.getResourceAsString("tosca/operational-policy-properties.json"), JsonObject.class);
- OperationalPolicy policy = new OperationalPolicy("testPolicy", jsonConfig, null, null, null, null, null);
-
- Map<String, String> guardsMap = policy.createGuardPolicyPayloads();
-
- JSONAssert.assertEquals(ResourceFileUtil.getResourceAsString("tosca/guard1-policy-payload.json"),
- guardsMap.get("guard.minmax.new"), false);
-
- JSONAssert.assertEquals(ResourceFileUtil.getResourceAsString("tosca/guard2-policy-payload.json"),
- guardsMap.get("guard.frequency.new"), false);
- }
}
"type": "object",
"title": "Configuration",
"required": [
- "operational_policy",
- "guard_policies"
+ "operational_policy"
],
"properties": {
"operational_policy": {
}
}
}
- },
- "guard_policies": {
- "type": "array",
- "format": "tabs-top",
- "title": "Associated Guard policies",
- "items": {
- "headerTemplate": "{{self.policy-id}} - {{self.content.recipe}}",
- "anyOf": [
- {
- "title": "Guard MinMax",
- "type": "object",
- "properties": {
- "policy-id": {
- "type": "string",
- "default": "guard.minmax.new",
- "pattern": "^(guard.minmax\\..*)$"
- },
- "content": {
- "properties": {
- "actor": {
- "type": "string",
- "enum": [
- "APPC",
- "SO",
- "VFC",
- "SDNC",
- "SDNR"
- ]
- },
- "recipe": {
- "type": "string",
- "enum": [
- "Restart",
- "Rebuild",
- "Migrate",
- "Health-Check",
- "ModifyConfig",
- "VF Module Create",
- "VF Module Delete",
- "Reroute"
- ]
- },
- "targets": {
- "type": "string",
- "default": ".*"
- },
- "clname": {
- "type": "string",
- "template": "{{loopName}}",
- "watch": {
- "loopName": "operational_policy.controlLoop.controlLoopName"
- }
- },
- "guardActiveStart": {
- "type": "string",
- "default": "00:00:00Z"
- },
- "guardActiveEnd": {
- "type": "string",
- "default": "10:00:00Z"
- },
- "min": {
- "type": "string",
- "default": "0"
- },
- "max": {
- "type": "string",
- "default": "1"
- }
- }
- }
- }
- },
- {
- "title": "Guard Frequency",
- "type": "object",
- "properties": {
- "policy-id": {
- "type": "string",
- "default": "guard.frequency.new",
- "pattern": "^(guard.frequency\\..*)$"
- },
- "content": {
- "properties": {
- "actor": {
- "type": "string",
- "enum": [
- "APPC",
- "SO",
- "VFC",
- "SDNC",
- "SDNR"
- ]
- },
- "recipe": {
- "type": "string",
- "enum": [
- "Restart",
- "Rebuild",
- "Migrate",
- "Health-Check",
- "ModifyConfig",
- "VF Module Create",
- "VF Module Delete",
- "Reroute"
- ]
- },
- "targets": {
- "type": "string",
- "default": ".*"
- },
- "clname": {
- "type": "string",
- "template": "{{loopName}}",
- "watch": {
- "loopName": "operational_policy.controlLoop.controlLoopName"
- }
- },
- "guardActiveStart": {
- "type": "string",
- "default": "00:00:00Z"
- },
- "guardActiveEnd": {
- "type": "string",
- "default": "10:00:00Z"
- },
- "limit": {
- "type": "string"
- },
- "timeWindow": {
- "type": "string"
- },
- "timeUnits": {
- "type": "string",
- "enum": [
- "minute",
- "hour",
- "day",
- "week",
- "month",
- "year"
- ]
- }
- }
- }
- }
- }
- ]
- }
}
}
}
\ No newline at end of file
"type": "object",
"title": "Configuration",
"required": [
- "operational_policy",
- "guard_policies"
+ "operational_policy"
],
"properties": {
"operational_policy": {
}
}
}
- },
- "guard_policies": {
- "type": "array",
- "format": "tabs-top",
- "title": "Associated Guard policies",
- "items": {
- "headerTemplate": "{{self.policy-id}} - {{self.content.recipe}}",
- "anyOf": [
- {
- "title": "Guard MinMax",
- "type": "object",
- "properties": {
- "policy-id": {
- "type": "string",
- "default": "guard.minmax.new",
- "pattern": "^(guard.minmax\\..*)$"
- },
- "content": {
- "properties": {
- "actor": {
- "type": "string",
- "enum": [
- "APPC",
- "SO",
- "VFC",
- "SDNC",
- "SDNR"
- ]
- },
- "recipe": {
- "type": "string",
- "enum": [
- "Restart",
- "Rebuild",
- "Migrate",
- "Health-Check",
- "ModifyConfig",
- "VF Module Create",
- "VF Module Delete",
- "Reroute"
- ]
- },
- "targets": {
- "type": "string",
- "default": ".*"
- },
- "clname": {
- "type": "string",
- "template": "{{loopName}}",
- "watch": {
- "loopName": "operational_policy.controlLoop.controlLoopName"
- }
- },
- "guardActiveStart": {
- "type": "string",
- "default": "00:00:00Z"
- },
- "guardActiveEnd": {
- "type": "string",
- "default": "10:00:00Z"
- },
- "min": {
- "type": "string",
- "default": "0"
- },
- "max": {
- "type": "string",
- "default": "1"
- }
- }
- }
- }
- },
- {
- "title": "Guard Frequency",
- "type": "object",
- "properties": {
- "policy-id": {
- "type": "string",
- "default": "guard.frequency.new",
- "pattern": "^(guard.frequency\\..*)$"
- },
- "content": {
- "properties": {
- "actor": {
- "type": "string",
- "enum": [
- "APPC",
- "SO",
- "VFC",
- "SDNC",
- "SDNR"
- ]
- },
- "recipe": {
- "type": "string",
- "enum": [
- "Restart",
- "Rebuild",
- "Migrate",
- "Health-Check",
- "ModifyConfig",
- "VF Module Create",
- "VF Module Delete",
- "Reroute"
- ]
- },
- "targets": {
- "type": "string",
- "default": ".*"
- },
- "clname": {
- "type": "string",
- "template": "{{loopName}}",
- "watch": {
- "loopName": "operational_policy.controlLoop.controlLoopName"
- }
- },
- "guardActiveStart": {
- "type": "string",
- "default": "00:00:00Z"
- },
- "guardActiveEnd": {
- "type": "string",
- "default": "10:00:00Z"
- },
- "limit": {
- "type": "string"
- },
- "timeWindow": {
- "type": "string"
- },
- "timeUnits": {
- "type": "string",
- "enum": [
- "minute",
- "hour",
- "day",
- "week",
- "month",
- "year"
- ]
- }
- }
- }
- }
- }
- ]
- }
}
}
}
}
}
]
- },
- "guard_policies": [
- {
- "policy-id": "guard.minmax.new",
- "content": {
- "actor": "APPC",
- "recipe": "Restart",
- "targets": ".*",
- "clname": "LOOP_ASJOy_v1_0_ResourceInstanceName1_tca",
- "guardActiveStart": "00:00:00Z",
- "guardActiveEnd": "10:00:00Z",
- "min": "0",
- "max": "1"
- }
- },
- {
- "policy-id": "guard.frequency.new",
- "content": {
- "actor": "APPC",
- "recipe": "Rebuild",
- "targets": ".*",
- "clname": "LOOP_ASJOy_v1_0_ResourceInstanceName1_tca",
- "guardActiveStart": "00:00:00Z",
- "guardActiveEnd": "10:00:00Z",
- "limit": "1",
- "timeWindow": "2",
- "timeUnits": "minute"
- }
- }
- ]
+ }
}
"name": "opLegacyPolicy",
"version": "1.0.0"
},
- {
- "name": "guard1",
- "version": "1.0.0"
- },
{
"name": "opPolicy",
"version": "1.0.0"
const opPolicy = [{
"name": "OPERATIONAL_h2NMX_v1_0_ResourceInstanceName1_tca",
"configurationsJson": {
- "guard_policies": {},
"operational_policy": {
"controlLoop": {},
"policies": []
const opPolicy = [{
"name": "OPERATIONAL_h2NMX_v1_0_ResourceInstanceName1_tca",
"configurationsJson": {
- "guard_policies": {},
"operational_policy": {
"controlLoop": {},
"policies": []
"id": 1,
"logType": "INFO",
"logComponent": "CLAMP",
- "message": "Operational and Guard policies UPDATED",
+ "message": "Operational policies UPDATED",
"logInstant": "2019-07-08T09:44:37Z"
}
];
it('updateOperationalPolicyProperties', () => {
const newOpPolicy = {
- "guard_policies": {},
"operational_policy": {
"controlLoop": {},
"policies": []
{
"name": "OPERATIONAL_h2NMX_v1_0_ResourceInstanceName1_tca",
"configurationsJson": {
- "guard_policies": {},
"operational_policy": {
"controlLoop": {},
"policies": []
"id": 1,
"logType": "INFO",
"logComponent": "CLAMP",
- "message": "Operational and Guard policies UPDATED",
+ "message": "Operational policies UPDATED",
"logInstant": "2019-07-08T09:44:37Z"
}
]
"operationalPolicies": [{
"name": "OPERATIONAL_h2NMX_v1_0_ResourceInstanceName1_tca",
"configurationsJson": {
- "guard_policies": {},
"operational_policy": {
"controlLoop": {},
"policies": []
{
"name": "OPERATIONAL_LOOP_NAME",
"configurationsJson": {
- "guard_policies": {
- "guard.minmax.new": {
- "recipe": "",
- "clname": "LOOP_NAME",
- "actor": "",
- "targets": "",
- "min": "",
- "max": "",
- "limit": "",
- "timeUnits": "",
- "timeWindow": "",
- "guardActiveStart": "00:00:00Z",
- "guardActiveEnd": "00:00:01Z"
- }
- },
"operational_policy": {
"controlLoop": {
"trigger_policy": "new",
"operationalPolicies": [{
"name": "OPERATIONAL_h2NMX_v1_0_ResourceInstanceName1_tca",
"configurationsJson": {
- "guard_policies": {},
"operational_policy": {
"controlLoop": {},
"policies": []
"id": 1,
"logType": "INFO",
"logComponent": "CLAMP",
- "message": "Operational and Guard policies UPDATED",
+ "message": "Operational policies UPDATED",
"logInstant": "2019-07-08T09:44:37Z"
}
]
"id": 1,
"logType": "INFO",
"logComponent": "CLAMP",
- "message": "Operational and Guard policies UPDATED",
+ "message": "Operational policies UPDATED",
"logInstant": "2019-07-08T09:44:37Z"
},
{
"id": 2,
"logType": "INFO",
"logComponent": "CLAMP",
- "message": "Operational and Guard policies UPDATED",
+ "message": "Operational policies UPDATED",
"logInstant": "2019-07-08T09:44:50Z"
}
]
"logComponent": "CLAMP",
"logInstant": "2019-07-08T09:44:37Z",
"logType": "INFO",
- "message": "Operational and Guard policies UPDATED",
+ "message": "Operational policies UPDATED",
}
}
/>
"operationalPolicies": [{
"name": "OPERATIONAL_h2NMX_v1_0_ResourceInstanceName1_tca",
"configurationsJson": {
- "guard_policies": {},
"operational_policy": {
"controlLoop": {},
"policies": []