summaryrefslogtreecommitdiffstats
path: root/template.demo
diff options
context:
space:
mode:
Diffstat (limited to 'template.demo')
-rw-r--r--template.demo/pom.xml94
-rw-r--r--template.demo/src/main/java/org/openecomp/policy/template/demo/ControlLoopException.java51
-rw-r--r--template.demo/src/main/java/org/openecomp/policy/template/demo/EventManager.java210
-rw-r--r--template.demo/src/main/java/org/openecomp/policy/template/demo/PolicyEngine.java81
-rw-r--r--template.demo/src/main/resources/archetype-resources/src/main/resources/ControlLoopDemo__closedLoopControlName__.drl1299
-rw-r--r--template.demo/src/test/java/org/openecomp/policy/template/demo/TestAPPCPayload.java58
-rw-r--r--template.demo/src/test/java/org/openecomp/policy/template/demo/TestFirewallDemo.java595
-rw-r--r--template.demo/src/test/java/org/openecomp/policy/template/demo/TestMSO.java159
-rw-r--r--template.demo/src/test/resources/aairesponse.json227
9 files changed, 0 insertions, 2774 deletions
diff --git a/template.demo/pom.xml b/template.demo/pom.xml
deleted file mode 100644
index e46783c8b..000000000
--- a/template.demo/pom.xml
+++ /dev/null
@@ -1,94 +0,0 @@
-<!--
- ============LICENSE_START=======================================================
- Drools PDP Application Models
- ================================================================================
- Copyright (C) 2017 AT&T Intellectual Property. All rights reserved.
- ================================================================================
- 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=========================================================
- -->
-
-<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
- <modelVersion>4.0.0</modelVersion>
-
- <artifactId>demo</artifactId>
-
- <parent>
- <groupId>org.openecomp.policy.drools-applications</groupId>
- <artifactId>drools-pdp-apps</artifactId>
- <version>1.1.0-SNAPSHOT</version>
- </parent>
-
- <dependencies>
- <dependency>
- <groupId>org.apache.httpcomponents</groupId>
- <artifactId>httpclient</artifactId>
- <version>4.5.2</version>
- <scope>provided</scope>
- </dependency>
- <dependency>
- <groupId>junit</groupId>
- <artifactId>junit</artifactId>
- <version>4.12</version>
- <scope>provided</scope>
- </dependency>
- <dependency>
- <groupId>com.google.code.gson</groupId>
- <artifactId>gson</artifactId>
- <version>2.5</version>
- <scope>provided</scope>
- </dependency>
- <dependency>
- <groupId>org.drools</groupId>
- <artifactId>drools-core</artifactId>
- <version>6.3.0.Final</version>
- <scope>provided</scope>
- </dependency>
- <dependency>
- <groupId>org.drools</groupId>
- <artifactId>drools-compiler</artifactId>
- <version>6.3.0.Final</version>
- <scope>provided</scope>
- </dependency>
- <dependency>
- <groupId>org.openecomp.policy.drools-applications</groupId>
- <artifactId>controlloop</artifactId>
- <version>${project.version}</version>
- <scope>provided</scope>
- </dependency>
- <dependency>
- <groupId>org.openecomp.policy.drools-applications</groupId>
- <artifactId>appc</artifactId>
- <version>${project.version}</version>
- <scope>provided</scope>
- </dependency>
- <dependency>
- <groupId>org.openecomp.policy.drools-applications</groupId>
- <artifactId>aai</artifactId>
- <version>${project.version}</version>
- <scope>provided</scope>
- </dependency>
- <dependency>
- <groupId>org.openecomp.policy.drools-applications</groupId>
- <artifactId>mso</artifactId>
- <version>${project.version}</version>
- <scope>provided</scope>
- </dependency>
- <dependency>
- <groupId>org.openecomp.policy.drools-applications</groupId>
- <artifactId>trafficgenerator</artifactId>
- <version>${project.version}</version>
- <scope>provided</scope>
- </dependency>
- </dependencies>
-</project>
diff --git a/template.demo/src/main/java/org/openecomp/policy/template/demo/ControlLoopException.java b/template.demo/src/main/java/org/openecomp/policy/template/demo/ControlLoopException.java
deleted file mode 100644
index 5956d6017..000000000
--- a/template.demo/src/main/java/org/openecomp/policy/template/demo/ControlLoopException.java
+++ /dev/null
@@ -1,51 +0,0 @@
-/*-
- * ============LICENSE_START=======================================================
- * demo
- * ================================================================================
- * Copyright (C) 2017 AT&T Intellectual Property. All rights reserved.
- * ================================================================================
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- * ============LICENSE_END=========================================================
- */
-
-package org.openecomp.policy.template.demo;
-
-public class ControlLoopException extends Exception {
-
- /**
- *
- */
- private static final long serialVersionUID = 6400725747325923701L;
-
- public ControlLoopException() {
- super();
- }
-
- public ControlLoopException(String message, Throwable cause, boolean enableSuppression,
- boolean writableStackTrace) {
- super(message, cause, enableSuppression, writableStackTrace);
- }
-
- public ControlLoopException(String message, Throwable cause) {
- super(message, cause);
- }
-
- public ControlLoopException(String message) {
- super(message);
- }
-
- public ControlLoopException(Throwable cause) {
- super(cause);
- }
-
-}
diff --git a/template.demo/src/main/java/org/openecomp/policy/template/demo/EventManager.java b/template.demo/src/main/java/org/openecomp/policy/template/demo/EventManager.java
deleted file mode 100644
index c54ea607a..000000000
--- a/template.demo/src/main/java/org/openecomp/policy/template/demo/EventManager.java
+++ /dev/null
@@ -1,210 +0,0 @@
-/*-
- * ============LICENSE_START=======================================================
- * demo
- * ================================================================================
- * Copyright (C) 2017 AT&T Intellectual Property. All rights reserved.
- * ================================================================================
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- * ============LICENSE_END=========================================================
- */
-
-package org.openecomp.policy.template.demo;
-
-import java.util.UUID;
-
-import org.openecomp.policy.controlloop.VirtualControlLoopEvent;
-import org.openecomp.policy.controlloop.VirtualControlLoopNotification;
-import org.openecomp.policy.template.demo.ControlLoopException;
-import org.openecomp.policy.controlloop.ControlLoopNotificationType;
-import org.openecomp.policy.controlloop.ControlLoopEventStatus;
-
-public class EventManager {
- /*
- *
- */
- public final String closedLoopControlName;
- public final UUID requestID;
- public final String target;
- public String controlLoopResult;
-
- private boolean isActivated = false;
- private VirtualControlLoopEvent onset;
- private VirtualControlLoopEvent abatement;
- private Integer numOnsets = 0;
- private Integer numAbatements = 0;
-
-
-
- public EventManager(String closedLoopControlName, UUID requestID, String target) {
- this.closedLoopControlName = closedLoopControlName;
- this.requestID = requestID;
- this.target = target;
- }
-
- public Integer getNumOnsets() {
- return numOnsets;
- }
-
- public void setNumOnsets(Integer numOnsets) {
- this.numOnsets = numOnsets;
- }
-
- public Integer getNumAbatements() {
- return numAbatements;
- }
-
- public void setNumAbatements(Integer numAbatements) {
- this.numAbatements = numAbatements;
- }
-
- public boolean isActivated() {
- return isActivated;
- }
-
- public void setActivated(boolean isActivated) {
- this.isActivated = isActivated;
- }
-
- public VirtualControlLoopEvent getOnsetEvent() {
- return this.onset;
- }
-
- public VirtualControlLoopEvent getAbatementEvent() {
- return this.abatement;
- }
-
- public void setControlLoopResult(String result) {
- this.controlLoopResult = result;
- }
-
- public VirtualControlLoopNotification activate(VirtualControlLoopEvent event) {
- VirtualControlLoopNotification notification = new VirtualControlLoopNotification(event);
- try {
- //
- // This method should ONLY be called ONCE
- //
- if (this.isActivated) {
- throw new ControlLoopException("ControlLoopEventManager has already been activated.");
- }
- //
- // Syntax check the event
- //
- checkEventSyntax(event);
- //
- // At this point we are good to go with this event
- //
- this.onset = event;
- this.numOnsets = 1;
- //
- notification.notification = ControlLoopNotificationType.ACTIVE;
- //
- // Set ourselves as active
- //
- this.isActivated = true;
- } catch (ControlLoopException e) {
- notification.notification = ControlLoopNotificationType.REJECTED;
- notification.message = e.getMessage();
- }
- return notification;
-
- }
-
- public static void checkEventSyntax(VirtualControlLoopEvent event) throws ControlLoopException {
- if (event.closedLoopEventStatus == null ||
- (event.closedLoopEventStatus != ControlLoopEventStatus.ONSET &&
- event.closedLoopEventStatus != ControlLoopEventStatus.ABATED)) {
- throw new ControlLoopException("Invalid value in closedLoopEventStatus");
- }
- if (event.closedLoopControlName == null || event.closedLoopControlName.length() < 1) {
- throw new ControlLoopException("No control loop name");
- }
- if (event.requestID == null) {
- throw new ControlLoopException("No request ID");
- }
- if (event.AAI == null) {
- throw new ControlLoopException("AAI is null");
- }
- if (event.target == null || event.target.length() < 1) {
- throw new ControlLoopException("No target field");
- } else {
- if (! event.target.equalsIgnoreCase("VM_NAME") &&
- ! event.target.equalsIgnoreCase("VNF_NAME") &&
- ! event.target.equalsIgnoreCase("vserver.vserver-name") &&
- ! event.target.equalsIgnoreCase("generic-vnf.vnf-id") ) {
- throw new ControlLoopException("target field invalid");
- }
- }
- }
-
- public enum NEW_EVENT_STATUS {
- FIRST_ONSET,
- SUBSEQUENT_ONSET,
- FIRST_ABATEMENT,
- SUBSEQUENT_ABATEMENT,
- SYNTAX_ERROR
- ;
- }
-
- public NEW_EVENT_STATUS onNewEvent(VirtualControlLoopEvent event) {
- try {
- EventManager.checkEventSyntax(event);
- if (event.closedLoopEventStatus == ControlLoopEventStatus.ONSET) {
- //
- // Check if this is our original ONSET
- //
- if (event.equals(this.onset)) {
- //
- // DO NOT retract it
- //
- return NEW_EVENT_STATUS.FIRST_ONSET;
- }
- //
- // Log that we got an onset
- //
- this.numOnsets++;
- return NEW_EVENT_STATUS.SUBSEQUENT_ONSET;
- } else if (event.closedLoopEventStatus == ControlLoopEventStatus.ABATED) {
- //
- // Have we already got an abatement?
- //
- if (this.abatement == null) {
- //
- // Save this
- //
- this.abatement = event;
- //
- // Keep track that we received another
- //
- this.numAbatements++;
- //
- //
- //
- return NEW_EVENT_STATUS.FIRST_ABATEMENT;
- } else {
- //
- // Keep track that we received another
- //
- this.numAbatements++;
- //
- //
- //
- return NEW_EVENT_STATUS.SUBSEQUENT_ABATEMENT;
- }
- } else {
- return NEW_EVENT_STATUS.SYNTAX_ERROR;
- }
- } catch (ControlLoopException e) {
- return NEW_EVENT_STATUS.SYNTAX_ERROR;
- }
- }
-}
diff --git a/template.demo/src/main/java/org/openecomp/policy/template/demo/PolicyEngine.java b/template.demo/src/main/java/org/openecomp/policy/template/demo/PolicyEngine.java
deleted file mode 100644
index 4daf89750..000000000
--- a/template.demo/src/main/java/org/openecomp/policy/template/demo/PolicyEngine.java
+++ /dev/null
@@ -1,81 +0,0 @@
-/*-
- * ============LICENSE_START=======================================================
- * demo
- * ================================================================================
- * Copyright (C) 2017 AT&T Intellectual Property. All rights reserved.
- * ================================================================================
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- * ============LICENSE_END=========================================================
- */
-
- package org.openecomp.policy.template.demo;
-
- import java.util.HashMap;
- import java.util.LinkedList;
- import java.util.Map;
- import java.util.Queue;
-
- import org.openecomp.policy.controlloop.VirtualControlLoopNotification;
- import org.openecomp.policy.appc.Request;
- import org.openecomp.policy.controlloop.util.Serialization;
-
-
- public class PolicyEngine {
-
- private static Map<String, Map<String, Queue<Object>>> busMap = new HashMap<String, Map<String, Queue<Object>>>();
-
- public PolicyEngine() {}
-
- public boolean deliver(String busType, String topic, Object obj) {
- if (obj instanceof VirtualControlLoopNotification) {
- VirtualControlLoopNotification notification = (VirtualControlLoopNotification) obj;
- System.out.println("Notification to be sent:");
- System.out.println(Serialization.gsonPretty.toJson(notification));
- }
- if (obj instanceof Request) {
- Request request = (Request) obj;
- System.out.println("APPC request to be sent:");
- System.out.println("Request: " + request.Action + " RequestID: " + request.CommonHeader.RequestID + " Payload: " + request.Payload);
- }
- //
- // Does the bus exist?
- //
- if (busMap.containsKey(busType) == false) {
- System.out.println("creating new bus type " + busType);
- //
- // Create the bus
- //
- busMap.put(busType, new HashMap<String, Queue<Object>>());
- }
- //
- // Get the bus
- //
- Map<String, Queue<Object>> topicMap = busMap.get(busType);
- //
- // Does the topic exist?
- //
- if (topicMap.containsKey(topic) == false) {
- System.out.println("creating new topic " + topic);
- //
- // Create the topic
- //
- topicMap.put(topic, new LinkedList<Object>());
- }
- //
- // Get the topic queue
- //
- System.out.println("queueing");
- return topicMap.get(topic).add(obj);
-
- }
- }
diff --git a/template.demo/src/main/resources/archetype-resources/src/main/resources/ControlLoopDemo__closedLoopControlName__.drl b/template.demo/src/main/resources/archetype-resources/src/main/resources/ControlLoopDemo__closedLoopControlName__.drl
deleted file mode 100644
index 987fa60a6..000000000
--- a/template.demo/src/main/resources/archetype-resources/src/main/resources/ControlLoopDemo__closedLoopControlName__.drl
+++ /dev/null
@@ -1,1299 +0,0 @@
-/*-
- * ============LICENSE_START=======================================================
- * demo
- * ================================================================================
- * Copyright (C) 2017 AT&T Intellectual Property. All rights reserved.
- * ================================================================================
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- * ============LICENSE_END=========================================================
- */
-
-
-package org.openecomp.policy.controlloop;
-
-import java.util.List;
-import java.util.LinkedList;
-import java.util.Map;
-import java.util.HashMap;
-import java.util.UUID;
-
-import org.openecomp.policy.controlloop.VirtualControlLoopEvent;
-import org.openecomp.policy.controlloop.ControlLoopEventStatus;
-import org.openecomp.policy.controlloop.VirtualControlLoopNotification;
-import org.openecomp.policy.controlloop.ControlLoopNotificationType;
-import org.openecomp.policy.controlloop.ControlLoopOperation;
-import org.openecomp.policy.controlloop.ControlLoopOperationWrapper;
-import org.openecomp.policy.template.demo.ControlLoopException;
-
-import org.openecomp.policy.aai.AAINQF199.AAINQF199CloudRegion;
-import org.openecomp.policy.aai.AAINQF199.AAINQF199ExtraProperties;
-import org.openecomp.policy.aai.AAINQF199.AAINQF199ExtraProperty;
-import org.openecomp.policy.aai.AAINQF199.AAINQF199GenericVNF;
-import org.openecomp.policy.aai.AAINQF199.AAINQF199InstanceFilters;
-import org.openecomp.policy.aai.AAINQF199.AAINQF199InventoryResponseItem;
-import org.openecomp.policy.aai.AAINQF199.AAINQF199InventoryResponseItems;
-import org.openecomp.policy.aai.AAINQF199.AAINQF199Manager;
-import org.openecomp.policy.aai.AAINQF199.AAINQF199NamedQuery;
-import org.openecomp.policy.aai.AAINQF199.AAINQF199QueryParameters;
-import org.openecomp.policy.aai.AAINQF199.AAINQF199Request;
-import org.openecomp.policy.aai.AAINQF199.AAINQF199RequestWrapper;
-import org.openecomp.policy.aai.AAINQF199.AAINQF199Response;
-import org.openecomp.policy.aai.AAINQF199.AAINQF199ResponseWrapper;
-import org.openecomp.policy.aai.AAINQF199.AAINQF199ServiceInstance;
-import org.openecomp.policy.aai.AAINQF199.AAINQF199Tenant;
-import org.openecomp.policy.aai.AAINQF199.AAINQF199VfModule;
-import org.openecomp.policy.aai.AAINQF199.AAINQF199VServer;
-import org.openecomp.policy.aai.util.Serialization;
-
-import org.openecomp.policy.appc.CommonHeader;
-import org.openecomp.policy.appc.Request;
-import org.openecomp.policy.appc.Response;
-import org.openecomp.policy.appc.ResponseCode;
-import org.openecomp.policy.appc.ResponseStatus;
-import org.openecomp.policy.appc.ResponseValue;
-
-import org.openecomp.policy.template.demo.EventManager;
-import org.openecomp.policy.vnf.trafficgenerator.PGRequest;
-import org.openecomp.policy.vnf.trafficgenerator.PGStream;
-import org.openecomp.policy.vnf.trafficgenerator.PGStreams;
-
-import org.openecomp.policy.mso.MSOManager;
-import org.openecomp.policy.mso.MSORequest;
-import org.openecomp.policy.mso.MSORequestStatus;
-import org.openecomp.policy.mso.MSORequestDetails;
-import org.openecomp.policy.mso.MSOModelInfo;
-import org.openecomp.policy.mso.MSOCloudConfiguration;
-import org.openecomp.policy.mso.MSORequestInfo;
-import org.openecomp.policy.mso.MSORequestParameters;
-import org.openecomp.policy.mso.MSORelatedInstanceListElement;
-import org.openecomp.policy.mso.MSORelatedInstance;
-import org.openecomp.policy.mso.MSOResponse;
-
-//import org.openecomp.policy.drools.system.PolicyEngine;
-
-//
-// These parameters are required to build the runtime policy
-//
-declare Params
- closedLoopControlName : String
- actor : String
- aaiURL : String
- aaiUsername : String
- aaiPassword : String
- msoURL : String
- msoUsername : String
- msoPassword : String
- aaiNamedQueryUUID : String
- aaiPatternMatch : int
- notificationTopic : String
- appcTopic : String
-end
-
-/*
-*
-* Called once and only once to insert the parameters into working memory for this Closed Loop policy.
-* (Comment SETUP rule out for the first ECOMP opensource release since policy BRMS_GW already puts a Params fact in there)
-*
-*/
-rule "${policyName}.SETUP"
- when
- then
- System.out.println("rule SETUP is triggered.");
- Params params = new Params();
- params.setClosedLoopControlName("${closedLoopControlName}");
- params.setActor("${actor}");
- params.setAaiURL("${aaiURL}");
- params.setAaiUsername("${aaiUsername}");
- params.setAaiPassword("${aaiPassword}");
- params.setMsoURL("${msoURL}");
- params.setMsoUsername("${msoUsername}");
- params.setMsoPassword("${msoPassword}");
- params.setAaiNamedQueryUUID("${aaiNamedQueryUUID}");
- params.setAaiPatternMatch(${aaiPatternMatch});
- params.setNotificationTopic("${notificationTopic}");
- params.setAppcTopic("${appcTopic}");
- //
- // This stays in memory as long as the rule is alive and running
- //
- insert(params);
-end
-
-/*
-*
-* This rule responds to DCAE Events
-*
-*/
-rule "${policyName}.EVENT"
- when
- $params : Params( getClosedLoopControlName() == "${closedLoopControlName}" )
- $event : VirtualControlLoopEvent( closedLoopControlName == $params.getClosedLoopControlName(), closedLoopEventStatus == ControlLoopEventStatus.ONSET )
- not ( EventManager( closedLoopControlName == $event.closedLoopControlName ))
- then
- System.out.println("rule EVENT is triggered.");
- try {
- //
- // Check the requestID in the event to make sure it is not null before we create the EventManager.
- // The EventManager will do extra syntax checking as well check if the closed loop is disabled/
- //
- if ($event.requestID == null) {
- VirtualControlLoopNotification notification = new VirtualControlLoopNotification($event);
- notification.notification = ControlLoopNotificationType.REJECTED;
- notification.from = "policy";
- notification.message = "Missing requestID from DCAE event";
- notification.policyName = drools.getRule().getName();
- notification.policyScope = "${policyScope}";
- notification.policyVersion = "${policyVersion}";
- //
- // Let interested parties know
- //
- try {
- System.out.println(Serialization.gsonPretty.toJson(notification));
- //PolicyEngine.manager.deliver($params.getNotificationTopic(), notification);
- } catch (Exception e) {
- e.printStackTrace();
- System.out.println("Can't deliver notification: " + notification);
- }
- //
- // Retract it from memory
- //
- retract($event);
- System.out.println("Event with requestID=null has been retracted.");
- } else {
- //
- // Create an EventManager
- //
- EventManager manager = new EventManager($params.getClosedLoopControlName(), $event.requestID, $event.target);
- //
- // Determine if EventManager can actively process the event (i.e. syntax)
- //
- VirtualControlLoopNotification notification = manager.activate($event);
- notification.from = "policy";
- notification.policyName = drools.getRule().getName();
- notification.policyScope = "${policyScope}";
- notification.policyVersion = "${policyVersion}";
- //
- // Are we actively pursuing this event?
- //
- if (notification.notification == ControlLoopNotificationType.ACTIVE) {
- //
- // Insert Event Manager into memory, this will now kick off processing.
- //
- insert(manager);
- //
- // Let interested parties know
- //
- try {
- System.out.println(Serialization.gsonPretty.toJson(notification));
- //PolicyEngine.manager.deliver($params.getNotificationTopic(), notification);
- } catch (Exception e) {
- e.printStackTrace();
- System.out.println("Can't deliver notification: " + notification);
- }
- } else {
- //
- // Let interested parties know
- //
- try {
- System.out.println(Serialization.gsonPretty.toJson(notification));
- //PolicyEngine.manager.deliver($params.getNotificationTopic(), notification);
- } catch (Exception e) {
- e.printStackTrace();
- System.out.println("Can't deliver notification: " + notification);
- }
- //
- // Retract it from memory
- //
- retract($event);
- }
- //
- // Now that the manager is inserted into Drools working memory, we'll wait for
- // another rule to fire in order to continue processing. This way we can also
- // then screen for additional ONSET and ABATED events for this same RequestIDs
- // and for different RequestIDs but with the same closedLoopControlName and target.
- //
- }
- //
- } catch (Exception e) {
- e.printStackTrace();
- VirtualControlLoopNotification notification = new VirtualControlLoopNotification($event);
- notification.notification = ControlLoopNotificationType.REJECTED;
- notification.message = "Exception occurred " + e.getMessage();
- notification.policyName = drools.getRule().getName();
- notification.policyScope = "${policyScope}";
- notification.policyVersion = "${policyVersion}";
- //
- //
- //
- try {
- System.out.println(Serialization.gsonPretty.toJson(notification));
- //PolicyEngine.manager.deliver($params.getNotificationTopic(), notification);
- } catch (Exception e1) {
- System.out.println("Can't deliver notification: " + notification);
- e1.printStackTrace();
- }
- //
- // Retract the event
- //
- retract($event);
- }
-end
-
-/*
-*
-* This rule happens when we got a valid ONSET, closed loop is enabled and an Event Manager
-* is created. We can start the operations for this closed loop.
-*
-*/
-rule "${policyName}.EVENT.MANAGER"
- when
- $params : Params( getClosedLoopControlName() == "${closedLoopControlName}" )
- $event : VirtualControlLoopEvent( closedLoopControlName == $params.getClosedLoopControlName(), closedLoopEventStatus == ControlLoopEventStatus.ONSET )
- $manager : EventManager( closedLoopControlName == $event.closedLoopControlName, controlLoopResult == null)
- then
- System.out.println("rule EVENT.MANAGER is triggered.");
- //
- // Check which event this is.
- //
- EventManager.NEW_EVENT_STATUS eventStatus = $manager.onNewEvent($event);
- //
- // We only want the initial ONSET event in memory,
- // all the other events need to be retracted to support
- // cleanup and avoid the other rules being fired for this event.
- //
- if (eventStatus != EventManager.NEW_EVENT_STATUS.FIRST_ONSET) {
- System.out.println("Retracting "+eventStatus+" Event.");
- retract($event);
- return;
- }
- //
- // Now the event in memory is first onset event
- //
- try {
- //
- // Pull the known AAI field from the Event
- //
- // generic-vnf is needed for vFirewall case
- // vserver-name is needed for vLoadBalancer case
- //
- String genericVNF = $event.AAI.get("generic-vnf.vnf-id");
- String vserver = $event.AAI.get("vserver.vserver-name");
- //
- // Check if we are implementing a simple pattern match.
- //
- if ($params.getAaiPatternMatch() == 1) {
- //
- // Yes
- //
- //Basic naming characteristics:
- //VF Name (9 char)+VM name (13 char total)+VFC (19 char total)
- //Example:
- //VF Name (9 characters): cscf0001v
- //VM Name(13 characters): cscf0001vm001
- //VFC name(19 characters): cscf0001vm001cfg001
- //
- // zdfw1fwl01fwl02 or zdfw1fwl01fwl01
- // replaced with
- // zdfw1fwl01pgn02 or zdfw1fwl01pgn01
- //
- int index = genericVNF.lastIndexOf("fwl");
- if (index == -1) {
- System.err.println("The generic-vnf.vnf-id from DCAE Event is not valid.");
- } else {
- genericVNF = genericVNF.substring(0, index) + "pgn" + genericVNF.substring(index+"fwl".length());
- }
- //
- // Construct an APPC request
- //
- ControlLoopOperation operation = new ControlLoopOperation();
- operation.actor = $params.getActor();
- operation.operation = "ModifyConfig";
- operation.target = $event.target;
- //
- // Create operationWrapper
- //
- ControlLoopOperationWrapper operationWrapper = new ControlLoopOperationWrapper($event.requestID, operation);
- //
- // insert operationWrapper into memory
- //
- insert(operationWrapper);
- //
- Request request = new Request();
- request.CommonHeader = new CommonHeader();
- request.CommonHeader.RequestID = $event.requestID;
- request.Action = operation.operation;
- request.Payload = new HashMap<String, Object>();
- //
- // Fill in the payload
- //
- request.Payload.put("generic-vnf.vnf-id", genericVNF);
- //
- PGRequest pgRequest = new PGRequest();
- pgRequest.pgStreams = new PGStreams();
-
- PGStream pgStream;
- for(int i = 0; i < 5; i++){
- pgStream = new PGStream();
- pgStream.streamId = "fw_udp"+(i+1);
- pgStream.isEnabled = "true";
- pgRequest.pgStreams.pgStream.add(pgStream);
- }
- request.Payload.put("pg-streams", pgRequest.pgStreams);
-
- if (request != null) {
- //
- // Insert request into memory
- //
- insert(request);
- //
- // Tell interested parties we are performing this Operation
- //
- VirtualControlLoopNotification notification = new VirtualControlLoopNotification($event);
- notification.notification = ControlLoopNotificationType.OPERATION;
- // message and history ??
- notification.from = "policy";
- notification.policyName = drools.getRule().getName();
- notification.policyScope = "${policyScope}";
- notification.policyVersion = "${policyVersion}";
- try {
- System.out.println(Serialization.gsonPretty.toJson(notification));
- //PolicyEngine.manager.deliver($params.getNotificationTopic(), notification);
- } catch (Exception e) {
- System.out.println("Can't deliver notification: " + notification);
- e.printStackTrace();
- }
- //
- // Now send the operation request
- //
- if (request instanceof Request) {
- try {
- System.out.println("APPC request sent:");
- System.out.println(Serialization.gsonPretty.toJson(request));
- //PolicyEngine.manager.deliver($params.getAppcTopic(), request);
- } catch (Exception e) {
- e.printStackTrace();
- System.out.println("Can't deliver request: " + request);
- }
- }
- } else {
- //
- // what happens if it is null
- //
- }
- //
- } else {
- //
- // create AAI named-query request with UUID started with "F199"
- //
- AAINQF199Request aainqf199request = new AAINQF199Request();
- AAINQF199QueryParameters aainqf199queryparam = new AAINQF199QueryParameters();
- AAINQF199NamedQuery aainqf199namedquery = new AAINQF199NamedQuery();
- AAINQF199InstanceFilters aainqf199instancefilter = new AAINQF199InstanceFilters();
- //
- // queryParameters
- //
- aainqf199namedquery.namedQueryUUID = UUID.fromString($params.getAaiNamedQueryUUID());
- aainqf199queryparam.namedQuery = aainqf199namedquery;
- aainqf199request.queryParameters = aainqf199queryparam;
- //
- // instanceFilters
- //
- Map aainqf199instancefiltermap = new HashMap();
- Map aainqf199instancefiltermapitem = new HashMap();
- aainqf199instancefiltermapitem.put("vserver-name", vserver);
- aainqf199instancefiltermap.put("vserver", aainqf199instancefiltermapitem);
- aainqf199instancefilter.instanceFilter.add(aainqf199instancefiltermap);
- aainqf199request.instanceFilters = aainqf199instancefilter;
- //
- // print aainqf199request for debug
- //
- System.out.println("AAI Request sent:");
- System.out.println(Serialization.gsonPretty.toJson(aainqf199request));
- //
- // Create AAINQF199RequestWrapper
- //
- AAINQF199RequestWrapper aainqf199RequestWrapper = new AAINQF199RequestWrapper($event.requestID, aainqf199request);
- //
- // insert aainqf199request into memory
- //
- insert(aainqf199RequestWrapper);
- }
- //
- } catch (Exception e) {
- e.printStackTrace();
- }
-end
-
-/*
-*
-* This rule happens when we got a valid ONSET, closed loop is enabled, an Event Manager
-* is created, AAI Manager and AAI Request are ready in memory. We can start sending query to AAI and then wait for response.
-*
-*/
-rule "${policyName}.EVENT.MANAGER.AAINQF199REQUEST"
- when
- $params : Params( getClosedLoopControlName() == "${closedLoopControlName}" )
- $event : VirtualControlLoopEvent( closedLoopControlName == $params.getClosedLoopControlName(), closedLoopEventStatus == ControlLoopEventStatus.ONSET )
- $manager : EventManager( closedLoopControlName == $event.closedLoopControlName )
- $aainqf199RequestWrapper : AAINQF199RequestWrapper(requestID == $event.requestID)
- then
- System.out.println("rule EVENT.MANAGER.AAINQF199REQUEST is triggered.");
- //
- // send the request
- //
- AAINQF199Response aainqf199response = AAINQF199Manager.postQuery($params.getAaiURL(), $params.getAaiUsername(), $params.getAaiPassword(),
- $aainqf199RequestWrapper.aainqf199request, $event.requestID);
-
-
-
- //////////////////////////////////////////////////////////
- // Simulate a valid aainqf199response for junit test
- // Remove this for real deployment
- //
-
- AAINQF199InventoryResponseItem serviceItem = new AAINQF199InventoryResponseItem();
- serviceItem.modelName = "service-instance";
- serviceItem.serviceInstance = new AAINQF199ServiceInstance();
- serviceItem.serviceInstance.serviceInstanceID = "cf8426a6-0b53-4e3d-bfa6-4b2f4d5913a5";
- serviceItem.serviceInstance.serviceInstanceName = "Service_Ete_Named90e1ab3-dcd5-4877-9edb-eadfc84e32c8";
- serviceItem.serviceInstance.personaModelId = "4fcbc1c0-7793-46d8-8aa1-fa1c2ed9ec7b";
- serviceItem.serviceInstance.personaModelVersion = "1.0";
- serviceItem.serviceInstance.resourceVersion = "1485542400";
- serviceItem.extraProperties = new AAINQF199ExtraProperties();
- serviceItem.extraProperties.extraProperty.add(new AAINQF199ExtraProperty("model.model-name", "8330e932-2a23-4943-8606"));
- serviceItem.extraProperties.extraProperty.add(new AAINQF199ExtraProperty("model.model-type", "service"));
- serviceItem.extraProperties.extraProperty.add(new AAINQF199ExtraProperty("model.model-version", "1"));
- serviceItem.extraProperties.extraProperty.add(new AAINQF199ExtraProperty("model.model-id", "4fcbc1c0-7793-46d8-8aa1-fa1c2ed9ec7b"));
- serviceItem.extraProperties.extraProperty.add(new AAINQF199ExtraProperty("model.model-name-version-id", "5c996219-b2e2-4c76-9b43-7e8672a33c1d"));
-
- AAINQF199InventoryResponseItem vfModuleItem = new AAINQF199InventoryResponseItem();
- vfModuleItem.modelName = "C15ce9e1E9144c8fB8bb..base_vlb..module-0";
- vfModuleItem.vfModule = new AAINQF199VfModule();
- vfModuleItem.vfModule.vfModuleId = "b0eff878-e2e1-4947-9597-39afdd0f51dd";
- vfModuleItem.vfModule.vfModuleName = "Vfmodule_Ete_Named90e1ab3-dcd5-4877-9edb-eadfc84e32c8";
- vfModuleItem.vfModule.heatStackId = "Vfmodule_Ete_Named90e1ab3-dcd5-4877-9edb-eadfc84e32c8/5845f37b-6cda-4e91-8ca3-f5572d226488";
- vfModuleItem.vfModule.orchestrationStatus = "active";
- vfModuleItem.vfModule.isBaseVfModule = true;
- vfModuleItem.vfModule.resourceVersion = "1485542667";
- vfModuleItem.vfModule.personaModelId = "79ee24cd-fc9a-4f14-afae-5e1dd2ab2941";
- vfModuleItem.vfModule.personaModelVersion = "1";
-
- vfModuleItem.extraProperties = new AAINQF199ExtraProperties();
- vfModuleItem.extraProperties.extraProperty.add(new AAINQF199ExtraProperty("model.model-name", "C15ce9e1E9144c8fB8bb..base_vlb..module-0"));
- vfModuleItem.extraProperties.extraProperty.add(new AAINQF199ExtraProperty("model.model-type", "resource"));
- vfModuleItem.extraProperties.extraProperty.add(new AAINQF199ExtraProperty("model.model-version", "1"));
- vfModuleItem.extraProperties.extraProperty.add(new AAINQF199ExtraProperty("model.model-id", "79ee24cd-fc9a-4f14-afae-5e1dd2ab2941"));
- vfModuleItem.extraProperties.extraProperty.add(new AAINQF199ExtraProperty("model.model-name-version-id", "5484cabb-1a0d-4f29-a616-094a3f643d73"));
-
-
- AAINQF199InventoryResponseItem vfModuleItem1 = new AAINQF199InventoryResponseItem();
- //vfModuleItem1.modelName = "vf-module";
- vfModuleItem1.vfModule = new AAINQF199VfModule();
- vfModuleItem1.vfModule.vfModuleId = "dummy";
- vfModuleItem1.vfModule.vfModuleName = "dummy";
- vfModuleItem1.vfModule.isBaseVfModule = false;
- vfModuleItem1.vfModule.resourceVersion = "1485561752";
- vfModuleItem1.vfModule.personaModelId = "f32568ec-2f1c-458a-864b-0593d53d141a";
- vfModuleItem1.vfModule.personaModelVersion = "1.0";
-
- vfModuleItem1.extraProperties = new AAINQF199ExtraProperties();
- vfModuleItem1.extraProperties.extraProperty.add(new AAINQF199ExtraProperty("model.model-name", "C15ce9e1E9144c8fB8bb..dnsscaling..module-1"));
- vfModuleItem1.extraProperties.extraProperty.add(new AAINQF199ExtraProperty("model.model-type", "resource"));
- vfModuleItem1.extraProperties.extraProperty.add(new AAINQF199ExtraProperty("model.model-version", "1"));
- vfModuleItem1.extraProperties.extraProperty.add(new AAINQF199ExtraProperty("model.model-id", "f32568ec-2f1c-458a-864b-0593d53d141a"));
- vfModuleItem1.extraProperties.extraProperty.add(new AAINQF199ExtraProperty("model.model-name-version-id", "69615025-879d-4f0d-afe3-b7d1a7eeed1f"));
-
-
-
- AAINQF199InventoryResponseItem vfModuleItem2 = new AAINQF199InventoryResponseItem();
- //vfModuleItem2.modelName = "vf-module";
- vfModuleItem2.vfModule = new AAINQF199VfModule();
- vfModuleItem2.vfModule.vfModuleId = "8cd79e44-1fae-48c1-a160-609f90b46749";
- vfModuleItem2.vfModule.vfModuleName = "vDNS_Ete_Named90e1ab3-dcd5-4877-9edb-eadfc84e32c8";
- vfModuleItem2.vfModule.heatStackId = "vDNS_Ete_Named90e1ab3-dcd5-4877-9edb-eadfc84e32c8/f447ce51-14dd-4dcd-9957-68a047c79673";
- vfModuleItem2.vfModule.orchestrationStatus = "active";
- vfModuleItem2.vfModule.isBaseVfModule = false;
- vfModuleItem2.vfModule.resourceVersion = "1485562712";
- vfModuleItem2.vfModule.personaModelId = "f32568ec-2f1c-458a-864b-0593d53d141a";
- vfModuleItem2.vfModule.personaModelVersion = "1.0";
-
- vfModuleItem2.extraProperties = new AAINQF199ExtraProperties();
- vfModuleItem2.extraProperties.extraProperty.add(new AAINQF199ExtraProperty("model.model-name", "C15ce9e1E9144c8fB8bb..dnsscaling..module-1"));
- vfModuleItem2.extraProperties.extraProperty.add(new AAINQF199ExtraProperty("model.model-type", "resource"));
- vfModuleItem2.extraProperties.extraProperty.add(new AAINQF199ExtraProperty("model.model-version", "1"));
- vfModuleItem2.extraProperties.extraProperty.add(new AAINQF199ExtraProperty("model.model-id", "f32568ec-2f1c-458a-864b-0593d53d141a"));
- vfModuleItem2.extraProperties.extraProperty.add(new AAINQF199ExtraProperty("model.model-name-version-id", "69615025-879d-4f0d-afe3-b7d1a7eeed1f"));
-
-
-
-
-
- AAINQF199InventoryResponseItem genericVNFItem = new AAINQF199InventoryResponseItem();
- genericVNFItem.modelName = "generic-vnf";
- genericVNFItem.genericVNF = new AAINQF199GenericVNF();
- genericVNFItem.genericVNF.vnfID = "594e2fe0-48b8-41ff-82e2-3d4bab69b192";
- genericVNFItem.genericVNF.vnfName = "Vnf_Ete_Named90e1ab3-dcd5-4877-9edb-eadfc84e32c8";
- genericVNFItem.genericVNF.vnfType = "8330e932-2a23-4943-8606/c15ce9e1-e914-4c8f-b8bb 1";
- genericVNFItem.genericVNF.serviceId = "b3f70641-bdb9-4030-825e-6abb73a1f929";
-// genericVNFItem.genericVNF.provStatus = "PREPROV";
-// genericVNFItem.genericVNF.operationalState = "dhv-test-operational-state";
-// genericVNFItem.genericVNF.ipv4OamAddress = "dhv-test-gvnf-ipv4-oam-address";
-// genericVNFItem.genericVNF.ipv4Loopback0Address = "dhv-test-gvnfipv4-loopback0-address";
- genericVNFItem.genericVNF.inMaint = false;
- genericVNFItem.genericVNF.isClosedLoopDisabled = false;
- genericVNFItem.genericVNF.resourceVersion = "1485542422";
-// genericVNFItem.genericVNF.encrypedAccessFlag = true;
- genericVNFItem.genericVNF.personaModelId = "033a32ed-aa65-4764-a736-36f2942f1aa0";
- genericVNFItem.genericVNF.personaModelVersion = "1.0";
- genericVNFItem.extraProperties = new AAINQF199ExtraProperties();
- genericVNFItem.extraProperties.extraProperty = new LinkedList<AAINQF199ExtraProperty>();
- genericVNFItem.extraProperties.extraProperty.add(new AAINQF199ExtraProperty("model.model-name", "c15ce9e1-e914-4c8f-b8bb"));
- genericVNFItem.extraProperties.extraProperty.add(new AAINQF199ExtraProperty("model.model-type", "resource"));
- genericVNFItem.extraProperties.extraProperty.add(new AAINQF199ExtraProperty("model.model-version", "1"));
- genericVNFItem.extraProperties.extraProperty.add(new AAINQF199ExtraProperty("model.model-id", "033a32ed-aa65-4764-a736-36f2942f1aa0"));
- genericVNFItem.extraProperties.extraProperty.add(new AAINQF199ExtraProperty("model.model-name-version-id", "d4d072dc-4e21-4a03-9524-628985819a8e"));
- genericVNFItem.items = new AAINQF199InventoryResponseItems();
- genericVNFItem.items.inventoryResponseItems = new LinkedList<AAINQF199InventoryResponseItem>();
- genericVNFItem.items.inventoryResponseItems.add(serviceItem);
- genericVNFItem.items.inventoryResponseItems.add(vfModuleItem);
- genericVNFItem.items.inventoryResponseItems.add(vfModuleItem1);
- genericVNFItem.items.inventoryResponseItems.add(vfModuleItem2);
-
- AAINQF199InventoryResponseItem cloudItem = new AAINQF199InventoryResponseItem();
- cloudItem.cloudRegion = new AAINQF199CloudRegion();
- cloudItem.cloudRegion.cloudOwner = "OWNER";
- cloudItem.cloudRegion.cloudRegionId = "REGIONID";
- cloudItem.cloudRegion.cloudRegionVersion = "2.5";
- cloudItem.cloudRegion.complexName = "COMPLEXNAME";
- cloudItem.cloudRegion.resourceVersion = "1485465545";
-
- AAINQF199InventoryResponseItem tenantItem = new AAINQF199InventoryResponseItem();
- tenantItem.tenant = new AAINQF199Tenant();
- tenantItem.tenant.tenantId = "1015548";
- tenantItem.tenant.tenantName = "1015548";
- tenantItem.tenant.resourceVersion = "1485465545";
- tenantItem.items = new AAINQF199InventoryResponseItems();
- tenantItem.items.inventoryResponseItems = new LinkedList<AAINQF199InventoryResponseItem>();
- tenantItem.items.inventoryResponseItems.add(cloudItem);
-
- AAINQF199InventoryResponseItem vserverItem = new AAINQF199InventoryResponseItem();
- vserverItem.vserver = new AAINQF199VServer();
- vserverItem.vserver.vserverId = "70f081eb-2a87-4c81-9296-4b93d7d145c6";
- vserverItem.vserver.vserverName = "vlb-lb-32c8";
- vserverItem.vserver.vserverName2 = "vlb-lb-32c8";
- vserverItem.vserver.provStatus = "ACTIVE";
- vserverItem.vserver.vserverSelflink = "https://dfw.servers.api.rackspacecloud.com/v2/1015548/servers/70f081eb-2a87-4c81-9296-4b93d7d145c6";
- vserverItem.vserver.inMaint = false;
- vserverItem.vserver.isClosedLoopDisabled = false;
- vserverItem.vserver.resourceVersion = "1485546436";
- vserverItem.items = new AAINQF199InventoryResponseItems();
- vserverItem.items.inventoryResponseItems = new LinkedList<AAINQF199InventoryResponseItem>();
- vserverItem.items.inventoryResponseItems.add(genericVNFItem);
- vserverItem.items.inventoryResponseItems.add(tenantItem);
-
- aainqf199response = new AAINQF199Response();
- aainqf199response.inventoryResponseItems.add(vserverItem);
-
- System.out.println("PAM");
- System.out.println(Serialization.gsonPretty.toJson(aainqf199response));
-
- //////////////////////////////////////////////////////////
-
-
-
-
-
- //
- // Check AAI response
- //
- if (aainqf199response == null) {
- System.err.println("Failed to get AAI response");
- //
- // Fail and retract everything
- //
- retract($event);
- retract($manager);
- retract($aainqf199RequestWrapper);
- } else {
- //
- // Create AAINQF199ResponseWrapper
- //
- AAINQF199ResponseWrapper aainqf199ResponseWrapper = new AAINQF199ResponseWrapper($event.requestID, aainqf199response);
- //
- // insert aainqf199ResponseWrapper to memeory
- //
- insert(aainqf199ResponseWrapper);
- }
-end
-
-/*
-*
-* This rule happens when we got a valid AAI response. We can start sending request to APPC or MSO now.
-*
-*/
-rule "${policyName}.EVENT.MANAGER.AAINQF199RESPONSE"
- when
- $params : Params( getClosedLoopControlName() == "${closedLoopControlName}" )
- $event : VirtualControlLoopEvent( closedLoopControlName == $params.getClosedLoopControlName(), closedLoopEventStatus == ControlLoopEventStatus.ONSET )
- $manager : EventManager( closedLoopControlName == $event.closedLoopControlName )
- $aainqf199RequestWrapper : AAINQF199RequestWrapper(requestID == $event.requestID)
- $aainqf199ResponseWrapper : AAINQF199ResponseWrapper(requestID == $event.requestID)
- then
- System.out.println("rule EVENT.MANAGER.AAINQF199RESPONSE is triggered.");
- //
- // Extract related fields out of AAINQF199RESPONSE
- //
- //
- String vnfItemVnfId, vnfItemVnfType, vnfItemPersonaModelId, vnfItemPersonaModelVersion, vnfItemModelName,
- vnfItemModelVersion, vnfItemModelNameVersionId, serviceItemServiceInstanceId, serviceItemPersonaModelId,
- serviceItemModelName, serviceItemModelType, serviceItemModelVersion, serviceItemModelNameVersionId,
- vfModuleItemVfModuleName, vfModuleItemPersonaModelId, vfModuleItemPersonaModelVersion, vfModuleItemModelName,
- vfModuleItemModelNameVersionId, tenantItemTenantId, cloudRegionItemCloudRegionId;
- try {
- //
- // vnfItem
- //
- vnfItemVnfId = $aainqf199ResponseWrapper.aainqf199response.inventoryResponseItems.get(0).items.inventoryResponseItems.get(0).genericVNF.vnfID;
- vnfItemVnfType = $aainqf199ResponseWrapper.aainqf199response.inventoryResponseItems.get(0).items.inventoryResponseItems.get(0).genericVNF.vnfType;
- vnfItemVnfType = vnfItemVnfType.substring(vnfItemVnfType.lastIndexOf("/")+1);
- vnfItemPersonaModelId = $aainqf199ResponseWrapper.aainqf199response.inventoryResponseItems.get(0).items.inventoryResponseItems.get(0).genericVNF.personaModelId;
- vnfItemPersonaModelVersion = $aainqf199ResponseWrapper.aainqf199response.inventoryResponseItems.get(0).items.inventoryResponseItems.get(0).genericVNF.personaModelVersion;
- vnfItemModelName = $aainqf199ResponseWrapper.aainqf199response.inventoryResponseItems.get(0).items.inventoryResponseItems.get(0).extraProperties.extraProperty.get(0).propertyValue;
- vnfItemModelVersion = $aainqf199ResponseWrapper.aainqf199response.inventoryResponseItems.get(0).items.inventoryResponseItems.get(0).extraProperties.extraProperty.get(2).propertyValue;
- vnfItemModelNameVersionId = $aainqf199ResponseWrapper.aainqf199response.inventoryResponseItems.get(0).items.inventoryResponseItems.get(0).extraProperties.extraProperty.get(4).propertyValue;
- //
- // serviceItem
- //
- serviceItemServiceInstanceId = $aainqf199ResponseWrapper.aainqf199response.inventoryResponseItems.get(0).items.inventoryResponseItems.get(0).items.inventoryResponseItems.get(0).serviceInstance.serviceInstanceID;
- serviceItemPersonaModelId = $aainqf199ResponseWrapper.aainqf199response.inventoryResponseItems.get(0).items.inventoryResponseItems.get(0).items.inventoryResponseItems.get(0).serviceInstance.personaModelId;
- serviceItemModelName = $aainqf199ResponseWrapper.aainqf199response.inventoryResponseItems.get(0).items.inventoryResponseItems.get(0).items.inventoryResponseItems.get(0).extraProperties.extraProperty.get(0).propertyValue;
- serviceItemModelType = $aainqf199ResponseWrapper.aainqf199response.inventoryResponseItems.get(0).items.inventoryResponseItems.get(0).items.inventoryResponseItems.get(0).extraProperties.extraProperty.get(1).propertyValue;
- serviceItemModelVersion = $aainqf199ResponseWrapper.aainqf199response.inventoryResponseItems.get(0).items.inventoryResponseItems.get(0).items.inventoryResponseItems.get(0).serviceInstance.personaModelVersion;
- serviceItemModelNameVersionId = $aainqf199ResponseWrapper.aainqf199response.inventoryResponseItems.get(0).items.inventoryResponseItems.get(0).items.inventoryResponseItems.get(0).extraProperties.extraProperty.get(4).propertyValue;
- //
- // Find the index for base vf module and non-base vf module
- //
- int baseIndex = -1;
- int nonBaseIndex = -1;
- List<AAINQF199InventoryResponseItem> inventoryItems = $aainqf199ResponseWrapper.aainqf199response.inventoryResponseItems.get(0).items.inventoryResponseItems.get(0).items.inventoryResponseItems;
- for (AAINQF199InventoryResponseItem m : inventoryItems) {
- if (m.vfModule != null && m.vfModule.isBaseVfModule == true) {
- baseIndex = inventoryItems.indexOf(m);
- } else if (m.vfModule != null && m.vfModule.isBaseVfModule == false && m.vfModule.orchestrationStatus == null) {
- nonBaseIndex = inventoryItems.indexOf(m);
- }
- //
- if (baseIndex != -1 && nonBaseIndex != -1) {
- break;
- }
- }
- //
- // Report the error if either base vf module or non-base vf module is not found
- //
- if (baseIndex == -1 || nonBaseIndex == -1) {
- System.err.println("Either base or non-base vf module is not found from AAI response.");
- retract($aainqf199RequestWrapper);
- retract($aainqf199ResponseWrapper);
- retract($manager);
- retract($event);
- return;
- }
- //
- // This comes from the base module
- //
- vfModuleItemVfModuleName = $aainqf199ResponseWrapper.aainqf199response.inventoryResponseItems.get(0).items.inventoryResponseItems.get(0).items.inventoryResponseItems.get(baseIndex).vfModule.vfModuleName;
- vfModuleItemVfModuleName = vfModuleItemVfModuleName.replace("Vfmodule", "vDNS");
- //
- // vfModuleItem - NOT the base module
- //
- vfModuleItemPersonaModelId = $aainqf199ResponseWrapper.aainqf199response.inventoryResponseItems.get(0).items.inventoryResponseItems.get(0).items.inventoryResponseItems.get(nonBaseIndex).vfModule.personaModelId;
- vfModuleItemPersonaModelVersion = $aainqf199ResponseWrapper.aainqf199response.inventoryResponseItems.get(0).items.inventoryResponseItems.get(0).items.inventoryResponseItems.get(nonBaseIndex).vfModule.personaModelVersion;
- vfModuleItemModelName = $aainqf199ResponseWrapper.aainqf199response.inventoryResponseItems.get(0).items.inventoryResponseItems.get(0).items.inventoryResponseItems.get(nonBaseIndex).extraProperties.extraProperty.get(0).propertyValue;
- vfModuleItemModelNameVersionId = $aainqf199ResponseWrapper.aainqf199response.inventoryResponseItems.get(0).items.inventoryResponseItems.get(0).items.inventoryResponseItems.get(nonBaseIndex).extraProperties.extraProperty.get(4).propertyValue;
- //
- // tenantItem
- //
- tenantItemTenantId = $aainqf199ResponseWrapper.aainqf199response.inventoryResponseItems.get(0).items.inventoryResponseItems.get(1).tenant.tenantId;
- //
- // cloudRegionItem
- //
- cloudRegionItemCloudRegionId = $aainqf199ResponseWrapper.aainqf199response.inventoryResponseItems.get(0).items.inventoryResponseItems.get(1).items.inventoryResponseItems.get(0).cloudRegion.cloudRegionId;
- //
- } catch (Exception e) {
- e.printStackTrace();
- VirtualControlLoopNotification notification = new VirtualControlLoopNotification($event);
- notification.notification = ControlLoopNotificationType.REJECTED;
- notification.message = "Exception occurred " + e.getMessage();
- notification.policyName = drools.getRule().getName();
- notification.policyScope = "${policyScope}";
- notification.policyVersion = "${policyVersion}";
- //
- try {
- System.out.println(Serialization.gsonPretty.toJson(notification));
- //PolicyEngine.manager.deliver($params.getNotificationTopic(), notification);
- } catch (Exception e1) {
- System.out.println("Can't deliver notification: " + notification);
- e1.printStackTrace();
- }
- //
- notification.notification = ControlLoopNotificationType.FINAL_FAILURE;
- notification.message = "Invalid named-query response from AAI";
- //
- try {
- System.out.println(Serialization.gsonPretty.toJson(notification));
- //PolicyEngine.manager.deliver($params.getNotificationTopic(), notification);
- } catch (Exception e1) {
- System.out.println("Can't deliver notification: " + notification);
- e1.printStackTrace();
- }
- //
- // Retract everything
- //
- retract($aainqf199RequestWrapper);
- retract($aainqf199ResponseWrapper);
- retract($manager);
- retract($event);
- return;
- }
- //
- // Extracted fields should not be null
- //
- if ((vnfItemVnfId == null) || (vnfItemVnfType == null) ||
- (vnfItemPersonaModelId == null) || (vnfItemModelName == null) ||
- (vnfItemModelVersion == null) || (vnfItemModelNameVersionId == null) ||
- (serviceItemServiceInstanceId == null) || (serviceItemModelName == null) ||
- (serviceItemModelType == null) || (serviceItemModelVersion == null) ||
- (serviceItemModelNameVersionId == null) || (vfModuleItemVfModuleName == null) ||
- (vfModuleItemPersonaModelId == null) || (vfModuleItemPersonaModelVersion == null) ||
- (vfModuleItemModelName == null) || (vfModuleItemModelNameVersionId == null) ||
- (tenantItemTenantId == null) || (cloudRegionItemCloudRegionId == null)) {
- //
- System.err.println("some fields are missing from AAI response.");
- //
- // Fail and retract everything
- //
- retract($aainqf199RequestWrapper);
- retract($aainqf199ResponseWrapper);
- retract($manager);
- retract($event);
- return;
- }
- //
- // We don't need them any more
- //
- retract($aainqf199ResponseWrapper);
- retract($aainqf199RequestWrapper);
- //
- // check the actor of this closed loop
- //
- switch ($params.getActor()) {
- case "APPC":
- {
- //
- // Construct an APPC request
- //
- ControlLoopOperation operation = new ControlLoopOperation();
- operation.actor = $params.getActor();
- operation.operation = "ModifyConfig";
- operation.target = $event.target;
- //
- // Create operationWrapper
- //
- ControlLoopOperationWrapper operationWrapper = new ControlLoopOperationWrapper($event.requestID, operation);
- //
- // insert operationWrapper into memory
- //
- insert(operationWrapper);
- //
- Request request = new Request();
- request.CommonHeader = new CommonHeader();
- request.CommonHeader.RequestID = $event.requestID;
- request.Action = operation.operation;
- request.Payload = new HashMap<String, Object>();
- //
- // Fill in the payload
- // Hardcode genericVNF for now since AAI has not been ready for vFirewall demo case
- //
- String genericVNF = "zdfw1fwl01pgn02";
- request.Payload.put("generic-vnf.vnf-id", genericVNF);
- //
- PGRequest pgRequest = new PGRequest();
- pgRequest.pgStreams = new PGStreams();
-
- PGStream pgStream;
- for(int i = 0; i < 5; i++){
- pgStream = new PGStream();
- pgStream.streamId = "fw_udp"+(i+1);
- pgStream.isEnabled = "true";
- pgRequest.pgStreams.pgStream.add(pgStream);
- }
- request.Payload.put("pg-streams", pgRequest.pgStreams);
-
- if (request != null) {
- //
- // Insert request into memory
- //
- insert(request);
- //
- // Tell interested parties we are performing this Operation
- //
- VirtualControlLoopNotification notification = new VirtualControlLoopNotification($event);
- notification.notification = ControlLoopNotificationType.OPERATION;
- // message and history ??
- notification.from = "policy";
- notification.policyName = drools.getRule().getName();
- notification.policyScope = "${policyScope}";
- notification.policyVersion = "${policyVersion}";
- try {
- System.out.println(Serialization.gsonPretty.toJson(notification));
- //PolicyEngine.manager.deliver($params.getNotificationTopic(), notification);
- } catch (Exception e) {
- System.out.println("Can't deliver notification: " + notification);
- e.printStackTrace();
- }
- //
- // Now send the operation request
- //
- if (request instanceof Request) {
- try {
- System.out.println("APPC request sent:");
- System.out.println(Serialization.gsonPretty.toJson(request));
- //PolicyEngine.manager.deliver($params.getAppcTopic(), request);
- } catch (Exception e) {
- e.printStackTrace();
- System.out.println("Can't deliver request: " + request);
- }
- }
- } else {
- //
- // what happens if it is null
- //
- }
- }
- break;
- case "MSO":
- {
- //
- // Construct an operation
- //
- ControlLoopOperation operation = new ControlLoopOperation();
- operation.actor = $params.getActor();
- operation.operation = "createModuleInstance";
- operation.target = $event.target;
- //
- // Create operationWrapper
- //
- ControlLoopOperationWrapper operationWrapper = new ControlLoopOperationWrapper($event.requestID, operation);
- //
- // Construct an MSO request
- //
- MSORequest request = new MSORequest();
- request.requestDetails = new MSORequestDetails();
- request.requestDetails.modelInfo = new MSOModelInfo();
- request.requestDetails.cloudConfiguration = new MSOCloudConfiguration();
- request.requestDetails.requestInfo = new MSORequestInfo();
- request.requestDetails.requestParameters = new MSORequestParameters();
- request.requestDetails.requestParameters.userParams = null;
- //
- // cloudConfiguration
- //
- request.requestDetails.cloudConfiguration.lcpCloudRegionId = cloudRegionItemCloudRegionId;
- request.requestDetails.cloudConfiguration.tenantId = tenantItemTenantId;
- //
- // modelInfo
- //
- request.requestDetails.modelInfo.modelType = "vfModule";
- request.requestDetails.modelInfo.modelInvariantId = vfModuleItemPersonaModelId;
- request.requestDetails.modelInfo.modelNameVersionId = vfModuleItemModelNameVersionId;
- request.requestDetails.modelInfo.modelName = vfModuleItemModelName;
- request.requestDetails.modelInfo.modelVersion = vfModuleItemPersonaModelVersion;
- //
- // requestInfo
- //
- request.requestDetails.requestInfo.instanceName = vfModuleItemVfModuleName;
- request.requestDetails.requestInfo.source = "POLICY";
- request.requestDetails.requestInfo.suppressRollback = false;
- //
- // relatedInstanceList
- //
- MSORelatedInstanceListElement relatedInstanceListElement1 = new MSORelatedInstanceListElement();
- MSORelatedInstanceListElement relatedInstanceListElement2 = new MSORelatedInstanceListElement();
- relatedInstanceListElement1.relatedInstance = new MSORelatedInstance();
- relatedInstanceListElement2.relatedInstance = new MSORelatedInstance();
- //
- relatedInstanceListElement1.relatedInstance.instanceId = serviceItemServiceInstanceId;
- relatedInstanceListElement1.relatedInstance.modelInfo = new MSOModelInfo();
- relatedInstanceListElement1.relatedInstance.modelInfo.modelType = "service";
- relatedInstanceListElement1.relatedInstance.modelInfo.modelInvariantId = serviceItemPersonaModelId;
- relatedInstanceListElement1.relatedInstance.modelInfo.modelNameVersionId = serviceItemModelNameVersionId;
- relatedInstanceListElement1.relatedInstance.modelInfo.modelName = serviceItemModelName;
- relatedInstanceListElement1.relatedInstance.modelInfo.modelVersion = serviceItemModelVersion;
- //
- relatedInstanceListElement2.relatedInstance.instanceId = vnfItemVnfId;
- relatedInstanceListElement2.relatedInstance.modelInfo = new MSOModelInfo();
- relatedInstanceListElement2.relatedInstance.modelInfo.modelType = "vnf";
- relatedInstanceListElement2.relatedInstance.modelInfo.modelInvariantId = vnfItemPersonaModelId;
- relatedInstanceListElement2.relatedInstance.modelInfo.modelNameVersionId = vnfItemModelNameVersionId;
- relatedInstanceListElement2.relatedInstance.modelInfo.modelName = vnfItemModelName;
- relatedInstanceListElement2.relatedInstance.modelInfo.modelVersion = vnfItemPersonaModelVersion;
- relatedInstanceListElement2.relatedInstance.modelInfo.modelCustomizationName = vnfItemVnfType;
- //
- request.requestDetails.relatedInstanceList.add(relatedInstanceListElement1);
- request.requestDetails.relatedInstanceList.add(relatedInstanceListElement2);
- //
- // print MSO request for debug
- //
- System.out.println("MSO request sent:");
- System.out.println(Serialization.gsonPretty.toJson(request));
- //
- //
- //
- if (request != null) {
- //
- // Tell interested parties we are performing this Operation
- //
- VirtualControlLoopNotification notification = new VirtualControlLoopNotification($event);
- notification.notification = ControlLoopNotificationType.OPERATION;
- notification.from = "policy";
- notification.policyName = drools.getRule().getName();
- notification.policyScope = "${policyScope}";
- notification.policyVersion = "${policyVersion}";
- try {
- System.out.println(Serialization.gsonPretty.toJson(notification));
- //PolicyEngine.manager.deliver($params.getNotificationTopic(), notification);
- } catch (Exception e) {
- System.out.println("Can't deliver notification: " + notification);
- e.printStackTrace();
- }
- //
- // Concatenate serviceItemServiceInstanceId and vnfItemVnfId to msoURL
- //
- String MSOUrl = $params.getMsoURL() + "/serviceInstances/v2/" + serviceItemServiceInstanceId + "/vnfs/" + vnfItemVnfId + "/vfModules";
- //
- // Call MSO
- //
- MSOResponse response = MSOManager.createModuleInstance(MSOUrl, $params.getMsoURL(), $params.getMsoUsername(), $params.getMsoPassword(), request);
-
-
-
- //////////////////////////////////////////////////////////
- // Simulate a valid MSOResponse for junit test
- // Remove this for real deployment
- //
- response = new MSOResponse();
- response.request = new MSORequest();
- response.request.requestStatus = new MSORequestStatus();
- response.request.requestStatus.requestState = "COMPLETE";
- //////////////////////////////////////////////////////////
-
-
-
-
-
- if (response != null) {
- //
- // Assign requestId
- //
- request.requestId = $event.requestID.toString();
- response.request.requestId = $event.requestID.toString();
- //
- // Insert facts
- //
- insert(operationWrapper);
- insert(request);
- insert(response);
- } else {
- //
- // MSO request not even accepted
- //
- notification.message = operationWrapper.operation.toMessage();
- operationWrapper.operation.message = operationWrapper.operation.toMessage();
- operationWrapper.operation.outcome = "FAILURE_EXCEPTION";
- $manager.setControlLoopResult("FAILURE_EXCEPTION");
- notification.history.add(operationWrapper.operation);
- notification.notification = ControlLoopNotificationType.OPERATION_FAILURE;
- //
- // Let interested parties know
- //
- try {
- System.out.println(Serialization.gsonPretty.toJson(notification));
- //PolicyEngine.manager.deliver($params.getNotificationTopic(), notification);
- } catch (Exception e) {
- System.out.println("Can't deliver notification: " + notification);
- e.printStackTrace();
- }
- notification.notification = ControlLoopNotificationType.FINAL_FAILURE;
- try {
- System.out.println(Serialization.gsonPretty.toJson(notification));
- //PolicyEngine.manager.deliver($params.getNotificationTopic(), notification);
- } catch (Exception e) {
- System.out.println("Can't deliver notification: " + notification);
- e.printStackTrace();
- }
- //
- // Retract everything
- //
- retract($event);
- retract($manager);
- }
- } else {
- System.err.println("constructed MSO request is invalid.");
- }
- }
- break;
- }
-end
-
-/*
-*
-* This rule responds to APPC Response Events
-*
-*/
-rule "${policyName}.APPC.RESPONSE"
- when
- $params : Params( getClosedLoopControlName() == "${closedLoopControlName}" )
- $event : VirtualControlLoopEvent( closedLoopControlName == $params.getClosedLoopControlName(), closedLoopEventStatus == ControlLoopEventStatus.ONSET )
- $manager : EventManager( closedLoopControlName == $event.closedLoopControlName )
- $operationWrapper : ControlLoopOperationWrapper( requestID == $event.requestID )
- $request : Request( getCommonHeader().RequestID == $event.requestID )
- $response : Response( getCommonHeader().RequestID == $event.requestID )
- then
- System.out.println("rule APPC.RESPONSE is triggered.");
- if ($response.Status == null) {
- $operationWrapper.operation.outcome = "FAILURE_EXCEPTION";
- $manager.setControlLoopResult("FAILURE_EXCEPTION");
- }
- //
- // Get the Response Code
- //
- ResponseCode code = ResponseCode.toResponseCode($response.Status.Code);
- if (code == null) {
- $operationWrapper.operation.outcome = "FAILURE_EXCEPTION";
- $manager.setControlLoopResult("FAILURE_EXCEPTION");
- }
- //
- // Construct notification
- //
- VirtualControlLoopNotification notification = new VirtualControlLoopNotification($event);
- notification.from = "policy";
- notification.policyName = drools.getRule().getName();
- notification.policyScope = "${policyScope}";
- notification.policyVersion = "${policyVersion}";
- notification.message = $operationWrapper.operation.toMessage();
- $operationWrapper.operation.message = $operationWrapper.operation.toMessage();
- //
- // Ok, let's figure out what APP-C's response is
- //
- switch (code) {
- case ACCEPT:
- $operationWrapper.operation.outcome = "PROCESSING";
- break;
- case ERROR:
- case REJECT:
- $operationWrapper.operation.outcome = "FAILURE_EXCEPTION";
- $manager.setControlLoopResult("FAILURE_EXCEPTION");
- break;
- case SUCCESS:
- $operationWrapper.operation.outcome = "SUCCESS";
- $manager.setControlLoopResult("SUCCESS");
- break;
- case FAILURE:
- $operationWrapper.operation.outcome = "FAILURE";
- $manager.setControlLoopResult("FAILURE");
- break;
- }
- if ($operationWrapper.operation.outcome.equals("SUCCESS")) {
- notification.history.add($operationWrapper.operation);
- notification.notification = ControlLoopNotificationType.OPERATION_SUCCESS;
- //
- // Let interested parties know
- //
- try {
- System.out.println(Serialization.gsonPretty.toJson(notification));
- //PolicyEngine.manager.deliver($params.getNotificationTopic(), notification);
- } catch (Exception e) {
- System.out.println("Can't deliver notification: " + notification);
- e.printStackTrace();
- }
- notification.notification = ControlLoopNotificationType.FINAL_SUCCESS;
- try {
- System.out.println(Serialization.gsonPretty.toJson(notification));
- //PolicyEngine.manager.deliver($params.getNotificationTopic(), notification);
- } catch (Exception e) {
- System.out.println("Can't deliver notification: " + notification);
- e.printStackTrace();
- }
-
- //
- // We are going to retract these objects from memory
- //
- System.out.println("Retracting everything");
- retract($operationWrapper);
- retract($request);
- retract($response);
- retract($event);
- retract($manager);
- } else if ($operationWrapper.operation.outcome.equals("PROCESSING")) {
- retract($response);
- } else {
- notification.history.add($operationWrapper.operation);
- notification.notification = ControlLoopNotificationType.OPERATION_FAILURE;
- //
- // Let interested parties know
- //
- try {
- System.out.println(Serialization.gsonPretty.toJson(notification));
- //PolicyEngine.manager.deliver($params.getNotificationTopic(), notification);
- } catch (Exception e) {
- System.out.println("Can't deliver notification: " + notification);
- e.printStackTrace();
- }
- notification.notification = ControlLoopNotificationType.FINAL_FAILURE;
- //
- // Let interested parties know
- //
- try {
- System.out.println(Serialization.gsonPretty.toJson(notification));
- //PolicyEngine.manager.deliver($params.getNotificationTopic(), notification);
- } catch (Exception e) {
- System.out.println("Can't deliver notification: " + notification);
- e.printStackTrace();
- }
- //
- // We are going to retract these objects from memory
- //
- System.out.println("Retracting everything");
- retract($operationWrapper);
- retract($request);
- retract($response);
- retract($event);
- retract($manager);
- }
-
-end
-
-/*
-*
-* This rule is used to clean up APPC response
-*
-*/
-rule "${policyName}.APPC.RESPONSE.CLEANUP"
- when
- $params : Params( getClosedLoopControlName() == "${closedLoopControlName}" )
- $response : Response($id : getCommonHeader().RequestID )
- not ( VirtualControlLoopEvent( closedLoopControlName == $params.getClosedLoopControlName(), requestID == $id, closedLoopEventStatus == ControlLoopEventStatus.ONSET ) )
- then
- System.out.println("rule APPC.RESPONSE.CLEANUP is triggered.");
- retract($response);
-end
-
-/*
-*
-* This rule responds to MSO Response Events
-*
-*/
-rule "${policyName}.MSO.RESPONSE"
- when
- $params : Params( getClosedLoopControlName() == "${closedLoopControlName}" )
- $event : VirtualControlLoopEvent( closedLoopControlName == $params.getClosedLoopControlName(), closedLoopEventStatus == ControlLoopEventStatus.ONSET )
- $manager : EventManager( closedLoopControlName == $event.closedLoopControlName )
- $operationWrapper : ControlLoopOperationWrapper( requestID == $event.requestID )
- $request : MSORequest( requestId == $event.requestID.toString() )
- $response : MSOResponse( request.requestId == $event.requestID.toString() )
- then
- System.out.println("rule MSO.RESPONSE is triggered.");
- //
- // Construct notification
- //
- VirtualControlLoopNotification notification = new VirtualControlLoopNotification($event);
- notification.from = "policy";
- notification.policyName = drools.getRule().getName();
- notification.policyScope = "${policyScope}";
- notification.policyVersion = "${policyVersion}";
- notification.message = $operationWrapper.operation.toMessage();
- $operationWrapper.operation.message = $operationWrapper.operation.toMessage();
- //
- // The operation can either be succeeded or failed
- //
- if($response.request.requestStatus.requestState.equals("COMPLETE")) {
- $operationWrapper.operation.outcome = "SUCCESS";
- $manager.setControlLoopResult("SUCCESS");
- notification.history.add($operationWrapper.operation);
- notification.notification = ControlLoopNotificationType.OPERATION_SUCCESS;
- //
- // Let interested parties know
- //
- try {
- System.out.println(Serialization.gsonPretty.toJson(notification));
- //PolicyEngine.manager.deliver($params.getNotificationTopic(), notification);
- } catch (Exception e) {
- System.out.println("Can't deliver notification: " + notification);
- e.printStackTrace();
- }
- notification.notification = ControlLoopNotificationType.FINAL_SUCCESS;
- //
- // Let interested parties know
- //
- try {
- System.out.println(Serialization.gsonPretty.toJson(notification));
- //PolicyEngine.manager.deliver($params.getNotificationTopic(), notification);
- } catch (Exception e) {
- System.out.println("Can't deliver notification: " + notification);
- e.printStackTrace();
- }
- //
- // We are going to retract these objects from memory
- //
- System.out.println("Retracting everything");
- retract($operationWrapper);
- retract($request);
- retract($response);
- retract($event);
- retract($manager);
- } else {
- $operationWrapper.operation.outcome = "FAILURE";
- $manager.setControlLoopResult("FAILURE");
- notification.history.add($operationWrapper.operation);
- notification.notification = ControlLoopNotificationType.OPERATION_FAILURE;
- //
- // Let interested parties know
- //
- try {
- System.out.println(Serialization.gsonPretty.toJson(notification));
- //PolicyEngine.manager.deliver($params.getNotificationTopic(), notification);
- } catch (Exception e) {
- System.out.println("Can't deliver notification: " + notification);
- e.printStackTrace();
- }
- notification.notification = ControlLoopNotificationType.FINAL_FAILURE;
- //
- // Let interested parties know
- //
- try {
- System.out.println(Serialization.gsonPretty.toJson(notification));
- //PolicyEngine.manager.deliver($params.getNotificationTopic(), notification);
- } catch (Exception e) {
- System.out.println("Can't deliver notification: " + notification);
- e.printStackTrace();
- }
- //
- // We are going to retract these objects from memory
- //
- System.out.println("Retracting everything");
- retract($operationWrapper);
- retract($request);
- retract($response);
- retract($event);
- retract($manager);
- }
-
-end
diff --git a/template.demo/src/test/java/org/openecomp/policy/template/demo/TestAPPCPayload.java b/template.demo/src/test/java/org/openecomp/policy/template/demo/TestAPPCPayload.java
deleted file mode 100644
index 114ae932a..000000000
--- a/template.demo/src/test/java/org/openecomp/policy/template/demo/TestAPPCPayload.java
+++ /dev/null
@@ -1,58 +0,0 @@
-/*-
- * ============LICENSE_START=======================================================
- * demo
- * ================================================================================
- * Copyright (C) 2017 AT&T Intellectual Property. All rights reserved.
- * ================================================================================
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- * ============LICENSE_END=========================================================
- */
-
-package org.openecomp.policy.template.demo;
-
-import java.util.HashMap;
-import java.util.UUID;
-
-import org.junit.Test;
-import org.openecomp.policy.appc.CommonHeader;
-import org.openecomp.policy.appc.Request;
-import org.openecomp.policy.appc.util.Serialization;
-import org.openecomp.policy.vnf.trafficgenerator.PGRequest;
-import org.openecomp.policy.vnf.trafficgenerator.PGStream;
-import org.openecomp.policy.vnf.trafficgenerator.PGStreams;
-
-public class TestAPPCPayload {
-
- @Test
- public void test() {
- PGRequest request = new PGRequest();
- request.pgStreams = new PGStreams();
-
- PGStream pgStream;
- for(int i = 0; i < 5; i++){
- pgStream = new PGStream();
- pgStream.streamId = "fw_udp"+(i+1);
- pgStream.isEnabled = "true";
- request.pgStreams.pgStream.add(pgStream);
- }
-
- Request appc = new Request();
- appc.CommonHeader = new CommonHeader();
- appc.CommonHeader.RequestID = UUID.randomUUID();
- appc.Action = "ModifyConfig";
- appc.Payload = new HashMap<String, Object>();
- appc.Payload.put("pg-streams", request);
- System.out.println(Serialization.gsonPretty.toJson(appc));
- }
-
-}
diff --git a/template.demo/src/test/java/org/openecomp/policy/template/demo/TestFirewallDemo.java b/template.demo/src/test/java/org/openecomp/policy/template/demo/TestFirewallDemo.java
deleted file mode 100644
index 799fe4363..000000000
--- a/template.demo/src/test/java/org/openecomp/policy/template/demo/TestFirewallDemo.java
+++ /dev/null
@@ -1,595 +0,0 @@
-/*-
- * ============LICENSE_START=======================================================
- * demo
- * ================================================================================
- * Copyright (C) 2017 AT&T Intellectual Property. All rights reserved.
- * ================================================================================
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- * ============LICENSE_END=========================================================
- */
-
-package org.openecomp.policy.template.demo;
-
-import static org.junit.Assert.assertEquals;
-
-import java.io.IOException;
-import java.nio.file.Files;
-import java.nio.file.Path;
-import java.nio.file.Paths;
-import java.time.Instant;
-import java.util.HashMap;
-import java.util.UUID;
-import java.util.regex.Matcher;
-import java.util.regex.Pattern;
-
-import org.junit.Ignore;
-import org.junit.Test;
-import org.kie.api.KieServices;
-import org.kie.api.builder.KieBuilder;
-import org.kie.api.builder.KieFileSystem;
-import org.kie.api.builder.Message;
-import org.kie.api.builder.ReleaseId;
-import org.kie.api.builder.Results;
-import org.kie.api.builder.model.KieModuleModel;
-import org.kie.api.runtime.KieContainer;
-import org.kie.api.runtime.KieSession;
-import org.kie.api.runtime.rule.FactHandle;
-import org.openecomp.policy.appc.CommonHeader;
-import org.openecomp.policy.appc.Response;
-import org.openecomp.policy.appc.ResponseStatus;
-import org.openecomp.policy.controlloop.ControlLoopEventStatus;
-import org.openecomp.policy.controlloop.ControlLoopTargetType;
-import org.openecomp.policy.controlloop.VirtualControlLoopEvent;
-import org.openecomp.policy.controlloop.util.Serialization;
-
-
-
-public class TestFirewallDemo {
-
-
- @Test
- public void testvDNS() throws IOException {
- //
- // Build a container
- //
- final String closedLoopControlName = "CL-DNS-LOW-TRAFFIC-SIG-d925ed73-8231-4d02-9545-db4e101f88f8";
- final KieSession kieSession = buildContainer("src/main/resources/archetype-resources/src/main/resources/ControlLoopDemo__closedLoopControlName__.drl",
- closedLoopControlName,
- "type=operational",
- "myFirewallDemoPolicy",
- "v1.0",
- "MSO",
- "http://localhost:8080/TestREST/Test",
- "POLICY",
- "POLICY",
- "http://localhost:8080/TestREST/Test",
- "POLICY",
- "POLICY",
- "4ff56a54-9e3f-46b7-a337-07a1d3c6b469",
- 0,
- "POLICY-CL-MGT",
- "APPC-CL"
- );
- //
- // Initial fire of rules
- //
- kieSession.fireAllRules();
- //
- // Kick a thread that starts testing
- //
- new Thread(new Runnable() {
-
- @Override
- public void run() {
- //
- // Generate an invalid DCAE Event with requestID=null
- //
- VirtualControlLoopEvent invalidEvent = new VirtualControlLoopEvent();
- invalidEvent.closedLoopControlName = closedLoopControlName;
- invalidEvent.requestID = null;
- invalidEvent.closedLoopEventClient = "tca.instance00001";
- invalidEvent.target_type = ControlLoopTargetType.VF;
- invalidEvent.target = "generic-vnf.vnf-id";
- invalidEvent.from = "DCAE";
- invalidEvent.closedLoopAlarmStart = Instant.now();
- invalidEvent.AAI = new HashMap<String, String>();
- invalidEvent.AAI.put("vserver.vserver-name", "vserver-name-16102016-aai3255-data-11-1");
- invalidEvent.closedLoopEventStatus = ControlLoopEventStatus.ONSET;
-
- System.out.println("----- Invalid ONSET -----");
- System.out.println(Serialization.gsonPretty.toJson(invalidEvent));
-
- //
- // Insert invalid DCAE Event into memory
- //
- kieSession.insert(invalidEvent);
- try {
- Thread.sleep(500);
- } catch (InterruptedException e) {
- }
- //
- // Generate first DCAE ONSET Event
- //
- VirtualControlLoopEvent onsetEvent = new VirtualControlLoopEvent();
- onsetEvent.closedLoopControlName = closedLoopControlName;
- onsetEvent.requestID = UUID.randomUUID();
- onsetEvent.closedLoopEventClient = "tca.instance00001";
- onsetEvent.target_type = ControlLoopTargetType.VF;
- onsetEvent.target = "generic-vnf.vnf-id";
- onsetEvent.from = "DCAE";
- onsetEvent.closedLoopAlarmStart = Instant.now();
- onsetEvent.AAI = new HashMap<String, String>();
- onsetEvent.AAI.put("vserver.vserver-name", "vserver-name-16102016-aai3255-data-11-1");
- onsetEvent.closedLoopEventStatus = ControlLoopEventStatus.ONSET;
-
- System.out.println("----- ONSET -----");
- System.out.println(Serialization.gsonPretty.toJson(onsetEvent));
-
- //
- // Insert first DCAE ONSET Event into memory
- //
- kieSession.insert(onsetEvent);
- //
- // We have test for subsequent ONSET Events in testvFirewall()
- // So no need to test it again here
- //
- try {
- Thread.sleep(3000);
- } catch (InterruptedException e) {
- }
- //
- // Test is finished, so stop the kieSession
- //
- kieSession.halt();
- }
- //
- }).start();
- //
- // Start firing rules
- //
- kieSession.fireUntilHalt();
- //
- // Dump working memory
- //
- dumpFacts(kieSession);
- //
- // See if there is anything left in memory, there SHOULD only be
- // a params fact.
- //
- assertEquals("There should only be 1 Fact left in memory.", 1, kieSession.getFactCount());
- for (FactHandle handle : kieSession.getFactHandles()) {
- Object fact = kieSession.getObject(handle);
- assertEquals("Non-Param Fact left in working memory", "org.openecomp.policy.controlloop.Params", fact.getClass().getName());
- }
- }
-
- @Ignore
- @Test
- public void testvFirewall() throws IOException {
- //
- // Build a container
- //
- final String closedLoopControlName = "CL-FRWL-LOW-TRAFFIC-SIG-d925ed73-8231-4d02-9545-db4e101f88f8";
- final KieSession kieSession = buildContainer("src/main/resources/archetype-resources/src/main/resources/ControlLoopDemo__closedLoopControlName__.drl",
- closedLoopControlName,
- "type=operational",
- "myFirewallDemoPolicy",
- "v1.0",
- "APPC",
- "http://localhost:8080/TestREST/Test",
- "POLICY",
- "POLICY",
- null,
- null,
- null,
- null,
- 1,
- "POLICY-CL-MGT",
- "APPC-CL"
- );
- //
- // Initial fire of rules
- //
- kieSession.fireAllRules();
- //
- // Kick a thread that starts testing
- //
- new Thread(new Runnable() {
-
- @Override
- public void run() {
- //
- // Generate an invalid DCAE Event with requestID=null
- //
- VirtualControlLoopEvent invalidEvent = new VirtualControlLoopEvent();
- invalidEvent.closedLoopControlName = closedLoopControlName;
- invalidEvent.requestID = null;
- invalidEvent.closedLoopEventClient = "tca.instance00001";
- invalidEvent.target_type = ControlLoopTargetType.VF;
- invalidEvent.target = "generic-vnf.vnf-id";
- invalidEvent.from = "DCAE";
- invalidEvent.closedLoopAlarmStart = Instant.now();
- invalidEvent.AAI = new HashMap<String, String>();
- invalidEvent.AAI.put("generic-vnf.vnf-id", "foo");
- invalidEvent.closedLoopEventStatus = ControlLoopEventStatus.ONSET;
-
- System.out.println("----- Invalid ONSET -----");
- System.out.println(Serialization.gsonPretty.toJson(invalidEvent));
-
- //
- // Insert invalid DCAE Event into memory
- //
- kieSession.insert(invalidEvent);
- try {
- Thread.sleep(500);
- } catch (InterruptedException e) {
- }
- //
- // Generate first DCAE ONSET Event
- //
- VirtualControlLoopEvent onsetEvent = new VirtualControlLoopEvent();
- onsetEvent.closedLoopControlName = closedLoopControlName;
- onsetEvent.requestID = UUID.randomUUID();
- onsetEvent.closedLoopEventClient = "tca.instance00001";
- onsetEvent.target_type = ControlLoopTargetType.VF;
- onsetEvent.target = "generic-vnf.vnf-id";
- onsetEvent.from = "DCAE";
- onsetEvent.closedLoopAlarmStart = Instant.now();
- onsetEvent.AAI = new HashMap<String, String>();
- onsetEvent.AAI.put("generic-vnf.vnf-id", "fw0001vm001fw001");
- //onsetEvent.AAI.put("vserver.vserver-name", "vserver-name-16102016-aai3255-data-11-1");
- onsetEvent.closedLoopEventStatus = ControlLoopEventStatus.ONSET;
-
- System.out.println("----- ONSET -----");
- System.out.println(Serialization.gsonPretty.toJson(onsetEvent));
-
- //
- // Insert first DCAE ONSET Event into memory
- //
- kieSession.insert(onsetEvent);
- try {
- Thread.sleep(500);
- } catch (InterruptedException e) {
- }
-
-
- Thread thread = new Thread(new Runnable() {
-
- @Override
- public void run() {
- while (true) {
- //
- // Generate subsequent DCAE ONSET Event
- //
- VirtualControlLoopEvent subOnsetEvent = new VirtualControlLoopEvent();
- subOnsetEvent.closedLoopControlName = closedLoopControlName;
- subOnsetEvent.requestID = UUID.randomUUID();
- subOnsetEvent.closedLoopEventClient = "tca.instance00001";
- subOnsetEvent.target_type = ControlLoopTargetType.VF;
- subOnsetEvent.target = "generic-vnf.vnf-id";
- subOnsetEvent.from = "DCAE";
- subOnsetEvent.closedLoopAlarmStart = Instant.now();
- subOnsetEvent.AAI = new HashMap<String, String>();
- subOnsetEvent.AAI.put("generic-vnf.vnf-id", "fw0001vm001fw001");
- //subOnsetEvent.AAI.put("vserver.vserver-name", "vserver-name-16102016-aai3255-data-11-1");
- subOnsetEvent.closedLoopEventStatus = ControlLoopEventStatus.ONSET;
-
- System.out.println("----- Subsequent ONSET -----");
- System.out.println(Serialization.gsonPretty.toJson(subOnsetEvent));
-
- //
- // Insert subsequent DCAE ONSET Event into memory
- //
- kieSession.insert(subOnsetEvent);
- try {
- Thread.sleep(500);
- } catch (InterruptedException e) {
- break;
- }
- }
- }
-
- });
- thread.start();
- try {
- Thread.sleep(3000);
- } catch (InterruptedException e) {
- }
- //
- // Stop the thread
- //
- thread.interrupt();
- //
- // Generate APPC ACCEPT Response
- //
- Response response1 = new Response();
- // CommonHeader
- CommonHeader commonHeader1 = new CommonHeader();
- commonHeader1.RequestID = onsetEvent.requestID;
- response1.CommonHeader = commonHeader1;
- // ResponseStatus
- ResponseStatus responseStatus1 = new ResponseStatus();
- responseStatus1.Code = 100;
- response1.Status = responseStatus1;
- //
- System.out.println("----- APP-C RESPONSE 100 -----");
- System.out.println(Serialization.gsonPretty.toJson(response1));
- //
- // Insert APPC Response into memory
- //
- kieSession.insert(response1);
- //
- // Simulating APPC takes some time for processing the recipe
- // and then gives response
- //
- try {
- Thread.sleep(1000);
- } catch (InterruptedException e) {
- }
- //
- // Generate APPC SUCCESS Response
- //
- Response response2 = new Response();
- // CommonHeader
- CommonHeader commonHeader2 = new CommonHeader();
- commonHeader2.RequestID = onsetEvent.requestID;
- response2.CommonHeader = commonHeader2;
- // ResponseStatus
- ResponseStatus responseStatus2 = new ResponseStatus();
- responseStatus2.Code = 400;
- response2.Status = responseStatus2;
- //
- System.out.println("----- APP-C RESPONSE 400 -----");
- System.out.println(Serialization.gsonPretty.toJson(response2));
- //
- // Insert APPC Response into memory
- //
- kieSession.insert(response2);
- //
- try {
- Thread.sleep(3000);
- } catch (InterruptedException e) {
- }
- //
- // Test is finished, so stop the kieSession
- //
- kieSession.halt();
- }
- //
- }).start();
- //
- // Start firing rules
- //
- kieSession.fireUntilHalt();
- //
- // Dump working memory
- //
- dumpFacts(kieSession);
- //
- // See if there is anything left in memory, there SHOULD only be
- // a params fact.
- //
- assertEquals("There should only be 1 Fact left in memory.", 1, kieSession.getFactCount());
- for (FactHandle handle : kieSession.getFactHandles()) {
- Object fact = kieSession.getObject(handle);
- assertEquals("Non-Param Fact left in working memory", "org.openecomp.policy.controlloop.Params", fact.getClass().getName());
- }
- }
-
- public static void dumpFacts(KieSession kieSession) {
- System.out.println("Fact Count: " + kieSession.getFactCount());
- for (FactHandle handle : kieSession.getFactHandles()) {
- System.out.println("FACT: " + handle);
- }
- }
-
- public static KieSession buildContainer(String droolsTemplate,
- String closedLoopControlName,
- String policyScope,
- String policyName,
- String policyVersion,
- String actor,
- String aaiURL,
- String aaiUsername,
- String aaiPassword,
- String msoURL,
- String msoUsername,
- String msoPassword,
- String aaiNamedQuery,
- int aaiPatternMatch,
- String notificationTopic,
- String appcTopic ) throws IOException {
- //
- // Get our Drools Kie factory
- //
- KieServices ks = KieServices.Factory.get();
-
- KieModuleModel kModule = ks.newKieModuleModel();
-
- System.out.println("KMODULE:" + System.lineSeparator() + kModule.toXML());
-
- //
- // Generate our drools rule from our template
- //
- KieFileSystem kfs = ks.newKieFileSystem();
-
- kfs.writeKModuleXML(kModule.toXML());
- {
- Path rule = Paths.get(droolsTemplate);
- String ruleTemplate = new String(Files.readAllBytes(rule));
- String drlContents = generatePolicy(ruleTemplate,
- closedLoopControlName,
- policyScope,
- policyName,
- policyVersion,
- actor,
- aaiURL,
- aaiUsername,
- aaiPassword,
- msoURL,
- msoUsername,
- msoPassword,
- aaiNamedQuery,
- aaiPatternMatch,
- notificationTopic,
- appcTopic
- );
-
- kfs.write("src/main/resources/" + policyName + ".drl", ks.getResources().newByteArrayResource(drlContents.getBytes()));
- }
- //
- // Compile the rule
- //
- KieBuilder builder = ks.newKieBuilder(kfs).buildAll();
- Results results = builder.getResults();
- if (results.hasMessages(Message.Level.ERROR)) {
- for (Message msg : results.getMessages()) {
- System.err.println(msg.toString());
- }
- throw new RuntimeException("Drools Rule has Errors");
- }
- for (Message msg : results.getMessages()) {
- System.out.println(msg.toString());
- }
- //
- // Create our kie Session and container
- //
- ReleaseId releaseId = ks.getRepository().getDefaultReleaseId();
- System.out.println(releaseId);
- KieContainer kContainer = ks.newKieContainer(releaseId);
-
- return kContainer.newKieSession();
- }
- public static String generatePolicy(String ruleContents,
- String closedLoopControlName,
- String policyScope,
- String policyName,
- String policyVersion,
- String actor,
- String aaiURL,
- String aaiUsername,
- String aaiPassword,
- String msoURL,
- String msoUsername,
- String msoPassword,
- String aaiNamedQueryUUID,
- int aaiPatternMatch,
- String notificationTopic,
- String appcTopic) {
-
- Pattern p = Pattern.compile("\\$\\{closedLoopControlName\\}");
- Matcher m = p.matcher(ruleContents);
- ruleContents = m.replaceAll(closedLoopControlName);
-
- p = Pattern.compile("\\$\\{policyScope\\}");
- m = p.matcher(ruleContents);
- ruleContents = m.replaceAll(policyScope);
-
- p = Pattern.compile("\\$\\{policyName\\}");
- m = p.matcher(ruleContents);
- ruleContents = m.replaceAll(policyName);
-
- p = Pattern.compile("\\$\\{policyVersion\\}");
- m = p.matcher(ruleContents);
- ruleContents = m.replaceAll(policyVersion);
-
- p = Pattern.compile("\\$\\{actor\\}");
- m = p.matcher(ruleContents);
- ruleContents = m.replaceAll(actor);
-
- p = Pattern.compile("\\$\\{aaiURL\\}");
- m = p.matcher(ruleContents);
- if (aaiURL == null) {
- ruleContents = m.replaceAll("null");
- } else {
- ruleContents = m.replaceAll(aaiURL);
- }
-
- p = Pattern.compile("\\$\\{aaiUsername\\}");
- m = p.matcher(ruleContents);
- if (aaiUsername == null) {
- ruleContents = m.replaceAll("null");
- } else {
- ruleContents = m.replaceAll(aaiUsername);
- }
-
- p = Pattern.compile("\\$\\{aaiPassword\\}");
- m = p.matcher(ruleContents);
- if (aaiPassword == null) {
- ruleContents = m.replaceAll("null");
- } else {
- ruleContents = m.replaceAll(aaiPassword);
- }
-
- p = Pattern.compile("\\$\\{msoURL\\}");
- m = p.matcher(ruleContents);
- if (msoURL == null) {
- ruleContents = m.replaceAll("null");
- } else {
- ruleContents = m.replaceAll(msoURL);
- }
-
- p = Pattern.compile("\\$\\{msoUsername\\}");
- m = p.matcher(ruleContents);
- if (msoUsername == null) {
- ruleContents = m.replaceAll("null");
- } else {
- ruleContents = m.replaceAll(msoUsername);
- }
-
- p = Pattern.compile("\\$\\{msoPassword\\}");
- m = p.matcher(ruleContents);
- if (msoPassword == null) {
- ruleContents = m.replaceAll("null");
- } else {
- ruleContents = m.replaceAll(msoPassword);
- }
-
- p = Pattern.compile("\\$\\{aaiNamedQueryUUID\\}");
- m = p.matcher(ruleContents);
- if (aaiNamedQueryUUID == null) {
- ruleContents = m.replaceAll("null");
- } else {
- ruleContents = m.replaceAll(aaiNamedQueryUUID);
- }
-
- p = Pattern.compile("\\$\\{aaiPatternMatch\\}");
- m = p.matcher(ruleContents);
- if (aaiPatternMatch == 1) {
- ruleContents = m.replaceAll("1");
- } else {
- ruleContents = m.replaceAll("0");
- }
-
- p = Pattern.compile("\\$\\{notificationTopic\\}");
- m = p.matcher(ruleContents);
- if (notificationTopic == null) {
- ruleContents = m.replaceAll("null");
- } else {
- ruleContents = m.replaceAll(notificationTopic);
- }
-
- p = Pattern.compile("\\$\\{appcTopic\\}");
- m = p.matcher(ruleContents);
- if (appcTopic == null) {
- ruleContents = m.replaceAll("null");
- } else {
- ruleContents = m.replaceAll(appcTopic);
- }
-
- System.out.println(ruleContents);
-
- return ruleContents;
- }
-
-}
diff --git a/template.demo/src/test/java/org/openecomp/policy/template/demo/TestMSO.java b/template.demo/src/test/java/org/openecomp/policy/template/demo/TestMSO.java
deleted file mode 100644
index a02e777f0..000000000
--- a/template.demo/src/test/java/org/openecomp/policy/template/demo/TestMSO.java
+++ /dev/null
@@ -1,159 +0,0 @@
-/*-
- * ============LICENSE_START=======================================================
- * demo
- * ================================================================================
- * Copyright (C) 2017 AT&T Intellectual Property. All rights reserved.
- * ================================================================================
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- * ============LICENSE_END=========================================================
- */
-
-package org.openecomp.policy.template.demo;
-
-import java.io.FileNotFoundException;
-import java.io.FileReader;
-import java.util.UUID;
-
-import org.junit.Test;
-import org.openecomp.policy.aai.AAINQF199.AAINQF199Response;
-import org.openecomp.policy.aai.AAINQF199.AAINQF199ResponseWrapper;
-import org.openecomp.policy.aai.util.Serialization;
-import org.openecomp.policy.mso.MSOCloudConfiguration;
-import org.openecomp.policy.mso.MSOModelInfo;
-import org.openecomp.policy.mso.MSORelatedInstance;
-import org.openecomp.policy.mso.MSORelatedInstanceListElement;
-import org.openecomp.policy.mso.MSORequest;
-import org.openecomp.policy.mso.MSORequestDetails;
-import org.openecomp.policy.mso.MSORequestInfo;
-import org.openecomp.policy.mso.MSORequestParameters;
-
-import com.google.gson.Gson;
-import com.google.gson.stream.JsonReader;
-
-public class TestMSO {
-
- @Test
- public void test() throws FileNotFoundException {
- Gson gson = new Gson();
- JsonReader reader = new JsonReader(new FileReader("src/test/resources/aairesponse.json"));
- AAINQF199Response response = gson.fromJson(reader, AAINQF199Response.class);
-
- System.out.println(Serialization.gsonPretty.toJson(response));
-
- AAINQF199ResponseWrapper aainqf199ResponseWrapper = new AAINQF199ResponseWrapper(UUID.randomUUID(), response);
-
- //
- //
- // vnfItem
- //
- String vnfItemVnfId = aainqf199ResponseWrapper.aainqf199response.inventoryResponseItems.get(0).items.inventoryResponseItems.get(0).genericVNF.vnfID;
- String vnfItemVnfType = aainqf199ResponseWrapper.aainqf199response.inventoryResponseItems.get(0).items.inventoryResponseItems.get(0).genericVNF.vnfType;
- vnfItemVnfType = vnfItemVnfType.substring(vnfItemVnfType.lastIndexOf("/")+1);
- String vnfItemPersonaModelId = aainqf199ResponseWrapper.aainqf199response.inventoryResponseItems.get(0).items.inventoryResponseItems.get(0).genericVNF.personaModelId;
- String vnfItemPersonaModelVersion = aainqf199ResponseWrapper.aainqf199response.inventoryResponseItems.get(0).items.inventoryResponseItems.get(0).genericVNF.personaModelVersion;
- String vnfItemModelName = aainqf199ResponseWrapper.aainqf199response.inventoryResponseItems.get(0).items.inventoryResponseItems.get(0).extraProperties.extraProperty.get(0).propertyValue;
- String vnfItemModelNameVersionId = aainqf199ResponseWrapper.aainqf199response.inventoryResponseItems.get(0).items.inventoryResponseItems.get(0).extraProperties.extraProperty.get(4).propertyValue;
- //
- // serviceItem
- //
- String serviceItemServiceInstanceId = aainqf199ResponseWrapper.aainqf199response.inventoryResponseItems.get(0).items.inventoryResponseItems.get(0).items.inventoryResponseItems.get(0).serviceInstance.serviceInstanceID;
- String serviceItemPersonaModelId = aainqf199ResponseWrapper.aainqf199response.inventoryResponseItems.get(0).items.inventoryResponseItems.get(0).items.inventoryResponseItems.get(0).serviceInstance.personaModelId;
- String serviceItemModelName = aainqf199ResponseWrapper.aainqf199response.inventoryResponseItems.get(0).items.inventoryResponseItems.get(0).items.inventoryResponseItems.get(0).extraProperties.extraProperty.get(0).propertyValue;
- String serviceItemModelVersion = aainqf199ResponseWrapper.aainqf199response.inventoryResponseItems.get(0).items.inventoryResponseItems.get(0).items.inventoryResponseItems.get(0).serviceInstance.personaModelVersion;
- String serviceItemModelNameVersionId = aainqf199ResponseWrapper.aainqf199response.inventoryResponseItems.get(0).items.inventoryResponseItems.get(0).items.inventoryResponseItems.get(0).extraProperties.extraProperty.get(4).propertyValue;
- //
- // This comes from the base module
- //
- String vfModuleItemVfModuleName = aainqf199ResponseWrapper.aainqf199response.inventoryResponseItems.get(0).items.inventoryResponseItems.get(0).items.inventoryResponseItems.get(1).vfModule.vfModuleName;
- vfModuleItemVfModuleName = vfModuleItemVfModuleName.replace("Vfmodule", "vDNS");
- //
- // vfModuleItem - NOT the base module
- //
- String vfModuleItemPersonaModelId = aainqf199ResponseWrapper.aainqf199response.inventoryResponseItems.get(0).items.inventoryResponseItems.get(0).items.inventoryResponseItems.get(2).vfModule.personaModelId;
- String vfModuleItemPersonaModelVersion = aainqf199ResponseWrapper.aainqf199response.inventoryResponseItems.get(0).items.inventoryResponseItems.get(0).items.inventoryResponseItems.get(2).vfModule.personaModelVersion;
- String vfModuleItemModelName = aainqf199ResponseWrapper.aainqf199response.inventoryResponseItems.get(0).items.inventoryResponseItems.get(0).items.inventoryResponseItems.get(2).extraProperties.extraProperty.get(0).propertyValue;
- String vfModuleItemModelNameVersionId = aainqf199ResponseWrapper.aainqf199response.inventoryResponseItems.get(0).items.inventoryResponseItems.get(0).items.inventoryResponseItems.get(2).extraProperties.extraProperty.get(4).propertyValue;
-
- //
- // tenantItem
- //
- String tenantItemTenantId = aainqf199ResponseWrapper.aainqf199response.inventoryResponseItems.get(0).items.inventoryResponseItems.get(1).tenant.tenantId;
- //
- // cloudRegionItem
- //
- String cloudRegionItemCloudRegionId = aainqf199ResponseWrapper.aainqf199response.inventoryResponseItems.get(0).items.inventoryResponseItems.get(1).items.inventoryResponseItems.get(0).cloudRegion.cloudRegionId;
-
- //
- // Construct an MSO request
- //
- MSORequest request = new MSORequest();
- request.requestDetails = new MSORequestDetails();
- request.requestDetails.modelInfo = new MSOModelInfo();
- request.requestDetails.cloudConfiguration = new MSOCloudConfiguration();
- request.requestDetails.requestInfo = new MSORequestInfo();
- request.requestDetails.requestParameters = new MSORequestParameters();
- request.requestDetails.requestParameters.userParams = null;
- //
- // cloudConfiguration
- //
- request.requestDetails.cloudConfiguration.lcpCloudRegionId = cloudRegionItemCloudRegionId;
- request.requestDetails.cloudConfiguration.tenantId = tenantItemTenantId;
- //
- // modelInfo
- //
- request.requestDetails.modelInfo.modelType = "vfModule";
- request.requestDetails.modelInfo.modelInvariantId = vfModuleItemPersonaModelId;
- request.requestDetails.modelInfo.modelNameVersionId = vfModuleItemModelNameVersionId;
- request.requestDetails.modelInfo.modelName = vfModuleItemModelName;
- request.requestDetails.modelInfo.modelVersion = vfModuleItemPersonaModelVersion;
- //
- // requestInfo
- //
- request.requestDetails.requestInfo.instanceName = vfModuleItemVfModuleName;
- request.requestDetails.requestInfo.source = "POLICY";
- request.requestDetails.requestInfo.suppressRollback = false;
- //
- // relatedInstanceList
- //
- MSORelatedInstanceListElement relatedInstanceListElement1 = new MSORelatedInstanceListElement();
- MSORelatedInstanceListElement relatedInstanceListElement2 = new MSORelatedInstanceListElement();
- relatedInstanceListElement1.relatedInstance = new MSORelatedInstance();
- relatedInstanceListElement2.relatedInstance = new MSORelatedInstance();
- //
- relatedInstanceListElement1.relatedInstance.instanceId = serviceItemServiceInstanceId;
- relatedInstanceListElement1.relatedInstance.modelInfo = new MSOModelInfo();
- relatedInstanceListElement1.relatedInstance.modelInfo.modelType = "service";
- relatedInstanceListElement1.relatedInstance.modelInfo.modelInvariantId = serviceItemPersonaModelId;
- relatedInstanceListElement1.relatedInstance.modelInfo.modelNameVersionId = serviceItemModelNameVersionId;
- relatedInstanceListElement1.relatedInstance.modelInfo.modelName = serviceItemModelName;
- relatedInstanceListElement1.relatedInstance.modelInfo.modelVersion = serviceItemModelVersion;
- //
- relatedInstanceListElement2.relatedInstance.instanceId = vnfItemVnfId;
- relatedInstanceListElement2.relatedInstance.modelInfo = new MSOModelInfo();
- relatedInstanceListElement2.relatedInstance.modelInfo.modelType = "vnf";
- relatedInstanceListElement2.relatedInstance.modelInfo.modelInvariantId = vnfItemPersonaModelId;
- relatedInstanceListElement2.relatedInstance.modelInfo.modelNameVersionId = vnfItemModelNameVersionId;
- relatedInstanceListElement2.relatedInstance.modelInfo.modelName = vnfItemModelName;
- relatedInstanceListElement2.relatedInstance.modelInfo.modelVersion = vnfItemPersonaModelVersion;
- relatedInstanceListElement2.relatedInstance.modelInfo.modelCustomizationName = vnfItemVnfType;
- //
- request.requestDetails.relatedInstanceList.add(relatedInstanceListElement1);
- request.requestDetails.relatedInstanceList.add(relatedInstanceListElement2);
- //
- // print MSO request for debug
- //
- System.out.println("MSO request sent:");
- System.out.println(Serialization.gsonPretty.toJson(request));
- }
-
-}
diff --git a/template.demo/src/test/resources/aairesponse.json b/template.demo/src/test/resources/aairesponse.json
deleted file mode 100644
index 66da8e715..000000000
--- a/template.demo/src/test/resources/aairesponse.json
+++ /dev/null
@@ -1,227 +0,0 @@
-{
- "inventory-response-item": [
- {
- "extra-properties": {},
- "inventory-response-items": {
- "inventory-response-item": [
- {
- "extra-properties": {
- "extra-property": [
- {
- "property-name": "model.model-name",
- "property-value": "c15ce9e1-e914-4c8f-b8bb"
- },
- {
- "property-name": "model.model-type",
- "property-value": "resource"
- },
- {
- "property-name": "model.model-version",
- "property-value": "1"
- },
- {
- "property-name": "model.model-id",
- "property-value": "033a32ed-aa65-4764-a736-36f2942f1aa0"
- },
- {
- "property-name": "model.model-name-version-id",
- "property-value": "d4d072dc-4e21-4a03-9524-628985819a8e"
- }
- ]
- },
- "generic-vnf": {
- "in-maint": false,
- "is-closed-loop-disabled": false,
- "orchestration-status": "Created",
- "persona-model-id": "033a32ed-aa65-4764-a736-36f2942f1aa0",
- "persona-model-version": "1.0",
- "resource-version": "1485542422",
- "service-id": "b3f70641-bdb9-4030-825e-6abb73a1f929",
- "vnf-id": "594e2fe0-48b8-41ff-82e2-3d4bab69b192",
- "vnf-name": "Vnf_Ete_Named90e1ab3-dcd5-4877-9edb-eadfc84e32c8",
- "vnf-type": "8330e932-2a23-4943-8606/c15ce9e1-e914-4c8f-b8bb 1"
- },
- "inventory-response-items": {
- "inventory-response-item": [
- {
- "extra-properties": {
- "extra-property": [
- {
- "property-name": "model.model-name",
- "property-value": "8330e932-2a23-4943-8606"
- },
- {
- "property-name": "model.model-type",
- "property-value": "service"
- },
- {
- "property-name": "model.model-version",
- "property-value": "1"
- },
- {
- "property-name": "model.model-id",
- "property-value": "4fcbc1c0-7793-46d8-8aa1-fa1c2ed9ec7b"
- },
- {
- "property-name": "model.model-name-version-id",
- "property-value": "5c996219-b2e2-4c76-9b43-7e8672a33c1d"
- }
- ]
- },
- "service-instance": {
- "persona-model-id": "4fcbc1c0-7793-46d8-8aa1-fa1c2ed9ec7b",
- "persona-model-version": "1.0",
- "resource-version": "1485542400",
- "service-instance-id": "cf8426a6-0b53-4e3d-bfa6-4b2f4d5913a5",
- "service-instance-name": "Service_Ete_Named90e1ab3-dcd5-4877-9edb-eadfc84e32c8"
- }
- },
- {
- "extra-properties": {
- "extra-property": [
- {
- "property-name": "model.model-name",
- "property-value": "C15ce9e1E9144c8fB8bb..base_vlb..module-0"
- },
- {
- "property-name": "model.model-type",
- "property-value": "resource"
- },
- {
- "property-name": "model.model-version",
- "property-value": "1"
- },
- {
- "property-name": "model.model-id",
- "property-value": "79ee24cd-fc9a-4f14-afae-5e1dd2ab2941"
- },
- {
- "property-name": "model.model-name-version-id",
- "property-value": "5484cabb-1a0d-4f29-a616-094a3f643d73"
- }
- ]
- },
- "model-name": "C15ce9e1E9144c8fB8bb..base_vlb..module-0",
- "vf-module": {
- "heat-stack-id": "Vfmodule_Ete_Named90e1ab3-dcd5-4877-9edb-eadfc84e32c8/5845f37b-6cda-4e91-8ca3-f5572d226488",
- "is-base-vf-module": true,
- "orchestration-status": "active",
- "persona-model-id": "79ee24cd-fc9a-4f14-afae-5e1dd2ab2941",
- "persona-model-version": "1",
- "resource-version": "1485542667",
- "vf-module-id": "b0eff878-e2e1-4947-9597-39afdd0f51dd",
- "vf-module-name": "Vfmodule_Ete_Named90e1ab3-dcd5-4877-9edb-eadfc84e32c8"
- }
- },
- {
- "extra-properties": {
- "extra-property": [
- {
- "property-name": "model.model-name",
- "property-value": "C15ce9e1E9144c8fB8bb..dnsscaling..module-1"
- },
- {
- "property-name": "model.model-type",
- "property-value": "resource"
- },
- {
- "property-name": "model.model-version",
- "property-value": "1"
- },
- {
- "property-name": "model.model-id",
- "property-value": "f32568ec-2f1c-458a-864b-0593d53d141a"
- },
- {
- "property-name": "model.model-name-version-id",
- "property-value": "69615025-879d-4f0d-afe3-b7d1a7eeed1f"
- }
- ]
- },
- "vf-module": {
- "is-base-vf-module": false,
- "persona-model-id": "f32568ec-2f1c-458a-864b-0593d53d141a",
- "persona-model-version": "1.0",
- "resource-version": "1485561752",
- "vf-module-id": "dummy",
- "vf-module-name": "dummy"
- }
- },
- {
- "extra-properties": {
- "extra-property": [
- {
- "property-name": "model.model-name",
- "property-value": "C15ce9e1E9144c8fB8bb..dnsscaling..module-1"
- },
- {
- "property-name": "model.model-type",
- "property-value": "resource"
- },
- {
- "property-name": "model.model-version",
- "property-value": "1"
- },
- {
- "property-name": "model.model-id",
- "property-value": "f32568ec-2f1c-458a-864b-0593d53d141a"
- },
- {
- "property-name": "model.model-name-version-id",
- "property-value": "69615025-879d-4f0d-afe3-b7d1a7eeed1f"
- }
- ]
- },
- "vf-module": {
- "heat-stack-id": "vDNS_Ete_Named90e1ab3-dcd5-4877-9edb-eadfc84e32c8/f447ce51-14dd-4dcd-9957-68a047c79673",
- "is-base-vf-module": false,
- "orchestration-status": "active",
- "persona-model-id": "f32568ec-2f1c-458a-864b-0593d53d141a",
- "persona-model-version": "1.0",
- "resource-version": "1485562712",
- "vf-module-id": "8cd79e44-1fae-48c1-a160-609f90b46749",
- "vf-module-name": "vDNS_Ete_Named90e1ab3-dcd5-4877-9edb-eadfc84e32c8"
- }
- }
- ]
- }
- },
- {
- "extra-properties": {},
- "inventory-response-items": {
- "inventory-response-item": [
- {
- "cloud-region": {
- "cloud-owner": "Rackspace",
- "cloud-region-id": "DFW",
- "cloud-region-version": "v1",
- "cloud-type": "SharedNode",
- "cloud-zone": "CloudZone",
- "owner-defined-type": "OwnerType",
- "resource-version": "1485465545"
- },
- "extra-properties": {}
- }
- ]
- },
- "tenant": {
- "resource-version": "1485465545",
- "tenant-id": "1015548",
- "tenant-name": "1015548"
- }
- }
- ]
- },
- "vserver": {
- "in-maint": false,
- "is-closed-loop-disabled": false,
- "prov-status": "ACTIVE",
- "resource-version": "1485546436",
- "vserver-id": "70f081eb-2a87-4c81-9296-4b93d7d145c6",
- "vserver-name": "vlb-lb-32c8",
- "vserver-name2": "vlb-lb-32c8",
- "vserver-selflink": "https://dfw.servers.api.rackspacecloud.com/v2/1015548/servers/70f081eb-2a87-4c81-9296-4b93d7d145c6"
- }
- }
- ]
-}