diff options
Diffstat (limited to 'template.demo')
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" - } - } - ] -} |