diff options
Diffstat (limited to 'examples/examples-aadm')
38 files changed, 3165 insertions, 0 deletions
diff --git a/examples/examples-aadm/pom.xml b/examples/examples-aadm/pom.xml new file mode 100644 index 000000000..c67d71aba --- /dev/null +++ b/examples/examples-aadm/pom.xml @@ -0,0 +1,92 @@ +<!-- + ============LICENSE_START======================================================= + Copyright (C) 2018 Ericsson. 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. + + SPDX-License-Identifier: Apache-2.0 + ============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> + <parent> + <groupId>org.onap.policy.apex-pdp.examples</groupId> + <artifactId>examples</artifactId> + <version>2.0.0-SNAPSHOT</version> + </parent> + + <artifactId>examples-aadm</artifactId> + <name>${project.artifactId}</name> + <description>Specific code for the Apex AADM Example</description> + + <dependencies> + <dependency> + <groupId>org.onap.policy.apex-pdp.model</groupId> + <artifactId>policy-model</artifactId> + <version>${project.version}</version> + </dependency> + <dependency> + <groupId>org.onap.policy.apex-pdp.core</groupId> + <artifactId>core-engine</artifactId> + <version>${project.version}</version> + <scope>test</scope> + </dependency> + <dependency> + <groupId>org.onap.policy.apex-pdp.core</groupId> + <artifactId>core-infrastructure</artifactId> + <version>${project.version}</version> + <scope>test</scope> + </dependency> + <dependency> + <groupId>org.onap.policy.apex-pdp.plugins.plugins-executor</groupId> + <artifactId>plugins-executor-mvel</artifactId> + <version>${project.version}</version> + <scope>test</scope> + </dependency> + <dependency> + <groupId>org.apache.derby</groupId> + <artifactId>derby</artifactId> + <version>${version.derby}</version> + <scope>test</scope> + </dependency> + </dependencies> + + <build> + <plugins> + <plugin> + <groupId>org.codehaus.mojo</groupId> + <artifactId>exec-maven-plugin</artifactId> + <executions> + <execution> + <id>generate-models</id> + <phase>process-classes</phase> + <goals> + <goal>exec</goal> + </goals> + <configuration> + <executable>java</executable> + <arguments> + <argument>-classpath</argument> + <!-- automatically creates the classpath using all project dependencies, also adding the project build directory --> + <classpath /> + <argument>org.onap.policy.apex.examples.aadm.model.AADMDomainModelSaver</argument> + <argument>${project.build.directory}/classes/examples/models/AADM</argument> + </arguments> + </configuration> + </execution> + </executions> + </plugin> + </plugins> + </build> +</project>
\ No newline at end of file diff --git a/examples/examples-aadm/src/main/java/org/onap/policy/apex/examples/aadm/concepts/ENodeBStatus.java b/examples/examples-aadm/src/main/java/org/onap/policy/apex/examples/aadm/concepts/ENodeBStatus.java new file mode 100644 index 000000000..13fbb1eca --- /dev/null +++ b/examples/examples-aadm/src/main/java/org/onap/policy/apex/examples/aadm/concepts/ENodeBStatus.java @@ -0,0 +1,107 @@ +/*- + * ============LICENSE_START======================================================= + * Copyright (C) 2016-2018 Ericsson. 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. + * + * SPDX-License-Identifier: Apache-2.0 + * ============LICENSE_END========================================================= + */ + +package org.onap.policy.apex.examples.aadm.concepts; + +import java.io.Serializable; + +/** + * The Class ENodeBStatus holds the status of an eNodeB in the AADM domain. + */ +public class ENodeBStatus implements Serializable { + private static final long serialVersionUID = 2852523814242234172L; + + private final String eNodeB; + + private long dosCount = 0; + private boolean beingProbed = false; + + /** + * The Constructor initiates the status of the eNodeB. + * + * @param eNodeB the e node B + */ + public ENodeBStatus(final String eNodeB) { + this.eNodeB = eNodeB; + } + + /** + * Gets the eNodeB name. + * + * @return the eNodeB name + */ + public String getENodeB() { + return eNodeB; + } + + /** + * Gets the number of Denial Of Service incidents on the eNodeB. + * + * @return the number of Denial Of Service incidents on the eNodeB + */ + public long getDOSCount() { + return dosCount; + } + + /** + * Sets the number of Denial Of Service incidents on the eNodeB. + * + * @param incomingDosCount the number of Denial Of Service incidents on the eNodeB + */ + public void setDOSCount(final long incomingDosCount) { + this.dosCount = incomingDosCount; + } + + /** + * Increment DOS count. + * + * @return the long + */ + public long incrementDOSCount() { + return ++dosCount; + } + + /** + * Decrement DOS count. + * + * @return the long + */ + public long decrementDOSCount() { + return --dosCount; + } + + /** + * Gets the being probed. + * + * @return the being probed + */ + public boolean getBeingProbed() { + return beingProbed; + } + + /** + * Sets the being probed. + * + * @param beingProbed the being probed + */ + public void setBeingProbed(final boolean beingProbed) { + this.beingProbed = beingProbed; + } +} diff --git a/examples/examples-aadm/src/main/java/org/onap/policy/apex/examples/aadm/concepts/IMSIStatus.java b/examples/examples-aadm/src/main/java/org/onap/policy/apex/examples/aadm/concepts/IMSIStatus.java new file mode 100644 index 000000000..f59e982b0 --- /dev/null +++ b/examples/examples-aadm/src/main/java/org/onap/policy/apex/examples/aadm/concepts/IMSIStatus.java @@ -0,0 +1,175 @@ +/*- + * ============LICENSE_START======================================================= + * Copyright (C) 2016-2018 Ericsson. 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. + * + * SPDX-License-Identifier: Apache-2.0 + * ============LICENSE_END========================================================= + */ + +package org.onap.policy.apex.examples.aadm.concepts; + +import java.io.Serializable; + +/** + * The Class IMSIStatus holds the status of an IMSI in the AADM domain. + */ +public class IMSIStatus implements Serializable { + private static final long serialVersionUID = 2852523814242234172L; + + private static final long TIME_NOT_SET = 0; + + private final String imsi; + + private boolean anomalous = false; + private long anomalousTime = TIME_NOT_SET; + private String eNodeBID; + private long blackListedTime = TIME_NOT_SET; + private long blockingCount = 0; + + /** + * Initiate an IMSI status instance with an IMSI value. + * + * @param imsi the IMSI value + */ + public IMSIStatus(final String imsi) { + this.imsi = imsi; + } + + /** + * Gets the IMSI value. + * + * @return the IMSI value + */ + public String getIMSI() { + return imsi; + } + + /** + * Gets the anomalous flag. + * + * @return the anomalous flag + */ + public boolean getAnomalous() { + return anomalous; + } + + /** + * Sets the anomalous flag. + * + * @param anomalous the anomalous flag + */ + public void setAnomalous(final boolean anomalous) { + this.anomalous = anomalous; + } + + /** + * Gets the time of the most recent anomolous event. + * + * @return the time of the most recent anomolous event + */ + public long getAnomolousTime() { + return anomalousTime; + } + + /** + * Sets the time of the most recent anomolous event. + * + * @param incomingAnomalousTime the time of the most recent anomolous event + */ + public void setAnomolousTime(final long incomingAnomalousTime) { + this.anomalousTime = incomingAnomalousTime; + } + + /** + * Gets the eNodeB ID to which the IMSI is attached. + * + * @return theeNodeB ID to which the IMSI is attached + */ + public String getENodeBID() { + return eNodeBID; + } + + /** + * Sets the eNodeB ID to which the IMSI is attached. + * + * @param incomingENodeBID the eNodeB ID to which the IMSI is attached + */ + public void setENodeBID(final String incomingENodeBID) { + this.eNodeBID = incomingENodeBID; + } + + /** + * Checks if the eNodeB ID to which the IMSI is attached is set. + * + * @return true, if eNodeB ID to which the IMSI is attached is set + */ + public boolean checkSetENodeBID() { + return (eNodeBID != null); + } + + /** + * Gets the time at which the IMSI was blacklisted. + * + * @return the time at which the IMSI was blacklisted + */ + public long getBlacklistedTime() { + return blackListedTime; + } + + /** + * Sets the time at which the IMSI was blacklisted. + * + * @param incomingBlackListedTime the time at which the IMSI was blacklisted + */ + public void setBlacklistedTime(final long incomingBlackListedTime) { + this.blackListedTime = incomingBlackListedTime; + } + + /** + * Gets the number of times this IMSI was blocked. + * + * @return the number of times this IMSI was blocked + */ + public long getBlockingCount() { + return blockingCount; + } + + /** + * Sets the number of times this IMSI was blocked. + * + * @param blockingCount the number of times this IMSI was blocked + */ + public void setBlockingCount(final long blockingCount) { + this.blockingCount = blockingCount; + } + + /** + * Increment the number of times this IMSI was blocked. + * + * @return the incremented number of times this IMSI was blocked + */ + public long incrementBlockingCount() { + return ++blockingCount; + } + + /** + * Decrement the number of times this IMSI was blocked. + * + * @return the decremented number of times this IMSI was blocked + */ + public long decrementBlockingCount() { + return --blockingCount; + } +} diff --git a/examples/examples-aadm/src/main/java/org/onap/policy/apex/examples/aadm/concepts/IPAddressStatus.java b/examples/examples-aadm/src/main/java/org/onap/policy/apex/examples/aadm/concepts/IPAddressStatus.java new file mode 100644 index 000000000..fc3780f17 --- /dev/null +++ b/examples/examples-aadm/src/main/java/org/onap/policy/apex/examples/aadm/concepts/IPAddressStatus.java @@ -0,0 +1,79 @@ +/*- + * ============LICENSE_START======================================================= + * Copyright (C) 2016-2018 Ericsson. 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. + * + * SPDX-License-Identifier: Apache-2.0 + * ============LICENSE_END========================================================= + */ + +package org.onap.policy.apex.examples.aadm.concepts; + +import java.io.Serializable; + +/** + * The Class IPAddressStatus holds the status of an IP address in the AADM domain. + */ +public class IPAddressStatus implements Serializable { + private static final long serialVersionUID = -7402022458317593252L; + + private final String ipAddress; + + private String imsi; + + /** + * The Constructor sets up the IP address status instance. + * + * @param ipAddress the ip address + */ + public IPAddressStatus(final String ipAddress) { + this.ipAddress = ipAddress; + } + + /** + * Gets the IP address. + * + * @return the IP address + */ + public String getIPAddress() { + return ipAddress; + } + + /** + * Gets the IMSI. + * + * @return the imsi + */ + public String getIMSI() { + return imsi; + } + + /** + * Sets the IMSI. + * + * @param incomingImsi the imsi + */ + public void setIMSI(final String incomingImsi) { + this.imsi = incomingImsi; + } + + /** + * Check set IMSI. + * + * @return true, if check set IMSI + */ + public boolean checkSetIMSI() { + return (imsi != null); + } +} diff --git a/examples/examples-aadm/src/main/java/org/onap/policy/apex/examples/aadm/concepts/package-info.java b/examples/examples-aadm/src/main/java/org/onap/policy/apex/examples/aadm/concepts/package-info.java new file mode 100644 index 000000000..68e91457d --- /dev/null +++ b/examples/examples-aadm/src/main/java/org/onap/policy/apex/examples/aadm/concepts/package-info.java @@ -0,0 +1,27 @@ +/*- + * ============LICENSE_START======================================================= + * Copyright (C) 2016-2018 Ericsson. 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. + * + * SPDX-License-Identifier: Apache-2.0 + * ============LICENSE_END========================================================= + */ + +/** + * Provides Java types that are used in the AADM domain. + * + * @author Liam Fallon (liam.fallon@ericsson.com) + */ + +package org.onap.policy.apex.examples.aadm.concepts; diff --git a/examples/examples-aadm/src/main/java/org/onap/policy/apex/examples/aadm/model/AADMDomainModelFactory.java b/examples/examples-aadm/src/main/java/org/onap/policy/apex/examples/aadm/model/AADMDomainModelFactory.java new file mode 100644 index 000000000..b0cbf0c17 --- /dev/null +++ b/examples/examples-aadm/src/main/java/org/onap/policy/apex/examples/aadm/model/AADMDomainModelFactory.java @@ -0,0 +1,703 @@ +/*- + * ============LICENSE_START======================================================= + * Copyright (C) 2016-2018 Ericsson. 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. + * + * SPDX-License-Identifier: Apache-2.0 + * ============LICENSE_END========================================================= + */ + +package org.onap.policy.apex.examples.aadm.model; + +import org.onap.policy.apex.model.basicmodel.concepts.ApexRuntimeException; +import org.onap.policy.apex.model.basicmodel.concepts.AxArtifactKey; +import org.onap.policy.apex.model.basicmodel.concepts.AxKeyInformation; +import org.onap.policy.apex.model.basicmodel.concepts.AxReferenceKey; +import org.onap.policy.apex.model.basicmodel.concepts.AxValidationResult; +import org.onap.policy.apex.model.contextmodel.concepts.AxContextAlbum; +import org.onap.policy.apex.model.contextmodel.concepts.AxContextAlbums; +import org.onap.policy.apex.model.contextmodel.concepts.AxContextSchema; +import org.onap.policy.apex.model.contextmodel.concepts.AxContextSchemas; +import org.onap.policy.apex.model.eventmodel.concepts.AxEvent; +import org.onap.policy.apex.model.eventmodel.concepts.AxEvents; +import org.onap.policy.apex.model.eventmodel.concepts.AxField; +import org.onap.policy.apex.model.policymodel.concepts.AxLogicReader; +import org.onap.policy.apex.model.policymodel.concepts.AxPolicies; +import org.onap.policy.apex.model.policymodel.concepts.AxPolicy; +import org.onap.policy.apex.model.policymodel.concepts.AxPolicyModel; +import org.onap.policy.apex.model.policymodel.concepts.AxState; +import org.onap.policy.apex.model.policymodel.concepts.AxStateOutput; +import org.onap.policy.apex.model.policymodel.concepts.AxStateTaskOutputType; +import org.onap.policy.apex.model.policymodel.concepts.AxStateTaskReference; +import org.onap.policy.apex.model.policymodel.concepts.AxTask; +import org.onap.policy.apex.model.policymodel.concepts.AxTaskLogic; +import org.onap.policy.apex.model.policymodel.concepts.AxTaskSelectionLogic; +import org.onap.policy.apex.model.policymodel.concepts.AxTasks; +import org.onap.policy.apex.model.policymodel.handling.PolicyLogicReader; + +/** + * The Class AADMDomainModelFactory. + */ +public class AADMDomainModelFactory { + /** + * Gets the AADM policy model. + * + * @return the AADM policy model + */ + // CHECKSTYLE:OFF: checkstyle + public AxPolicyModel getAADMPolicyModel() { + // CHECKSTYLE:ON: checkstyle + // Data types for event parameters + final AxContextSchema imsi = new AxContextSchema(new AxArtifactKey("IMSI", "0.0.1"), "Java", "java.lang.Long"); + final AxContextSchema ueIPAddress = + new AxContextSchema(new AxArtifactKey("UEIPAddress", "0.0.1"), "Java", "java.lang.String"); + final AxContextSchema nwIPAddress = + new AxContextSchema(new AxArtifactKey("NWIPAddress", "0.0.1"), "Java", "java.lang.String"); + final AxContextSchema dosFlag = + new AxContextSchema(new AxArtifactKey("DOSFlag", "0.0.1"), "Java", "java.lang.Boolean"); + final AxContextSchema roundTripTime = + new AxContextSchema(new AxArtifactKey("RoundTripTime", "0.0.1"), "Java", "java.lang.Long"); + final AxContextSchema applicationName = + new AxContextSchema(new AxArtifactKey("ApplicationName", "0.0.1"), "Java", "java.lang.String"); + final AxContextSchema protocolGroup = + new AxContextSchema(new AxArtifactKey("ProtocolGroup", "0.0.1"), "Java", "java.lang.String"); + final AxContextSchema eNodeBID = + new AxContextSchema(new AxArtifactKey("ENodeBID", "0.0.1"), "Java", "java.lang.Long"); + final AxContextSchema httpHostClass = + new AxContextSchema(new AxArtifactKey("HttpHostClass", "0.0.1"), "Java", "java.lang.String"); + final AxContextSchema tcpOnFlag = + new AxContextSchema(new AxArtifactKey("TCPOnFlag", "0.0.1"), "Java", "java.lang.Boolean"); + final AxContextSchema probeOnFlag = + new AxContextSchema(new AxArtifactKey("ProbeOnFlag", "0.0.1"), "Java", "java.lang.Boolean"); + final AxContextSchema blacklistOnFlag = + new AxContextSchema(new AxArtifactKey("BlacklistOnFlag", "0.0.1"), "Java", "java.lang.Boolean"); + final AxContextSchema averageThroughput = + new AxContextSchema(new AxArtifactKey("AverageThroughput", "0.0.1"), "Java", "java.lang.Double"); + final AxContextSchema serviceRequestCount = + new AxContextSchema(new AxArtifactKey("ServiceRequestCount", "0.0.1"), "Java", "java.lang.Integer"); + final AxContextSchema attchCount = + new AxContextSchema(new AxArtifactKey("AttachCount", "0.0.1"), "Java", "java.lang.Integer"); + final AxContextSchema subscriberCount = + new AxContextSchema(new AxArtifactKey("SubscriberCount", "0.0.1"), "Java", "java.lang.Integer"); + final AxContextSchema averageServiceRequest = + new AxContextSchema(new AxArtifactKey("AverageServiceRequest", "0.0.1"), "Java", "java.lang.Double"); + final AxContextSchema averageAttach = + new AxContextSchema(new AxArtifactKey("AverageAttach", "0.0.1"), "Java", "java.lang.Double"); + final AxContextSchema actionTask = + new AxContextSchema(new AxArtifactKey("ActionTask", "0.0.1"), "Java", "java.lang.String"); + final AxContextSchema version = + new AxContextSchema(new AxArtifactKey("Version", "0.0.1"), "Java", "java.lang.String"); + final AxContextSchema profile = + new AxContextSchema(new AxArtifactKey("Profile", "0.0.1"), "Java", "java.lang.String"); + final AxContextSchema threshold = + new AxContextSchema(new AxArtifactKey("Threshold", "0.0.1"), "Java", "java.lang.Long"); + final AxContextSchema triggerSpec = + new AxContextSchema(new AxArtifactKey("TriggerSpec", "0.0.1"), "Java", "java.lang.String"); + final AxContextSchema periodicEventCount = + new AxContextSchema(new AxArtifactKey("PeriodicEventCount", "0.0.1"), "Java", "java.lang.Long"); + final AxContextSchema periodicDelay = + new AxContextSchema(new AxArtifactKey("PeriodicDelay", "0.0.1"), "Java", "java.lang.Long"); + final AxContextSchema periodicTime = + new AxContextSchema(new AxArtifactKey("PeriodicTime", "0.0.1"), "Java", "java.lang.Long"); + + final AxContextSchemas aadmContextSchemas = new AxContextSchemas(new AxArtifactKey("AADMDatatypes", "0.0.1")); + aadmContextSchemas.getSchemasMap().put(imsi.getKey(), imsi); + aadmContextSchemas.getSchemasMap().put(ueIPAddress.getKey(), ueIPAddress); + aadmContextSchemas.getSchemasMap().put(nwIPAddress.getKey(), nwIPAddress); + aadmContextSchemas.getSchemasMap().put(dosFlag.getKey(), dosFlag); + aadmContextSchemas.getSchemasMap().put(roundTripTime.getKey(), roundTripTime); + aadmContextSchemas.getSchemasMap().put(applicationName.getKey(), applicationName); + aadmContextSchemas.getSchemasMap().put(protocolGroup.getKey(), protocolGroup); + aadmContextSchemas.getSchemasMap().put(eNodeBID.getKey(), eNodeBID); + aadmContextSchemas.getSchemasMap().put(httpHostClass.getKey(), httpHostClass); + aadmContextSchemas.getSchemasMap().put(tcpOnFlag.getKey(), tcpOnFlag); + aadmContextSchemas.getSchemasMap().put(probeOnFlag.getKey(), probeOnFlag); + aadmContextSchemas.getSchemasMap().put(blacklistOnFlag.getKey(), blacklistOnFlag); + aadmContextSchemas.getSchemasMap().put(averageThroughput.getKey(), averageThroughput); + aadmContextSchemas.getSchemasMap().put(serviceRequestCount.getKey(), serviceRequestCount); + aadmContextSchemas.getSchemasMap().put(attchCount.getKey(), attchCount); + aadmContextSchemas.getSchemasMap().put(subscriberCount.getKey(), subscriberCount); + aadmContextSchemas.getSchemasMap().put(averageServiceRequest.getKey(), averageServiceRequest); + aadmContextSchemas.getSchemasMap().put(averageAttach.getKey(), averageAttach); + aadmContextSchemas.getSchemasMap().put(actionTask.getKey(), actionTask); + aadmContextSchemas.getSchemasMap().put(version.getKey(), version); + aadmContextSchemas.getSchemasMap().put(profile.getKey(), profile); + aadmContextSchemas.getSchemasMap().put(threshold.getKey(), threshold); + aadmContextSchemas.getSchemasMap().put(triggerSpec.getKey(), triggerSpec); + aadmContextSchemas.getSchemasMap().put(periodicEventCount.getKey(), periodicEventCount); + aadmContextSchemas.getSchemasMap().put(periodicDelay.getKey(), periodicDelay); + aadmContextSchemas.getSchemasMap().put(periodicTime.getKey(), periodicTime); + + final AxEvent aadmEvent = + new AxEvent(new AxArtifactKey("AADMEvent", "0.0.1"), "org.onap.policy.apex.examples.aadm.events"); + aadmEvent.setSource("External"); + aadmEvent.setTarget("Apex"); + aadmEvent.getParameterMap().put("IMSI", + new AxField(new AxReferenceKey(aadmEvent.getKey(), "IMSI"), imsi.getKey())); + aadmEvent.getParameterMap().put("ENODEB_ID", + new AxField(new AxReferenceKey(aadmEvent.getKey(), "ENODEB_ID"), eNodeBID.getKey())); + aadmEvent.getParameterMap().put("IMSI_IP", + new AxField(new AxReferenceKey(aadmEvent.getKey(), "IMSI_IP"), ueIPAddress.getKey())); + aadmEvent.getParameterMap().put("NW_IP", + new AxField(new AxReferenceKey(aadmEvent.getKey(), "NW_IP"), nwIPAddress.getKey())); + aadmEvent.getParameterMap().put("DoS", + new AxField(new AxReferenceKey(aadmEvent.getKey(), "DoS"), dosFlag.getKey())); + aadmEvent.getParameterMap().put("TCP_UE_SIDE_MEDIAN_RTT_TX_TO_RX", new AxField( + new AxReferenceKey(aadmEvent.getKey(), "TCP_UE_SIDE_MEDIAN_RTT_TX_TO_RX"), roundTripTime.getKey())); + aadmEvent.getParameterMap().put("TCP_UE_SIDE_AVG_THROUGHPUT", new AxField( + new AxReferenceKey(aadmEvent.getKey(), "TCP_UE_SIDE_AVG_THROUGHPUT"), averageThroughput.getKey())); + aadmEvent.getParameterMap().put("APPLICATION", + new AxField(new AxReferenceKey(aadmEvent.getKey(), "APPLICATION"), applicationName.getKey())); + aadmEvent.getParameterMap().put("protocol_group", + new AxField(new AxReferenceKey(aadmEvent.getKey(), "protocol_group"), protocolGroup.getKey())); + aadmEvent.getParameterMap().put("http_host_class", + new AxField(new AxReferenceKey(aadmEvent.getKey(), "http_host_class"), httpHostClass.getKey())); + aadmEvent.getParameterMap().put("PROBE_ON", + new AxField(new AxReferenceKey(aadmEvent.getKey(), "PROBE_ON"), probeOnFlag.getKey())); + aadmEvent.getParameterMap().put("TCP_ON", + new AxField(new AxReferenceKey(aadmEvent.getKey(), "TCP_ON"), tcpOnFlag.getKey())); + aadmEvent.getParameterMap().put("SGW_IP_ADDRESS", + new AxField(new AxReferenceKey(aadmEvent.getKey(), "SGW_IP_ADDRESS"), nwIPAddress.getKey())); + aadmEvent.getParameterMap().put("UE_IP_ADDRESS", + new AxField(new AxReferenceKey(aadmEvent.getKey(), "UE_IP_ADDRESS"), ueIPAddress.getKey())); + aadmEvent.getParameterMap().put("SERVICE_REQUEST_COUNT", new AxField( + new AxReferenceKey(aadmEvent.getKey(), "SERVICE_REQUEST_COUNT"), serviceRequestCount.getKey())); + aadmEvent.getParameterMap().put("ATTACH_COUNT", + new AxField(new AxReferenceKey(aadmEvent.getKey(), "ATTACH_COUNT"), attchCount.getKey())); + aadmEvent.getParameterMap().put("NUM_SUBSCRIBERS", + new AxField(new AxReferenceKey(aadmEvent.getKey(), "NUM_SUBSCRIBERS"), subscriberCount.getKey())); + aadmEvent.getParameterMap().put("AVG_SUBSCRIBER_SERVICE_REQUEST", + new AxField(new AxReferenceKey(aadmEvent.getKey(), "AVG_SUBSCRIBER_SERVICE_REQUEST"), + averageServiceRequest.getKey())); + aadmEvent.getParameterMap().put("AVG_SUBSCRIBER_ATTACH", + new AxField(new AxReferenceKey(aadmEvent.getKey(), "AVG_SUBSCRIBER_ATTACH"), averageAttach.getKey())); + aadmEvent.getParameterMap().put("ACTTASK", + new AxField(new AxReferenceKey(aadmEvent.getKey(), "ACTTASK"), actionTask.getKey())); + + final AxEvent aadmXStreamActEvent = new AxEvent(new AxArtifactKey("XSTREAM_AADM_ACT_EVENT", "0.0.1"), + "org.onap.policy.apex.examples.aadm.events"); + aadmXStreamActEvent.setSource("Apex"); + aadmXStreamActEvent.setTarget("External"); + aadmXStreamActEvent.getParameterMap().put("IMSI", + new AxField(new AxReferenceKey(aadmXStreamActEvent.getKey(), "IMSI"), imsi.getKey())); + aadmXStreamActEvent.getParameterMap().put("IMSI_IP", + new AxField(new AxReferenceKey(aadmXStreamActEvent.getKey(), "IMSI_IP"), ueIPAddress.getKey())); + aadmXStreamActEvent.getParameterMap().put("ENODEB_ID", + new AxField(new AxReferenceKey(aadmXStreamActEvent.getKey(), "ENODEB_ID"), eNodeBID.getKey())); + aadmXStreamActEvent.getParameterMap().put("NW_IP", + new AxField(new AxReferenceKey(aadmXStreamActEvent.getKey(), "NW_IP"), nwIPAddress.getKey())); + aadmXStreamActEvent.getParameterMap().put("ACTTASK", + new AxField(new AxReferenceKey(aadmXStreamActEvent.getKey(), "ACTTASK"), actionTask.getKey())); + aadmXStreamActEvent.getParameterMap().put("PROBE_ON", + new AxField(new AxReferenceKey(aadmXStreamActEvent.getKey(), "PROBE_ON"), probeOnFlag.getKey())); + aadmXStreamActEvent.getParameterMap().put("TCP_ON", + new AxField(new AxReferenceKey(aadmXStreamActEvent.getKey(), "TCP_ON"), tcpOnFlag.getKey())); + aadmXStreamActEvent.getParameterMap().put("VERSION", + new AxField(new AxReferenceKey(aadmXStreamActEvent.getKey(), "VERSION"), version.getKey())); + aadmXStreamActEvent.getParameterMap().put("TRIGGER_SPEC", + new AxField(new AxReferenceKey(aadmXStreamActEvent.getKey(), "TRIGGER_SPEC"), triggerSpec.getKey())); + aadmXStreamActEvent.getParameterMap().put("MAJ_MIN_MAINT_VERSION", new AxField( + new AxReferenceKey(aadmXStreamActEvent.getKey(), "MAJ_MIN_MAINT_VERSION"), version.getKey())); + aadmXStreamActEvent.getParameterMap().put("BLACKLIST_ON", new AxField( + new AxReferenceKey(aadmXStreamActEvent.getKey(), "BLACKLIST_ON"), blacklistOnFlag.getKey())); + aadmXStreamActEvent.getParameterMap().put("PROFILE", + new AxField(new AxReferenceKey(aadmXStreamActEvent.getKey(), "PROFILE"), profile.getKey())); + aadmXStreamActEvent.getParameterMap().put("THRESHOLD", + new AxField(new AxReferenceKey(aadmXStreamActEvent.getKey(), "THRESHOLD"), threshold.getKey())); + + final AxEvent vMMEEvent = + new AxEvent(new AxArtifactKey("VMMEEvent", "0.0.1"), "org.onap.policy.apex.examples.aadm.events"); + vMMEEvent.setSource("External"); + vMMEEvent.setTarget("Apex"); + vMMEEvent.getParameterMap().put("IMSI", + new AxField(new AxReferenceKey(vMMEEvent.getKey(), "IMSI"), imsi.getKey())); + vMMEEvent.getParameterMap().put("ENODEB_ID", + new AxField(new AxReferenceKey(vMMEEvent.getKey(), "ENODEB_ID"), eNodeBID.getKey())); + vMMEEvent.getParameterMap().put("IMSI_IP", + new AxField(new AxReferenceKey(vMMEEvent.getKey(), "IMSI_IP"), ueIPAddress.getKey())); + vMMEEvent.getParameterMap().put("NW_IP", + new AxField(new AxReferenceKey(vMMEEvent.getKey(), "NW_IP"), nwIPAddress.getKey())); + vMMEEvent.getParameterMap().put("PROFILE", + new AxField(new AxReferenceKey(vMMEEvent.getKey(), "PROFILE"), profile.getKey())); + vMMEEvent.getParameterMap().put("THRESHOLD", + new AxField(new AxReferenceKey(vMMEEvent.getKey(), "THRESHOLD"), threshold.getKey())); + + final AxEvent sapcEvent = + new AxEvent(new AxArtifactKey("SAPCEvent", "0.0.1"), "org.onap.policy.apex.examples.aadm.events"); + sapcEvent.setSource("External"); + sapcEvent.setTarget("Apex"); + sapcEvent.getParameterMap().put("IMSI", + new AxField(new AxReferenceKey(sapcEvent.getKey(), "IMSI"), imsi.getKey())); + sapcEvent.getParameterMap().put("ENODEB_ID", + new AxField(new AxReferenceKey(sapcEvent.getKey(), "ENODEB_ID"), eNodeBID.getKey())); + sapcEvent.getParameterMap().put("IMSI_IP", + new AxField(new AxReferenceKey(sapcEvent.getKey(), "IMSI_IP"), ueIPAddress.getKey())); + sapcEvent.getParameterMap().put("NW_IP", + new AxField(new AxReferenceKey(sapcEvent.getKey(), "NW_IP"), nwIPAddress.getKey())); + sapcEvent.getParameterMap().put("PROFILE", + new AxField(new AxReferenceKey(sapcEvent.getKey(), "PROFILE"), profile.getKey())); + sapcEvent.getParameterMap().put("THRESHOLD", + new AxField(new AxReferenceKey(sapcEvent.getKey(), "THRESHOLD"), threshold.getKey())); + sapcEvent.getParameterMap().put("TCP_ON", + new AxField(new AxReferenceKey(sapcEvent.getKey(), "TCP_ON"), tcpOnFlag.getKey())); + sapcEvent.getParameterMap().put("PROBE_ON", + new AxField(new AxReferenceKey(sapcEvent.getKey(), "PROBE_ON"), probeOnFlag.getKey())); + sapcEvent.getParameterMap().put("VERSION", + new AxField(new AxReferenceKey(sapcEvent.getKey(), "VERSION"), version.getKey())); + sapcEvent.getParameterMap().put("BLACKLIST_ON", + new AxField(new AxReferenceKey(sapcEvent.getKey(), "BLACKLIST_ON"), blacklistOnFlag.getKey())); + + final AxEvent sapcBlacklistSubscriberEvent = + new AxEvent(new AxArtifactKey("SAPCBlacklistSubscriberEvent", "0.0.1"), + "org.onap.policy.apex.examples.aadm.events"); + sapcBlacklistSubscriberEvent.setSource("Apex"); + sapcBlacklistSubscriberEvent.setTarget("External"); + sapcBlacklistSubscriberEvent.getParameterMap().put("IMSI", + new AxField(new AxReferenceKey(sapcBlacklistSubscriberEvent.getKey(), "IMSI"), imsi.getKey())); + sapcBlacklistSubscriberEvent.getParameterMap().put("PROFILE", + new AxField(new AxReferenceKey(sapcBlacklistSubscriberEvent.getKey(), "PROFILE"), profile.getKey())); + sapcBlacklistSubscriberEvent.getParameterMap().put("BLACKLIST_ON", new AxField( + new AxReferenceKey(sapcBlacklistSubscriberEvent.getKey(), "BLACKLIST_ON"), blacklistOnFlag.getKey())); + sapcBlacklistSubscriberEvent.getParameterMap().put("IMSI_IP", new AxField( + new AxReferenceKey(sapcBlacklistSubscriberEvent.getKey(), "IMSI_IP"), ueIPAddress.getKey())); + sapcBlacklistSubscriberEvent.getParameterMap().put("NW_IP", + new AxField(new AxReferenceKey(sapcBlacklistSubscriberEvent.getKey(), "NW_IP"), nwIPAddress.getKey())); + sapcBlacklistSubscriberEvent.getParameterMap().put("PROBE_ON", new AxField( + new AxReferenceKey(sapcBlacklistSubscriberEvent.getKey(), "PROBE_ON"), probeOnFlag.getKey())); + sapcBlacklistSubscriberEvent.getParameterMap().put("TCP_ON", + new AxField(new AxReferenceKey(sapcBlacklistSubscriberEvent.getKey(), "TCP_ON"), tcpOnFlag.getKey())); + + final AxEvent periodicEvent = + new AxEvent(new AxArtifactKey("PeriodicEvent", "0.0.1"), "org.onap.policy.apex.examples.aadm.events"); + periodicEvent.setSource("System"); + periodicEvent.setTarget("Apex"); + periodicEvent.getParameterMap().put("PERIODIC_EVENT_COUNT", new AxField( + new AxReferenceKey(periodicEvent.getKey(), "PERIODIC_EVENT_COUNT"), periodicEventCount.getKey())); + periodicEvent.getParameterMap().put("PERIODIC_DELAY", + new AxField(new AxReferenceKey(periodicEvent.getKey(), "PERIODIC_DELAY"), periodicDelay.getKey())); + periodicEvent.getParameterMap().put("PERIODIC_FIRST_TIME", + new AxField(new AxReferenceKey(periodicEvent.getKey(), "PERIODIC_FIRST_TIME"), periodicTime.getKey())); + periodicEvent.getParameterMap().put("PERIODIC_CURRENT_TIME", new AxField( + new AxReferenceKey(periodicEvent.getKey(), "PERIODIC_CURRENT_TIME"), periodicTime.getKey())); + periodicEvent.getParameterMap().put("PERIODIC_LAST_TIME", + new AxField(new AxReferenceKey(periodicEvent.getKey(), "PERIODIC_LAST_TIME"), periodicTime.getKey())); + + final AxEvents aadmEvents = new AxEvents(new AxArtifactKey("AADMEvents", "0.0.1")); + aadmEvents.getEventMap().put(aadmEvent.getKey(), aadmEvent); + aadmEvents.getEventMap().put(aadmXStreamActEvent.getKey(), aadmXStreamActEvent); + aadmEvents.getEventMap().put(vMMEEvent.getKey(), vMMEEvent); + aadmEvents.getEventMap().put(sapcEvent.getKey(), sapcEvent); + aadmEvents.getEventMap().put(sapcBlacklistSubscriberEvent.getKey(), sapcBlacklistSubscriberEvent); + aadmEvents.getEventMap().put(periodicEvent.getKey(), periodicEvent); + + // Data types for context + final AxContextSchema eNodeBStatus = new AxContextSchema(new AxArtifactKey("ENodeBStatus", "0.0.1"), "Java", + "org.onap.policy.apex.examples.aadm.concepts.ENodeBStatus"); + final AxContextSchema imsiStatus = new AxContextSchema(new AxArtifactKey("IMSIStatus", "0.0.1"), "Java", + "org.onap.policy.apex.examples.aadm.concepts.IMSIStatus"); + final AxContextSchema ipAddressStatus = new AxContextSchema(new AxArtifactKey("IPAddressStatus", "0.0.1"), + "Java", "org.onap.policy.apex.examples.aadm.concepts.IPAddressStatus"); + aadmContextSchemas.getSchemasMap().put(eNodeBStatus.getKey(), eNodeBStatus); + aadmContextSchemas.getSchemasMap().put(imsiStatus.getKey(), imsiStatus); + aadmContextSchemas.getSchemasMap().put(ipAddressStatus.getKey(), ipAddressStatus); + + // Three context albums for AADM + final AxContextAlbum eNodeBStatusAlbum = new AxContextAlbum(new AxArtifactKey("ENodeBStatusAlbum", "0.0.1"), + "APPLICATION", true, eNodeBStatus.getKey()); + final AxContextAlbum imsiStatusAlbum = new AxContextAlbum(new AxArtifactKey("IMSIStatusAlbum", "0.0.1"), + "APPLICATION", true, imsiStatus.getKey()); + final AxContextAlbum ipAddressStatusAlbum = new AxContextAlbum( + new AxArtifactKey("IPAddressStatusAlbum", "0.0.1"), "APPLICATION", true, ipAddressStatus.getKey()); + + final AxContextAlbums aadmAlbums = new AxContextAlbums(new AxArtifactKey("AADMContext", "0.0.1")); + aadmAlbums.getAlbumsMap().put(eNodeBStatusAlbum.getKey(), eNodeBStatusAlbum); + aadmAlbums.getAlbumsMap().put(imsiStatusAlbum.getKey(), imsiStatusAlbum); + aadmAlbums.getAlbumsMap().put(ipAddressStatusAlbum.getKey(), ipAddressStatusAlbum); + + // Tasks + final AxLogicReader logicReader = + new PolicyLogicReader().setLogicPackage(this.getClass().getPackage().getName()).setDefaultLogic(null); + + final AxTask aadmMatchTask = new AxTask(new AxArtifactKey("AADMMatchTask", "0.0.1")); + aadmMatchTask.duplicateInputFields(aadmEvent.getParameterMap()); + aadmMatchTask.duplicateOutputFields(aadmEvent.getParameterMap()); + aadmMatchTask.getContextAlbumReferences().add(eNodeBStatusAlbum.getKey()); + aadmMatchTask.getContextAlbumReferences().add(imsiStatusAlbum.getKey()); + aadmMatchTask.getContextAlbumReferences().add(ipAddressStatusAlbum.getKey()); + aadmMatchTask.setTaskLogic(new AxTaskLogic(aadmMatchTask.getKey(), "TaskLogic", "MVEL", logicReader)); + + final AxTask aadmEstablishTask = new AxTask(new AxArtifactKey("AADMEstablishTask", "0.0.1")); + aadmEstablishTask.duplicateInputFields(aadmEvent.getParameterMap()); + aadmEstablishTask.duplicateOutputFields(aadmEvent.getParameterMap()); + logicReader.setDefaultLogic("Default_TaskLogic"); + aadmEstablishTask.setTaskLogic(new AxTaskLogic(aadmEstablishTask.getKey(), "TaskLogic", "MVEL", logicReader)); + + final AxTask aadmDecideTask = new AxTask(new AxArtifactKey("AADMDecideTask", "0.0.1")); + aadmDecideTask.duplicateInputFields(aadmEvent.getParameterMap()); + aadmDecideTask.duplicateOutputFields(aadmEvent.getParameterMap()); + aadmDecideTask.setTaskLogic(new AxTaskLogic(aadmDecideTask.getKey(), "TaskLogic", "MVEL", logicReader)); + + logicReader.setDefaultLogic(null); + + final AxTask aadmDoSSuggestionActTask = new AxTask(new AxArtifactKey("AADMDoSSuggestionActTask", "0.0.1")); + aadmDoSSuggestionActTask.duplicateInputFields(aadmEvent.getParameterMap()); + aadmDoSSuggestionActTask.duplicateOutputFields(aadmXStreamActEvent.getParameterMap()); + aadmDoSSuggestionActTask.getContextAlbumReferences().add(eNodeBStatusAlbum.getKey()); + aadmDoSSuggestionActTask.getContextAlbumReferences().add(imsiStatusAlbum.getKey()); + aadmDoSSuggestionActTask + .setTaskLogic(new AxTaskLogic(aadmDoSSuggestionActTask.getKey(), "TaskLogic", "MVEL", logicReader)); + + final AxTask aadmNoActTask = new AxTask(new AxArtifactKey("AADMNoActTask", "0.0.1")); + aadmNoActTask.duplicateInputFields(aadmEvent.getParameterMap()); + aadmNoActTask.duplicateOutputFields(aadmXStreamActEvent.getParameterMap()); + aadmNoActTask.setTaskLogic(new AxTaskLogic(aadmNoActTask.getKey(), "TaskLogic", "MVEL", logicReader)); + + final AxTask aadmDoSProvenActTask = new AxTask(new AxArtifactKey("AADMDoSProvenActTask", "0.0.1")); + aadmDoSProvenActTask.duplicateInputFields(aadmEvent.getParameterMap()); + aadmDoSProvenActTask.duplicateOutputFields(aadmXStreamActEvent.getParameterMap()); + aadmDoSProvenActTask.getContextAlbumReferences().add(eNodeBStatusAlbum.getKey()); + aadmDoSProvenActTask.getContextAlbumReferences().add(imsiStatusAlbum.getKey()); + aadmDoSProvenActTask + .setTaskLogic(new AxTaskLogic(aadmDoSProvenActTask.getKey(), "TaskLogic", "MVEL", logicReader)); + + final AxTask vMMEMatchTask = new AxTask(new AxArtifactKey("VMMEMatchTask", "0.0.1")); + vMMEMatchTask.duplicateInputFields(vMMEEvent.getParameterMap()); + vMMEMatchTask.duplicateOutputFields(vMMEEvent.getParameterMap()); + vMMEMatchTask.setTaskLogic(new AxTaskLogic(vMMEMatchTask.getKey(), "TaskLogic", "MVEL", logicReader)); + + final AxTask vMMEEstablishTask = new AxTask(new AxArtifactKey("VMMEEstablishTask", "0.0.1")); + vMMEEstablishTask.duplicateInputFields(vMMEEvent.getParameterMap()); + vMMEEstablishTask.duplicateOutputFields(vMMEEvent.getParameterMap()); + logicReader.setDefaultLogic("Default_TaskLogic"); + vMMEEstablishTask.setTaskLogic(new AxTaskLogic(vMMEEstablishTask.getKey(), "TaskLogic", "MVEL", logicReader)); + + final AxTask vMMEDecideTask = new AxTask(new AxArtifactKey("VMMEDecideTask", "0.0.1")); + vMMEDecideTask.duplicateInputFields(vMMEEvent.getParameterMap()); + vMMEDecideTask.duplicateOutputFields(vMMEEvent.getParameterMap()); + vMMEDecideTask.setTaskLogic(new AxTaskLogic(vMMEDecideTask.getKey(), "TaskLogic", "MVEL", logicReader)); + + final AxTask vMMENoActTask = new AxTask(new AxArtifactKey("VMMENoActTask", "0.0.1")); + vMMENoActTask.duplicateInputFields(vMMEEvent.getParameterMap()); + vMMENoActTask.duplicateOutputFields(vMMEEvent.getParameterMap()); + vMMENoActTask.setTaskLogic(new AxTaskLogic(vMMENoActTask.getKey(), "TaskLogic", "MVEL", logicReader)); + + final AxTask vMMEActTask = new AxTask(new AxArtifactKey("VMMEActTask", "0.0.1")); + vMMEActTask.duplicateInputFields(vMMEEvent.getParameterMap()); + vMMEActTask.duplicateOutputFields(vMMEEvent.getParameterMap()); + logicReader.setDefaultLogic(null); + vMMEActTask.setTaskLogic(new AxTaskLogic(vMMEActTask.getKey(), "TaskLogic", "MVEL", logicReader)); + + final AxTask sapcMatchTask = new AxTask(new AxArtifactKey("SAPCMatchTask", "0.0.1")); + sapcMatchTask.duplicateInputFields(sapcEvent.getParameterMap()); + sapcMatchTask.duplicateOutputFields(sapcBlacklistSubscriberEvent.getParameterMap()); + sapcMatchTask.setTaskLogic(new AxTaskLogic(sapcMatchTask.getKey(), "TaskLogic", "MVEL", logicReader)); + + final AxTask sapcEstablishTask = new AxTask(new AxArtifactKey("SAPCEstablishTask", "0.0.1")); + sapcEstablishTask.duplicateInputFields(sapcEvent.getParameterMap()); + sapcEstablishTask.duplicateOutputFields(sapcBlacklistSubscriberEvent.getParameterMap()); + logicReader.setDefaultLogic("Default_TaskLogic"); + sapcEstablishTask.setTaskLogic(new AxTaskLogic(sapcEstablishTask.getKey(), "TaskLogic", "MVEL", logicReader)); + + final AxTask sapcDecideTask = new AxTask(new AxArtifactKey("SAPCDecideTask", "0.0.1")); + sapcDecideTask.duplicateInputFields(sapcEvent.getParameterMap()); + sapcDecideTask.duplicateOutputFields(sapcBlacklistSubscriberEvent.getParameterMap()); + sapcDecideTask.setTaskLogic(new AxTaskLogic(sapcDecideTask.getKey(), "TaskLogic", "MVEL", logicReader)); + + final AxTask sapcActTask = new AxTask(new AxArtifactKey("SAPCActTask", "0.0.1")); + sapcActTask.duplicateInputFields(sapcEvent.getParameterMap()); + sapcActTask.duplicateOutputFields(sapcBlacklistSubscriberEvent.getParameterMap()); + sapcActTask.getContextAlbumReferences().add(imsiStatusAlbum.getKey()); + logicReader.setDefaultLogic(null); + sapcActTask.setTaskLogic(new AxTaskLogic(sapcActTask.getKey(), "TaskLogic", "MVEL", logicReader)); + + logicReader.setDefaultLogic("Default_TaskLogic"); + + final AxTask periodicMatchTask = new AxTask(new AxArtifactKey("PeriodicMatchTask", "0.0.1")); + periodicMatchTask.duplicateInputFields(periodicEvent.getParameterMap()); + periodicMatchTask.duplicateOutputFields(periodicEvent.getParameterMap()); + periodicMatchTask.setTaskLogic(new AxTaskLogic(periodicMatchTask.getKey(), "TaskLogic", "MVEL", logicReader)); + + final AxTask periodicEstablishTask = new AxTask(new AxArtifactKey("PeriodicEstablishTask", "0.0.1")); + periodicEstablishTask.duplicateInputFields(periodicEvent.getParameterMap()); + periodicEstablishTask.duplicateOutputFields(periodicEvent.getParameterMap()); + periodicEstablishTask + .setTaskLogic(new AxTaskLogic(periodicEstablishTask.getKey(), "TaskLogic", "MVEL", logicReader)); + + final AxTask periodicDecideTask = new AxTask(new AxArtifactKey("PeriodicDecideTask", "0.0.1")); + periodicDecideTask.duplicateInputFields(periodicEvent.getParameterMap()); + periodicDecideTask.duplicateOutputFields(periodicEvent.getParameterMap()); + periodicDecideTask.setTaskLogic(new AxTaskLogic(periodicDecideTask.getKey(), "TaskLogic", "MVEL", logicReader)); + + final AxTask periodicActTask = new AxTask(new AxArtifactKey("PeriodicActTask", "0.0.1")); + periodicActTask.duplicateInputFields(periodicEvent.getParameterMap()); + periodicActTask.duplicateOutputFields(sapcBlacklistSubscriberEvent.getParameterMap()); + periodicActTask.getContextAlbumReferences().add(imsiStatusAlbum.getKey()); + logicReader.setDefaultLogic(null); + periodicActTask.setTaskLogic(new AxTaskLogic(periodicActTask.getKey(), "TaskLogic", "MVEL", logicReader)); + + final AxTasks aadmTasks = new AxTasks(new AxArtifactKey("AADMTasks", "0.0.1")); + aadmTasks.getTaskMap().put(aadmMatchTask.getKey(), aadmMatchTask); + aadmTasks.getTaskMap().put(aadmEstablishTask.getKey(), aadmEstablishTask); + aadmTasks.getTaskMap().put(aadmDecideTask.getKey(), aadmDecideTask); + aadmTasks.getTaskMap().put(aadmDoSSuggestionActTask.getKey(), aadmDoSSuggestionActTask); + aadmTasks.getTaskMap().put(aadmNoActTask.getKey(), aadmNoActTask); + aadmTasks.getTaskMap().put(aadmDoSProvenActTask.getKey(), aadmDoSProvenActTask); + aadmTasks.getTaskMap().put(vMMEMatchTask.getKey(), vMMEMatchTask); + aadmTasks.getTaskMap().put(vMMEEstablishTask.getKey(), vMMEEstablishTask); + aadmTasks.getTaskMap().put(vMMEDecideTask.getKey(), vMMEDecideTask); + aadmTasks.getTaskMap().put(vMMENoActTask.getKey(), vMMENoActTask); + aadmTasks.getTaskMap().put(vMMEActTask.getKey(), vMMEActTask); + aadmTasks.getTaskMap().put(sapcMatchTask.getKey(), sapcMatchTask); + aadmTasks.getTaskMap().put(sapcEstablishTask.getKey(), sapcEstablishTask); + aadmTasks.getTaskMap().put(sapcDecideTask.getKey(), sapcDecideTask); + aadmTasks.getTaskMap().put(sapcActTask.getKey(), sapcActTask); + aadmTasks.getTaskMap().put(periodicMatchTask.getKey(), periodicMatchTask); + aadmTasks.getTaskMap().put(periodicEstablishTask.getKey(), periodicEstablishTask); + aadmTasks.getTaskMap().put(periodicDecideTask.getKey(), periodicDecideTask); + aadmTasks.getTaskMap().put(periodicActTask.getKey(), periodicActTask); + + // Policies + logicReader.setDefaultLogic(null); + + final AxPolicy aadmPolicy = new AxPolicy(new AxArtifactKey("AADMPolicy", "0.0.1")); + aadmPolicy.setTemplate("MEDA"); + + final AxState aadmActState = new AxState(new AxReferenceKey(aadmPolicy.getKey(), "Act")); + aadmActState.setTrigger(aadmEvent.getKey()); + final AxStateOutput aadmAct2Out = + new AxStateOutput(aadmActState.getKey(), AxReferenceKey.getNullKey(), aadmXStreamActEvent.getKey()); + aadmActState.getStateOutputs().put(aadmAct2Out.getKey().getLocalName(), aadmAct2Out); + aadmActState.getContextAlbumReferences().add(ipAddressStatusAlbum.getKey()); + aadmActState.getContextAlbumReferences().add(imsiStatusAlbum.getKey()); + aadmActState.getContextAlbumReferences().add(eNodeBStatusAlbum.getKey()); + aadmActState.setTaskSelectionLogic( + new AxTaskSelectionLogic(aadmActState.getKey(), "TaskSelectionLogic", "MVEL", logicReader)); + aadmActState.setDefaultTask(aadmNoActTask.getKey()); + aadmActState.getTaskReferences().put(aadmNoActTask.getKey(), new AxStateTaskReference(aadmActState.getKey(), + aadmNoActTask.getKey(), AxStateTaskOutputType.DIRECT, aadmAct2Out.getKey())); + aadmActState.getTaskReferences().put(aadmDoSSuggestionActTask.getKey(), + new AxStateTaskReference(aadmActState.getKey(), aadmDoSSuggestionActTask.getKey(), + AxStateTaskOutputType.DIRECT, aadmAct2Out.getKey())); + aadmActState.getTaskReferences().put(aadmDoSProvenActTask.getKey(), + new AxStateTaskReference(aadmActState.getKey(), aadmDoSProvenActTask.getKey(), + AxStateTaskOutputType.DIRECT, aadmAct2Out.getKey())); + + logicReader.setDefaultLogic("Default_TaskSelectionLogic"); + + final AxState aadmDecideState = new AxState(new AxReferenceKey(aadmPolicy.getKey(), "Decide")); + aadmDecideState.setTrigger(aadmEvent.getKey()); + final AxStateOutput aadmDec2Act = + new AxStateOutput(aadmDecideState.getKey(), aadmActState.getKey(), aadmEvent.getKey()); + aadmDecideState.getStateOutputs().put(aadmDec2Act.getKey().getLocalName(), aadmDec2Act); + aadmDecideState.setTaskSelectionLogic( + new AxTaskSelectionLogic(aadmDecideState.getKey(), "TaskSelectionLogic", "MVEL", logicReader)); + aadmDecideState.setDefaultTask(aadmDecideTask.getKey()); + aadmDecideState.getTaskReferences().put(aadmDecideTask.getKey(), new AxStateTaskReference( + aadmDecideState.getKey(), aadmDecideTask.getKey(), AxStateTaskOutputType.DIRECT, aadmDec2Act.getKey())); + + final AxState aadmEstablishState = new AxState(new AxReferenceKey(aadmPolicy.getKey(), "Establish")); + aadmEstablishState.setTrigger(aadmEvent.getKey()); + final AxStateOutput aadmEst2Dec = + new AxStateOutput(aadmEstablishState.getKey(), aadmDecideState.getKey(), aadmEvent.getKey()); + aadmEstablishState.getStateOutputs().put(aadmEst2Dec.getKey().getLocalName(), aadmEst2Dec); + aadmEstablishState.setTaskSelectionLogic( + new AxTaskSelectionLogic(aadmEstablishState.getKey(), "TaskSelectionLogic", "MVEL", logicReader)); + aadmEstablishState.setDefaultTask(aadmEstablishTask.getKey()); + aadmEstablishState.getTaskReferences().put(aadmEstablishTask.getKey(), + new AxStateTaskReference(aadmEstablishState.getKey(), aadmEstablishTask.getKey(), + AxStateTaskOutputType.DIRECT, aadmEst2Dec.getKey())); + + final AxState aadmMatchState = new AxState(new AxReferenceKey(aadmPolicy.getKey(), "Match")); + aadmMatchState.setTrigger(aadmEvent.getKey()); + final AxStateOutput aadmMat2Est = + new AxStateOutput(aadmMatchState.getKey(), aadmEstablishState.getKey(), aadmEvent.getKey()); + aadmMatchState.getStateOutputs().put(aadmMat2Est.getKey().getLocalName(), aadmMat2Est); + aadmMatchState.setTaskSelectionLogic( + new AxTaskSelectionLogic(aadmMatchState.getKey(), "TaskSelectionLogic", "MVEL", logicReader)); + aadmMatchState.setDefaultTask(aadmMatchTask.getKey()); + aadmMatchState.getTaskReferences().put(aadmMatchTask.getKey(), new AxStateTaskReference(aadmMatchState.getKey(), + aadmMatchTask.getKey(), AxStateTaskOutputType.DIRECT, aadmMat2Est.getKey())); + + aadmPolicy.setFirstState(aadmMatchState.getKey().getLocalName()); + aadmPolicy.getStateMap().put(aadmMatchState.getKey().getLocalName(), aadmMatchState); + aadmPolicy.getStateMap().put(aadmEstablishState.getKey().getLocalName(), aadmEstablishState); + aadmPolicy.getStateMap().put(aadmDecideState.getKey().getLocalName(), aadmDecideState); + aadmPolicy.getStateMap().put(aadmActState.getKey().getLocalName(), aadmActState); + + final AxPolicy vMMEPolicy = new AxPolicy(new AxArtifactKey("VMMEPolicy", "0.0.1")); + vMMEPolicy.setTemplate("MEDA"); + + final AxState vMMEActState = new AxState(new AxReferenceKey(vMMEPolicy.getKey(), "Act")); + vMMEActState.setTrigger(vMMEEvent.getKey()); + final AxStateOutput vMMEAct2Out = + new AxStateOutput(vMMEActState.getKey(), AxReferenceKey.getNullKey(), vMMEEvent.getKey()); + vMMEActState.getStateOutputs().put(vMMEAct2Out.getKey().getLocalName(), vMMEAct2Out); + vMMEActState.setDefaultTask(vMMEActTask.getKey()); + vMMEActState.getTaskReferences().put(vMMEActTask.getKey(), new AxStateTaskReference(vMMEActState.getKey(), + vMMEActTask.getKey(), AxStateTaskOutputType.DIRECT, vMMEAct2Out.getKey())); + vMMEActState.getTaskReferences().put(vMMENoActTask.getKey(), new AxStateTaskReference(vMMEActState.getKey(), + vMMENoActTask.getKey(), AxStateTaskOutputType.DIRECT, vMMEAct2Out.getKey())); + + final AxState vMMEDecideState = new AxState(new AxReferenceKey(vMMEPolicy.getKey(), "Decide")); + vMMEDecideState.setTrigger(vMMEEvent.getKey()); + final AxStateOutput vMMEDec2Act = + new AxStateOutput(vMMEDecideState.getKey(), vMMEActState.getKey(), vMMEEvent.getKey()); + vMMEDecideState.getStateOutputs().put(vMMEDec2Act.getKey().getLocalName(), vMMEDec2Act); + vMMEDecideState.setDefaultTask(vMMEDecideTask.getKey()); + vMMEDecideState.getTaskReferences().put(vMMEDecideTask.getKey(), new AxStateTaskReference( + vMMEDecideState.getKey(), vMMEDecideTask.getKey(), AxStateTaskOutputType.DIRECT, vMMEDec2Act.getKey())); + + final AxState vMMEEstablishState = new AxState(new AxReferenceKey(vMMEPolicy.getKey(), "Establish")); + vMMEEstablishState.setTrigger(vMMEEvent.getKey()); + final AxStateOutput vMMEEst2Dec = + new AxStateOutput(vMMEEstablishState.getKey(), vMMEDecideState.getKey(), vMMEEvent.getKey()); + vMMEEstablishState.getStateOutputs().put(vMMEEst2Dec.getKey().getLocalName(), vMMEEst2Dec); + vMMEEstablishState.setDefaultTask(vMMEEstablishTask.getKey()); + vMMEEstablishState.getTaskReferences().put(vMMEEstablishTask.getKey(), + new AxStateTaskReference(vMMEEstablishState.getKey(), vMMEEstablishTask.getKey(), + AxStateTaskOutputType.DIRECT, vMMEEst2Dec.getKey())); + + final AxState vMMEMatchState = new AxState(new AxReferenceKey(vMMEPolicy.getKey(), "Match")); + vMMEMatchState.setTrigger(vMMEEvent.getKey()); + final AxStateOutput vMMEMat2Est = + new AxStateOutput(vMMEMatchState.getKey(), vMMEEstablishState.getKey(), vMMEEvent.getKey()); + vMMEMatchState.getStateOutputs().put(vMMEMat2Est.getKey().getLocalName(), vMMEMat2Est); + vMMEMatchState.setDefaultTask(vMMEMatchTask.getKey()); + vMMEMatchState.getTaskReferences().put(vMMEMatchTask.getKey(), new AxStateTaskReference(vMMEMatchState.getKey(), + vMMEMatchTask.getKey(), AxStateTaskOutputType.DIRECT, vMMEMat2Est.getKey())); + + vMMEPolicy.setFirstState(vMMEMatchState.getKey().getLocalName()); + vMMEPolicy.getStateMap().put(vMMEMatchState.getKey().getLocalName(), vMMEMatchState); + vMMEPolicy.getStateMap().put(vMMEEstablishState.getKey().getLocalName(), vMMEEstablishState); + vMMEPolicy.getStateMap().put(vMMEDecideState.getKey().getLocalName(), vMMEDecideState); + vMMEPolicy.getStateMap().put(vMMEActState.getKey().getLocalName(), vMMEActState); + + final AxPolicy sapcPolicy = new AxPolicy(new AxArtifactKey("SAPCPolicy", "0.0.1")); + sapcPolicy.setTemplate("MEDA"); + + final AxState sapcActState = new AxState(new AxReferenceKey(sapcPolicy.getKey(), "Act")); + sapcActState.setTrigger(sapcEvent.getKey()); + final AxStateOutput sapcAct2Out = new AxStateOutput(sapcActState.getKey(), AxReferenceKey.getNullKey(), + sapcBlacklistSubscriberEvent.getKey()); + sapcActState.getStateOutputs().put(sapcAct2Out.getKey().getLocalName(), sapcAct2Out); + sapcActState.setDefaultTask(sapcActTask.getKey()); + sapcActState.getTaskReferences().put(sapcActTask.getKey(), new AxStateTaskReference(sapcActState.getKey(), + sapcActTask.getKey(), AxStateTaskOutputType.DIRECT, sapcAct2Out.getKey())); + + final AxState sapcDecideState = new AxState(new AxReferenceKey(sapcPolicy.getKey(), "Decide")); + sapcDecideState.setTrigger(sapcEvent.getKey()); + final AxStateOutput sapcDec2Act = + new AxStateOutput(sapcDecideState.getKey(), sapcActState.getKey(), sapcEvent.getKey()); + sapcDecideState.getStateOutputs().put(sapcDec2Act.getKey().getLocalName(), sapcDec2Act); + sapcDecideState.setDefaultTask(sapcDecideTask.getKey()); + sapcDecideState.getTaskReferences().put(sapcDecideTask.getKey(), new AxStateTaskReference( + sapcDecideState.getKey(), sapcDecideTask.getKey(), AxStateTaskOutputType.DIRECT, sapcDec2Act.getKey())); + + final AxState sapcEstablishState = new AxState(new AxReferenceKey(sapcPolicy.getKey(), "Establish")); + sapcEstablishState.setTrigger(sapcEvent.getKey()); + final AxStateOutput sapcEst2Dec = + new AxStateOutput(sapcEstablishState.getKey(), sapcDecideState.getKey(), sapcEvent.getKey()); + sapcEstablishState.getStateOutputs().put(sapcEst2Dec.getKey().getLocalName(), sapcEst2Dec); + sapcEstablishState.setDefaultTask(sapcEstablishTask.getKey()); + sapcEstablishState.getTaskReferences().put(sapcEstablishTask.getKey(), + new AxStateTaskReference(sapcEstablishState.getKey(), sapcEstablishTask.getKey(), + AxStateTaskOutputType.DIRECT, sapcEst2Dec.getKey())); + + final AxState sapcMatchState = new AxState(new AxReferenceKey(sapcPolicy.getKey(), "Match")); + sapcMatchState.setTrigger(aadmXStreamActEvent.getKey()); + final AxStateOutput sapcMat2Est = + new AxStateOutput(sapcMatchState.getKey(), sapcEstablishState.getKey(), sapcEvent.getKey()); + sapcMatchState.getStateOutputs().put(sapcMat2Est.getKey().getLocalName(), sapcMat2Est); + sapcMatchState.setDefaultTask(sapcMatchTask.getKey()); + sapcMatchState.getTaskReferences().put(sapcMatchTask.getKey(), new AxStateTaskReference(sapcMatchState.getKey(), + sapcMatchTask.getKey(), AxStateTaskOutputType.DIRECT, sapcMat2Est.getKey())); + + sapcPolicy.setFirstState(sapcMatchState.getKey().getLocalName()); + sapcPolicy.getStateMap().put(sapcMatchState.getKey().getLocalName(), sapcMatchState); + sapcPolicy.getStateMap().put(sapcEstablishState.getKey().getLocalName(), sapcEstablishState); + sapcPolicy.getStateMap().put(sapcDecideState.getKey().getLocalName(), sapcDecideState); + sapcPolicy.getStateMap().put(sapcActState.getKey().getLocalName(), sapcActState); + + final AxPolicy periodicPolicy = new AxPolicy(new AxArtifactKey("PeriodicPolicy", "0.0.1")); + periodicPolicy.setTemplate("MEDA"); + + final AxState periodicActState = new AxState(new AxReferenceKey(periodicPolicy.getKey(), "Act")); + periodicActState.setTrigger(periodicEvent.getKey()); + final AxStateOutput perAct2Out = new AxStateOutput(periodicActState.getKey(), AxReferenceKey.getNullKey(), + sapcBlacklistSubscriberEvent.getKey()); + periodicActState.getStateOutputs().put(perAct2Out.getKey().getLocalName(), perAct2Out); + periodicActState.setDefaultTask(periodicActTask.getKey()); + periodicActState.getTaskReferences().put(periodicActTask.getKey(), + new AxStateTaskReference(periodicActState.getKey(), periodicActTask.getKey(), + AxStateTaskOutputType.DIRECT, perAct2Out.getKey())); + + final AxState periodicDecideState = new AxState(new AxReferenceKey(periodicPolicy.getKey(), "Decide")); + periodicDecideState.setTrigger(periodicEvent.getKey()); + final AxStateOutput perDec2Act = + new AxStateOutput(periodicDecideState.getKey(), periodicActState.getKey(), periodicEvent.getKey()); + periodicDecideState.getStateOutputs().put(perDec2Act.getKey().getLocalName(), perDec2Act); + periodicDecideState.setDefaultTask(periodicDecideTask.getKey()); + periodicDecideState.getTaskReferences().put(periodicDecideTask.getKey(), + new AxStateTaskReference(periodicDecideState.getKey(), periodicDecideTask.getKey(), + AxStateTaskOutputType.DIRECT, perDec2Act.getKey())); + + final AxState periodicEstablishState = new AxState(new AxReferenceKey(periodicPolicy.getKey(), "Establish")); + periodicEstablishState.setTrigger(periodicEvent.getKey()); + final AxStateOutput perEst2Dec = new AxStateOutput(periodicEstablishState.getKey(), + periodicDecideState.getKey(), periodicEvent.getKey()); + periodicEstablishState.getStateOutputs().put(perEst2Dec.getKey().getLocalName(), perEst2Dec); + periodicEstablishState.setDefaultTask(periodicEstablishTask.getKey()); + periodicEstablishState.getTaskReferences().put(periodicEstablishTask.getKey(), + new AxStateTaskReference(periodicEstablishState.getKey(), periodicEstablishTask.getKey(), + AxStateTaskOutputType.DIRECT, perEst2Dec.getKey())); + + final AxState periodicMatchState = new AxState(new AxReferenceKey(periodicPolicy.getKey(), "Match")); + periodicMatchState.setTrigger(periodicEvent.getKey()); + final AxStateOutput perMat2Est = + new AxStateOutput(periodicMatchState.getKey(), periodicEstablishState.getKey(), periodicEvent.getKey()); + periodicMatchState.getStateOutputs().put(perMat2Est.getKey().getLocalName(), perMat2Est); + periodicMatchState.setDefaultTask(periodicMatchTask.getKey()); + periodicMatchState.getTaskReferences().put(periodicMatchTask.getKey(), + new AxStateTaskReference(periodicMatchState.getKey(), periodicMatchTask.getKey(), + AxStateTaskOutputType.DIRECT, perMat2Est.getKey())); + + periodicPolicy.setFirstState(periodicMatchState.getKey().getLocalName()); + periodicPolicy.getStateMap().put(periodicMatchState.getKey().getLocalName(), periodicMatchState); + periodicPolicy.getStateMap().put(periodicEstablishState.getKey().getLocalName(), periodicEstablishState); + periodicPolicy.getStateMap().put(periodicDecideState.getKey().getLocalName(), periodicDecideState); + periodicPolicy.getStateMap().put(periodicActState.getKey().getLocalName(), periodicActState); + + final AxPolicies aadmPolicies = new AxPolicies(new AxArtifactKey("AADMPolicies", "0.0.1")); + aadmPolicies.getPolicyMap().put(aadmPolicy.getKey(), aadmPolicy); + aadmPolicies.getPolicyMap().put(vMMEPolicy.getKey(), vMMEPolicy); + aadmPolicies.getPolicyMap().put(sapcPolicy.getKey(), sapcPolicy); + aadmPolicies.getPolicyMap().put(periodicPolicy.getKey(), periodicPolicy); + + final AxKeyInformation keyInformation = new AxKeyInformation(new AxArtifactKey("AADMKeyInformation", "0.0.1")); + final AxPolicyModel aadmPolicyModel = new AxPolicyModel(new AxArtifactKey("AADMPolicyModel", "0.0.1")); + aadmPolicyModel.setPolicies(aadmPolicies); + aadmPolicyModel.setEvents(aadmEvents); + aadmPolicyModel.setTasks(aadmTasks); + aadmPolicyModel.setAlbums(aadmAlbums); + aadmPolicyModel.setSchemas(aadmContextSchemas); + aadmPolicyModel.setKeyInformation(keyInformation); + aadmPolicyModel.getKeyInformation().generateKeyInfo(aadmPolicyModel); + + final AxValidationResult result = aadmPolicyModel.validate(new AxValidationResult()); + if (!result.getValidationResult().equals(AxValidationResult.ValidationResult.VALID)) { + throw new ApexRuntimeException("model " + aadmPolicyModel.getID() + " is not valid" + result); + } + return aadmPolicyModel; + } +} diff --git a/examples/examples-aadm/src/main/java/org/onap/policy/apex/examples/aadm/model/AADMDomainModelSaver.java b/examples/examples-aadm/src/main/java/org/onap/policy/apex/examples/aadm/model/AADMDomainModelSaver.java new file mode 100644 index 000000000..618a9535a --- /dev/null +++ b/examples/examples-aadm/src/main/java/org/onap/policy/apex/examples/aadm/model/AADMDomainModelSaver.java @@ -0,0 +1,57 @@ +/*- + * ============LICENSE_START======================================================= + * Copyright (C) 2016-2018 Ericsson. 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. + * + * SPDX-License-Identifier: Apache-2.0 + * ============LICENSE_END========================================================= + */ + +package org.onap.policy.apex.examples.aadm.model; + +import org.onap.policy.apex.model.basicmodel.concepts.ApexException; +import org.onap.policy.apex.model.basicmodel.handling.ApexModelSaver; +import org.onap.policy.apex.model.policymodel.concepts.AxPolicyModel; + +/** + * This class saves sample domain models to disk in XML and JSON format. + * + * @author Liam Fallon (liam.fallon@ericsson.com) + */ +public final class AADMDomainModelSaver { + /** + * Private default constructor to prevent subclassing. + */ + private AADMDomainModelSaver() {} + + /** + * Write the AADM model to args[0]. + * + * @param args Not used + * @throws ApexException the apex exception + */ + public static void main(final String[] args) throws ApexException { + if (args.length != 1) { + System.err.println("usage: " + AADMDomainModelSaver.class.getCanonicalName() + " modelDirectory"); + return; + } + + // Save Java model + final AxPolicyModel aadmPolicyModel = new AADMDomainModelFactory().getAADMPolicyModel(); + final ApexModelSaver<AxPolicyModel> aadmModelSaver = + new ApexModelSaver<>(AxPolicyModel.class, aadmPolicyModel, args[0]); + aadmModelSaver.apexModelWriteJSON(); + aadmModelSaver.apexModelWriteXML(); + } +} diff --git a/examples/examples-aadm/src/main/java/org/onap/policy/apex/examples/aadm/model/package-info.java b/examples/examples-aadm/src/main/java/org/onap/policy/apex/examples/aadm/model/package-info.java new file mode 100644 index 000000000..659154d45 --- /dev/null +++ b/examples/examples-aadm/src/main/java/org/onap/policy/apex/examples/aadm/model/package-info.java @@ -0,0 +1,27 @@ +/*- + * ============LICENSE_START======================================================= + * Copyright (C) 2016-2018 Ericsson. 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. + * + * SPDX-License-Identifier: Apache-2.0 + * ============LICENSE_END========================================================= + */ + +/** + * Provides Java generation of the AADM model. + * + * @author Liam Fallon (liam.fallon@ericsson.com) + */ + +package org.onap.policy.apex.examples.aadm.model; diff --git a/examples/examples-aadm/src/main/java/org/onap/policy/apex/examples/aadm/package-info.java b/examples/examples-aadm/src/main/java/org/onap/policy/apex/examples/aadm/package-info.java new file mode 100644 index 000000000..90198c254 --- /dev/null +++ b/examples/examples-aadm/src/main/java/org/onap/policy/apex/examples/aadm/package-info.java @@ -0,0 +1,27 @@ +/*- + * ============LICENSE_START======================================================= + * Copyright (C) 2016-2018 Ericsson. 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. + * + * SPDX-License-Identifier: Apache-2.0 + * ============LICENSE_END========================================================= + */ + +/** + * Provides the policy model and supporting Java classes for the AADM domain. + * + * @author Liam Fallon (liam.fallon@ericsson.com) + */ + +package org.onap.policy.apex.examples.aadm; diff --git a/examples/examples-aadm/src/main/resources/examples/events/AADM/AADMTestEvent.xml b/examples/examples-aadm/src/main/resources/examples/events/AADM/AADMTestEvent.xml new file mode 100644 index 000000000..3ce3246d0 --- /dev/null +++ b/examples/examples-aadm/src/main/resources/examples/events/AADM/AADMTestEvent.xml @@ -0,0 +1,108 @@ +<?xml version="1.0" encoding="UTF-8"?> +<!-- + ============LICENSE_START======================================================= + Copyright (C) 2016-2018 Ericsson. 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. + + SPDX-License-Identifier: Apache-2.0 + ============LICENSE_END========================================================= +--> + +<xmlApexEvent xmlns="http://www.ericsson.com/apexevent"> + <name>AADMEvent</name> + <version>0.0.1</version> + <nameSpace>org.onap.policy.apex.examples.aadm.events</nameSpace> + <source>CompaA</source> + <target>apex</target> + <data> + <key>IMSI</key> + <value>27201872253157</value> + </data> + <data> + <key>ENODEB_ID</key> + <value>10000</value> + </data> + <data> + <key>IMSI_IP</key> + <value>111.222.333.444</value> + </data> + <data> + <key>NW_IP</key> + <value>THIS IS NOT AN IP ADDRESS</value> + </data> + <data> + <key>DoS</key> + <value>true</value> + </data> + <data> + <key>PROBE_ON</key> + <value>false</value> + </data> + <data> + <key>TCP_ON</key> + <value>false</value> + </data> + <data> + <key>SGW_IP_ADDRESS</key> + <value>10.0.0.2</value> + </data> + <data> + <key>UE_IP_ADDRESS</key> + <value>10.0.0.4</value> + </data> + <data> + <key>NUM_SUBSCRIBERS</key> + <value>101</value> + </data> + <data> + <key>ACTTASK</key> + <value /> + </data> + <data> + <key>APPLICATION</key> + <value /> + </data> + <data> + <key>ATTACH_COUNT</key> + <value>0</value> + </data> + <data> + <key>AVG_SUBSCRIBER_ATTACH</key> + <value>0</value> + </data> + <data> + <key>SERVICE_REQUEST_COUNT</key> + <value>99</value> + </data> + <data> + <key>AVG_SUBSCRIBER_SERVICE_REQUEST</key> + <value>101.0</value> + </data> + <data> + <key>TCP_UE_SIDE_AVG_THROUGHPUT</key> + <value>0</value> + </data> + <data> + <key>TCP_UE_SIDE_MEDIAN_RTT_TX_TO_RX</key> + <value>0</value> + </data> + <data> + <key>http_host_class</key> + <value /> + </data> + <data> + <key>protocol_group</key> + <value /> + </data> +</xmlApexEvent> diff --git a/examples/examples-aadm/src/main/resources/examples/events/AADM/AADMTestEvent0.json b/examples/examples-aadm/src/main/resources/examples/events/AADM/AADMTestEvent0.json new file mode 100644 index 000000000..64d34fcf9 --- /dev/null +++ b/examples/examples-aadm/src/main/resources/examples/events/AADM/AADMTestEvent0.json @@ -0,0 +1,27 @@ +{ + "nameSpace": "org.onap.policy.apex.examples.aadm.events", + "name": "AADMEvent", + "version": "0.0.1", + "source": "CompaA", + "target": "apex", + "IMSI": 123456, + "IMSI_IP": "101.111.121.131", + "ENODEB_ID": 123, + "SERVICE_REQUEST_COUNT": 99, + "AVG_SUBSCRIBER_SERVICE_REQUEST": 101.0, + "UE_IP_ADDRESS": "101.111.121.131", + "NUM_SUBSCRIBERS": 101, + "ACTTASK": "", + "APPLICATION": "", + "ATTACH_COUNT": 0, + "AVG_SUBSCRIBER_ATTACH": 0, + "DoS": false, + "NW_IP": "", + "PROBE_ON": false, + "SGW_IP_ADDRESS": "", + "TCP_ON": false, + "TCP_UE_SIDE_AVG_THROUGHPUT": 0, + "TCP_UE_SIDE_MEDIAN_RTT_TX_TO_RX": 0, + "http_host_class": "", + "protocol_group": "" +} diff --git a/examples/examples-aadm/src/main/resources/examples/events/AADM/AADMTestEvent1.json b/examples/examples-aadm/src/main/resources/examples/events/AADM/AADMTestEvent1.json new file mode 100644 index 000000000..b525e5f2e --- /dev/null +++ b/examples/examples-aadm/src/main/resources/examples/events/AADM/AADMTestEvent1.json @@ -0,0 +1,27 @@ +{ + "nameSpace": "org.onap.policy.apex.examples.aadm.events", + "name": "AADMEvent", + "version": "0.0.1", + "source": "CompaA", + "target": "apex", + "IMSI": 123456, + "IMSI_IP": "101.111.121.131", + "ENODEB_ID": 123, + "SERVICE_REQUEST_COUNT": 101, + "AVG_SUBSCRIBER_SERVICE_REQUEST": 99.0, + "UE_IP_ADDRESS": "101.111.121.131", + "NUM_SUBSCRIBERS": 101, + "TCP_UE_SIDE_AVG_THROUGHPUT": 101.0, + "ACTTASK": "", + "APPLICATION": "", + "ATTACH_COUNT": 0, + "AVG_SUBSCRIBER_ATTACH": 0, + "DoS": false, + "NW_IP": "", + "PROBE_ON": false, + "SGW_IP_ADDRESS": "", + "TCP_ON": false, + "TCP_UE_SIDE_MEDIAN_RTT_TX_TO_RX": 0, + "http_host_class": "", + "protocol_group": "" +} diff --git a/examples/examples-aadm/src/main/resources/examples/events/AADM/AADMTestEvent2.json b/examples/examples-aadm/src/main/resources/examples/events/AADM/AADMTestEvent2.json new file mode 100644 index 000000000..893a19675 --- /dev/null +++ b/examples/examples-aadm/src/main/resources/examples/events/AADM/AADMTestEvent2.json @@ -0,0 +1,27 @@ +{ + "nameSpace": "org.onap.policy.apex.examples.aadm.events", + "name": "AADMEvent", + "version": "0.0.1", + "source": "CompaA", + "target": "apex", + "IMSI": 123456, + "IMSI_IP": "101.111.121.131", + "ENODEB_ID": 123, + "SERVICE_REQUEST_COUNT": 99, + "AVG_SUBSCRIBER_SERVICE_REQUEST": 101.0, + "UE_IP_ADDRESS": "101.111.121.131", + "NUM_SUBSCRIBERS": 99, + "ACTTASK": "", + "APPLICATION": "", + "ATTACH_COUNT": 0, + "AVG_SUBSCRIBER_ATTACH": 0, + "DoS": false, + "NW_IP": "", + "PROBE_ON": false, + "SGW_IP_ADDRESS": "", + "TCP_ON": false, + "TCP_UE_SIDE_AVG_THROUGHPUT": 0, + "TCP_UE_SIDE_MEDIAN_RTT_TX_TO_RX": 0, + "http_host_class": "", + "protocol_group": "" +} diff --git a/examples/examples-aadm/src/main/resources/examples/events/AADM/AADMTestEvent3.json b/examples/examples-aadm/src/main/resources/examples/events/AADM/AADMTestEvent3.json new file mode 100644 index 000000000..dd8e0d549 --- /dev/null +++ b/examples/examples-aadm/src/main/resources/examples/events/AADM/AADMTestEvent3.json @@ -0,0 +1,27 @@ +{ + "nameSpace": "org.onap.policy.apex.examples.aadm.events", + "name": "AADMEvent", + "version": "0.0.1", + "source": "CompaA", + "target": "apex", + "IMSI": 123456, + "IMSI_IP": "101.111.121.131", + "ENODEB_ID": 123, + "TCP_UE_SIDE_AVG_THROUGHPUT": 101.0, + "ACTTASK": "", + "APPLICATION": "", + "ATTACH_COUNT": 0, + "AVG_SUBSCRIBER_ATTACH": 0, + "AVG_SUBSCRIBER_SERVICE_REQUEST": 0.0, + "DoS": false, + "NUM_SUBSCRIBERS": 0, + "NW_IP": "", + "PROBE_ON": false, + "SERVICE_REQUEST_COUNT": 0, + "SGW_IP_ADDRESS": "", + "TCP_ON": false, + "TCP_UE_SIDE_MEDIAN_RTT_TX_TO_RX": 0, + "UE_IP_ADDRESS": "", + "http_host_class": "", + "protocol_group": "" +} diff --git a/examples/examples-aadm/src/main/resources/examples/events/AADM/AADMTestEvent4.json b/examples/examples-aadm/src/main/resources/examples/events/AADM/AADMTestEvent4.json new file mode 100644 index 000000000..dca754500 --- /dev/null +++ b/examples/examples-aadm/src/main/resources/examples/events/AADM/AADMTestEvent4.json @@ -0,0 +1,28 @@ +{ + "nameSpace": "org.onap.policy.apex.examples.aadm.events", + "name": "AADMEvent", + "version": "0.0.1", + "source": "CompaA", + "target": "apex", + "IMSI": 123456, + "IMSI_IP": "101.111.121.131", + "ENODEB_ID": 123, + "SERVICE_REQUEST_COUNT": 99, + "AVG_SUBSCRIBER_SERVICE_REQUEST": 101.0, + "UE_IP_ADDRESS": "101.111.121.131", + "NUM_SUBSCRIBERS": 101, + "ACTTASK": "", + "APPLICATION": "", + "ATTACH_COUNT": 0, + "AVG_SUBSCRIBER_ATTACH": 0, + "AVG_SUBSCRIBER_SERVICE_REQUEST": 0.0, + "DoS": false, + "NW_IP": "", + "PROBE_ON": false, + "SGW_IP_ADDRESS": "", + "TCP_ON": false, + "TCP_UE_SIDE_AVG_THROUGHPUT": 0, + "TCP_UE_SIDE_MEDIAN_RTT_TX_TO_RX": 0, + "http_host_class": "", + "protocol_group": "" +} diff --git a/examples/examples-aadm/src/main/resources/examples/events/AADM/AADMTestEvent5.json b/examples/examples-aadm/src/main/resources/examples/events/AADM/AADMTestEvent5.json new file mode 100644 index 000000000..a7676e12f --- /dev/null +++ b/examples/examples-aadm/src/main/resources/examples/events/AADM/AADMTestEvent5.json @@ -0,0 +1,27 @@ +{ + "nameSpace": "org.onap.policy.apex.examples.aadm.events", + "name": "AADMEvent", + "version": "0.0.1", + "source": "CompaA", + "target": "apex", + "IMSI": 123456, + "ENODEB_ID": 124, + "SERVICE_REQUEST_COUNT": 99, + "AVG_SUBSCRIBER_SERVICE_REQUEST": 101.0, + "UE_IP_ADDRESS": "101.111.121.131", + "NUM_SUBSCRIBERS": 101, + "ACTTASK": "", + "APPLICATION": "", + "ATTACH_COUNT": 0, + "AVG_SUBSCRIBER_ATTACH": 0, + "DoS": false, + "IMSI_IP": "", + "NW_IP": "", + "PROBE_ON": false, + "SGW_IP_ADDRESS": "", + "TCP_ON": false, + "TCP_UE_SIDE_AVG_THROUGHPUT": 0, + "TCP_UE_SIDE_MEDIAN_RTT_TX_TO_RX": 0, + "http_host_class": "", + "protocol_group": "" +} diff --git a/examples/examples-aadm/src/main/resources/examples/events/AADM/AADMTestEvent6.json b/examples/examples-aadm/src/main/resources/examples/events/AADM/AADMTestEvent6.json new file mode 100644 index 000000000..64d34fcf9 --- /dev/null +++ b/examples/examples-aadm/src/main/resources/examples/events/AADM/AADMTestEvent6.json @@ -0,0 +1,27 @@ +{ + "nameSpace": "org.onap.policy.apex.examples.aadm.events", + "name": "AADMEvent", + "version": "0.0.1", + "source": "CompaA", + "target": "apex", + "IMSI": 123456, + "IMSI_IP": "101.111.121.131", + "ENODEB_ID": 123, + "SERVICE_REQUEST_COUNT": 99, + "AVG_SUBSCRIBER_SERVICE_REQUEST": 101.0, + "UE_IP_ADDRESS": "101.111.121.131", + "NUM_SUBSCRIBERS": 101, + "ACTTASK": "", + "APPLICATION": "", + "ATTACH_COUNT": 0, + "AVG_SUBSCRIBER_ATTACH": 0, + "DoS": false, + "NW_IP": "", + "PROBE_ON": false, + "SGW_IP_ADDRESS": "", + "TCP_ON": false, + "TCP_UE_SIDE_AVG_THROUGHPUT": 0, + "TCP_UE_SIDE_MEDIAN_RTT_TX_TO_RX": 0, + "http_host_class": "", + "protocol_group": "" +} diff --git a/examples/examples-aadm/src/main/resources/examples/events/AADM/AADMTestEvent7.json b/examples/examples-aadm/src/main/resources/examples/events/AADM/AADMTestEvent7.json new file mode 100644 index 000000000..694b28f2a --- /dev/null +++ b/examples/examples-aadm/src/main/resources/examples/events/AADM/AADMTestEvent7.json @@ -0,0 +1,27 @@ +{ + "nameSpace": "org.onap.policy.apex.examples.aadm.events", + "name": "AADMEvent", + "version": "0.0.1", + "source": "CompaA", + "target": "apex", + "IMSI": 123456, + "ENODEB_ID": 123, + "SERVICE_REQUEST_COUNT": 99, + "UE_IP_ADDRESS": "101.111.121.131", + "ACTTASK": "", + "APPLICATION": "", + "ATTACH_COUNT": 0, + "AVG_SUBSCRIBER_ATTACH": 0, + "AVG_SUBSCRIBER_SERVICE_REQUEST": 0.0, + "DoS": false, + "IMSI_IP": "", + "NUM_SUBSCRIBERS": 0, + "NW_IP": "", + "PROBE_ON": false, + "SGW_IP_ADDRESS": "", + "TCP_ON": false, + "TCP_UE_SIDE_AVG_THROUGHPUT": 0, + "TCP_UE_SIDE_MEDIAN_RTT_TX_TO_RX": 0, + "http_host_class": "", + "protocol_group": "" +} diff --git a/examples/examples-aadm/src/main/resources/examples/events/AADM/AADMTestPeridociEvent.json b/examples/examples-aadm/src/main/resources/examples/events/AADM/AADMTestPeridociEvent.json new file mode 100644 index 000000000..6283293c9 --- /dev/null +++ b/examples/examples-aadm/src/main/resources/examples/events/AADM/AADMTestPeridociEvent.json @@ -0,0 +1,12 @@ +{ + "nameSpace": "org.onap.policy.apex.examples.aadm.events", + "name": "PeriodicEvent", + "version": "0.0.1", + "source": "apex", + "target": "apex", + "PERIODIC_EVENT_COUNT": 100, + "PERIODIC_DELAY": 1000, + "PERIODIC_FIRST_TIME": 1496828877, + "PERIODIC_CURRENT_TIME": 1496828908, + "PERIODIC_LAST_TIME": 1496828919 +}
\ No newline at end of file diff --git a/examples/examples-aadm/src/main/resources/org/onap/policy/apex/examples/aadm/model/mvel/AADMDoSProvenActTask_TaskLogic.mvel b/examples/examples-aadm/src/main/resources/org/onap/policy/apex/examples/aadm/model/mvel/AADMDoSProvenActTask_TaskLogic.mvel new file mode 100644 index 000000000..078841792 --- /dev/null +++ b/examples/examples-aadm/src/main/resources/org/onap/policy/apex/examples/aadm/model/mvel/AADMDoSProvenActTask_TaskLogic.mvel @@ -0,0 +1,80 @@ +/* + * ============LICENSE_START======================================================= + * Copyright (C) 2016-2018 Ericsson. 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. + * + * SPDX-License-Identifier: Apache-2.0 + * ============LICENSE_END========================================================= + */ +import org.onap.policy.apex.examples.aadm.concepts.ENodeBStatus; +import org.onap.policy.apex.examples.aadm.concepts.IMSIStatus; + +logger.debug(subject.id + ":" + subject.taskName + " execution logic"); +logger.debug(inFields); + +outFields["ACTTASK"] = "act"; +outFields["TRIGGER_SPEC"] = "XSTREAM_AADM_ACT_EVENT"; +outFields["MAJ_MIN_MAINT_VERSION"] = "0.0.1"; +outFields["PROBE_ON"] = true; +outFields["TCP_ON"] = false; +outFields["IMSI"] = inFields["IMSI"]; + +if (inFields["IMSI_IP"] != null) { + outFields["IMSI_IP"] = inFields["IMSI_IP"]; +} +else{ + outFields["IMSI_IP"] = inFields["UE_IP_ADDRESS"]; +} + +if (inFields["NW_IP"] != null) { + outFields["NW_IP"] = inFields["NW_IP"]; +} +else{ + outFields["NW_IP"] = inFields["SGW_IP_ADDRESS"]; +} + +IMSIStatus imsiStatus = getContextAlbum("IMSIStatusAlbum").get((String)inFields["IMSI"]); +logger.debug(imsiStatus); + +ENodeBStatus eNodeBStatus = getContextAlbum("ENodeBStatusAlbum").get(imsiStatus.getENodeBID()); +eNodeBStatus.setBeingProbed(false); + +leaveProbingOn = false; +for (ENodeBStatus enbStatus : getContextAlbum("ENodeBStatusAlbum").values) { + if (enbStatus.getBeingProbed()) { + leaveProbingOn = true; + } +} + +if (!leaveProbingOn) { + outFields["PROBE_ON"] = false; + outFields["TCP_ON"] = false; +} + +eNodeBStatus.decrementDOSCount(); +logger.debug(eNodeBStatus.getENodeB() + ": dosCount is " + eNodeBStatus.getDOSCount()); + +imsiStatus.setAnomalous(false); + +logger.debug("imsi: " + imsiStatus.getIMSI() + " anamalous " + imsiStatus.getAnomalous()); + +getContextAlbum("IMSIStatusAlbum") .put(imsiStatus.getIMSI(), imsiStatus); +getContextAlbum("ENodeBStatusAlbum").put(eNodeBStatus.getENodeB(), eNodeBStatus); + +outFields["THRESHOLD"] = 0; +outFields["PROFILE"] = ""; +outFields["VERSION"] = "0.0.1"; +outFields["BLACKLIST_ON"] = false; + +return true; diff --git a/examples/examples-aadm/src/main/resources/org/onap/policy/apex/examples/aadm/model/mvel/AADMDoSSuggestionActTask_TaskLogic.mvel b/examples/examples-aadm/src/main/resources/org/onap/policy/apex/examples/aadm/model/mvel/AADMDoSSuggestionActTask_TaskLogic.mvel new file mode 100644 index 000000000..d04f9425e --- /dev/null +++ b/examples/examples-aadm/src/main/resources/org/onap/policy/apex/examples/aadm/model/mvel/AADMDoSSuggestionActTask_TaskLogic.mvel @@ -0,0 +1,106 @@ +/* + * ============LICENSE_START======================================================= + * Copyright (C) 2016-2018 Ericsson. 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. + * + * SPDX-License-Identifier: Apache-2.0 + * ============LICENSE_END========================================================= + */ +import org.onap.policy.apex.examples.aadm.concepts.ENodeBStatus; +import org.onap.policy.apex.examples.aadm.concepts.IMSIStatus; + +logger.debug(subject.id + ":" + subject.taskName + " execution logic"); +logger.debug(inFields); + +outFields["ACTTASK"] = "probe"; +outFields["TRIGGER_SPEC"] = "XSTREAM_AADM_ACT_EVENT"; +outFields["MAJ_MIN_MAINT_VERSION"] = "0.0.1"; +outFields["IMSI"] = inFields["IMSI"]; + +if (inFields["IMSI_IP"] != null) { + outFields["IMSI_IP"] = inFields["IMSI_IP"]; +} +else { + outFields["IMSI_IP"] = inFields["UE_IP_ADDRESS"]; +} + +if (inFields["NW_IP"] != null) { + outFields["NW_IP"] = inFields["NW_IP"]; +} +else { + outFields["NW_IP"] = inFields["SGW_IP_ADDRESS"]; +} + +IMSIStatus imsiStatus = getContextAlbum("IMSIStatusAlbum").get((String)inFields["IMSI"]); +logger.debug(imsiStatus); + +ENodeBStatus eNodeBStatus = getContextAlbum("ENodeBStatusAlbum").get(imsiStatus.getENodeBID()); +logger.debug(eNodeBStatus); + +if (imsiStatus.getENodeBID() != null && !imsiStatus.getENodeBID().equals(inFields["ENODEB_ID"]) || inFields["AVG_SUBSCRIBER_SERVICE_REQUEST"] == null) { + // if user moved enodeB remove him from previous one + if (imsiStatus.getENodeBID() != null) { + eNodeBStatus.decrementDOSCount(); + } + + // if user became non anomalous return action + if (inFields["AVG_SUBSCRIBER_SERVICE_REQUEST"] == null) { + imsiStatus.setAnomalous(false); + outFields["ACTTASK"] = "remove_from_probe"; + + for (ENodeBStatus enbStatus : getContextAlbum("ENodeBStatusAlbum").values) { + if (enbStatus.getBeingProbed()) { + outFields["PROBE_ON"] = true; + outFields["TCP_ON"] = true; + return true; + } + } + + outFields["PROBE_ON"] = false; + outFields["TCP_ON"] = false; + + getContextAlbum("IMSIStatusAlbum").put(imsiStatus.getIMSI(), imsiStatus); + getContextAlbum("ENodeBStatusAlbum").put(eNodeBStatus.getENodeB(), eNodeBStatus); + + return true; + } +} + +imsiStatus.setAnomalous(true); +imsiStatus.setAnomolousTime(System.currentTimeMillis()); +imsiStatus.setENodeBID(inFields["ENODEB_ID"]); +getContextAlbum("IMSIStatusAlbum").put(imsiStatus.getIMSI(), imsiStatus); +logger.debug(imsiStatus.getENodeBID() + ": enodeb added to imsi ip added " + outFields["IMSI_IP"]); + +ENodeBStatus eNodeBStatus = getContextAlbum("ENodeBStatusAlbum").get(imsiStatus.getENodeBID()); +if (eNodeBStatus == null) { + eNodeBStatus = new ENodeBStatus(imsiStatus.getENodeBID()); + getContextAlbum("ENodeBStatusAlbum").put(eNodeBStatus.getENodeB(), eNodeBStatus); + logger.debug("new eNodeB added " + getContextAlbum("ENodeBStatusAlbum").get(imsiStatus.getENodeBID())); +} + +eNodeBStatus.incrementDOSCount(); +getContextAlbum("ENodeBStatusAlbum").put(eNodeBStatus.getENodeB(), eNodeBStatus); +logger.debug(eNodeBStatus.getENodeB() + ": dosCount incremented to " + eNodeBStatus.getDOSCount()); + +outFields["PROBE_ON"] = true; +outFields["TCP_ON"] = true; +outFields["THRESHOLD"] = 0; +outFields["PROFILE"] = ""; +outFields["VERSION"] = "0.0.1"; +outFields["BLACKLIST_ON"] = false; + +logger.debug("out here5"); + +return true; diff --git a/examples/examples-aadm/src/main/resources/org/onap/policy/apex/examples/aadm/model/mvel/AADMMatchTask_TaskLogic.mvel b/examples/examples-aadm/src/main/resources/org/onap/policy/apex/examples/aadm/model/mvel/AADMMatchTask_TaskLogic.mvel new file mode 100644 index 000000000..bb38034af --- /dev/null +++ b/examples/examples-aadm/src/main/resources/org/onap/policy/apex/examples/aadm/model/mvel/AADMMatchTask_TaskLogic.mvel @@ -0,0 +1,75 @@ +/* + * ============LICENSE_START======================================================= + * Copyright (C) 2016-2018 Ericsson. 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. + * + * SPDX-License-Identifier: Apache-2.0 + * ============LICENSE_END========================================================= + */ +import org.onap.policy.apex.examples.aadm.concepts.ENodeBStatus; +import org.onap.policy.apex.examples.aadm.concepts.IPAddressStatus; +import org.onap.policy.apex.examples.aadm.concepts.IMSIStatus; + +logger.debug(subject.id + ":" + subject.taskName + " execution logic"); +logger.debug(inFields); + +ipAddress = inFields["UE_IP_ADDRESS"]; +if (ipAddress == null ) { + ipAddress = inFields["IMSI_IP"]; + + if (ipAddress == null ) { + logger.debug("Incoming event must specify parameter UE_IP_ADDRESS or parameter IMSI_IP"); + return false; + } +} + +imsi = inFields["IMSI"]; +if (imsi == null ) { + logger.debug("Incoming event must specify parameter IMSI"); + return false; +} + +eNodeBID = inFields["ENODEB_ID"]; +if (eNodeBID == null ) { + logger.debug("Incoming event must specify parameter ENODEB_ID"); + return false; +} + +IPAddressStatus ipAddressStatus = getContextAlbum("IPAddressStatusAlbum").get(ipAddress); +if (ipAddressStatus == null) { + ipAddressStatus = new IPAddressStatus(ipAddress); + ipAddressStatus.setIMSI(imsi); + getContextAlbum("IPAddressStatusAlbum").put(ipAddressStatus.getIPAddress(), ipAddressStatus); + logger.debug("added new IP address " + getContextAlbum("IPAddressStatusAlbum").get(ipAddress)); +} +else { + logger.debug("found IP address " + ipAddressStatus); +} + +IMSIStatus imsiStatus = getContextAlbum("IMSIStatusAlbum").get((String)imsi); +if (imsiStatus == null) { + imsiStatus = new IMSIStatus(imsi); + imsiStatus.setENodeBID(eNodeBID); + getContextAlbum("IMSIStatusAlbum").put(imsiStatus.getIMSI(), imsiStatus); + logger.debug("added new IMSI " + imsi + " to IMSI status map") +} + +ENodeBStatus eNodeBStatus = getContextAlbum("ENodeBStatusAlbum").get((String)eNodeBID); +if (eNodeBStatus == null) { + eNodeBStatus = new ENodeBStatus(eNodeBID); + getContextAlbum("ENodeBStatusAlbum").put(eNodeBStatus.getENodeB(), eNodeBStatus); + logger.debug("added new ENodeB " + eNodeBID + " to ENodeB status map") +} + +return true; diff --git a/examples/examples-aadm/src/main/resources/org/onap/policy/apex/examples/aadm/model/mvel/AADMNoActTask_TaskLogic.mvel b/examples/examples-aadm/src/main/resources/org/onap/policy/apex/examples/aadm/model/mvel/AADMNoActTask_TaskLogic.mvel new file mode 100644 index 000000000..7107b940b --- /dev/null +++ b/examples/examples-aadm/src/main/resources/org/onap/policy/apex/examples/aadm/model/mvel/AADMNoActTask_TaskLogic.mvel @@ -0,0 +1,55 @@ +/* + * ============LICENSE_START======================================================= + * Copyright (C) 2016-2018 Ericsson. 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. + * + * SPDX-License-Identifier: Apache-2.0 + * ============LICENSE_END========================================================= + */ +logger.debug(subject.id + ":" + subject.taskName + " execution logic"); + +outFields["ACTTASK"] = "no"; +outFields["TRIGGER_SPEC"] = "XSTREAM_AADM_ACT_EVENT"; +outFields["MAJ_MIN_MAINT_VERSION"] = "0.0.1"; + +if (inFields["PROBE_ON"] != null) { + outFields["PROBE_ON"] = inFields["PROBE_ON"]; +} +else{ + outFields["PROBE_ON"] = false; +} + +if (inFields["TCP_ON"] != null) { + outFields["TCP_ON"] = inFields["TCP_ON"]; +} +else { + outFields["TCP_ON"] = false; +} + +outFields["IMSI"] = inFields["IMSI"]; +if (inFields["IMSI_IP"] != null) { + outFields["IMSI_IP"] = inFields["IMSI_IP"]; +} +else { + outFields["IMSI_IP"] = inFields["UE_IP_ADDRESS"]; +} + +if (inFields["NW_IP"] != null) { + outFields["NW_IP"] = inFields["NW_IP"]; +} +else{ + outFields["NW_IP"] = inFields["SGW_IP_ADDRESS"]; +} + +return true; diff --git a/examples/examples-aadm/src/main/resources/org/onap/policy/apex/examples/aadm/model/mvel/AADMPolicy_Act_TaskSelectionLogic.mvel b/examples/examples-aadm/src/main/resources/org/onap/policy/apex/examples/aadm/model/mvel/AADMPolicy_Act_TaskSelectionLogic.mvel new file mode 100644 index 000000000..2d0d45bdf --- /dev/null +++ b/examples/examples-aadm/src/main/resources/org/onap/policy/apex/examples/aadm/model/mvel/AADMPolicy_Act_TaskSelectionLogic.mvel @@ -0,0 +1,67 @@ +/* + * ============LICENSE_START======================================================= + * Copyright (C) 2016-2018 Ericsson. 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. + * + * SPDX-License-Identifier: Apache-2.0 + * ============LICENSE_END========================================================= + */ +import org.onap.policy.apex.examples.aadm.concepts.IMSIStatus; +import org.onap.policy.apex.examples.aadm.concepts.ENodeBStatus; + +logger.debug(subject.id + ":" + subject.stateName + " execution logic"); +logger.debug(inFields); + +logger.debug("inFields[SERVICE_REQUEST_COUNT]=" + inFields["SERVICE_REQUEST_COUNT"]); + +IMSIStatus imsiStatus = getContextAlbum("IMSIStatusAlbum").get((String)inFields["IMSI"]); + +if (imsiStatus.getBlockingCount() > 1) { + subject.getTaskKey("AADMNoActTask").copyTo(selectedTask); + logger.debug("user blacklisted permanently"); + return false; +} + +logger.debug("imsi: " + imsiStatus.getIMSI() + " anamalous " + imsiStatus.getAnomalous()); + +// check if this is second iteration +if (inFields["TCP_UE_SIDE_AVG_THROUGHPUT"] != null && inFields["TCP_UE_SIDE_AVG_THROUGHPUT"] > 100 && imsiStatus.getAnomalous()) { + subject.getTaskKey("AADMDoSProvenActTask").copyTo(selectedTask); + logger.debug("inside TCP_UE_SIDE_AVG_THROUGHPUT"); + return true; +} + +// Get the status of the ENodeB +ENodeBStatus eNodeBStatus = getContextAlbum("ENodeBStatusAlbum").get((String)inFields["ENODEB_ID"]); + +// check if this is first iteration and DoS +if (inFields["SERVICE_REQUEST_COUNT"] != null && + inFields["AVG_SUBSCRIBER_SERVICE_REQUEST"] != null && + inFields["SERVICE_REQUEST_COUNT"] > inFields["AVG_SUBSCRIBER_SERVICE_REQUEST"] && + eNodeBStatus != null && eNodeBStatus.getDOSCount() > 100 && + inFields["NUM_SUBSCRIBERS"] != null && inFields["NUM_SUBSCRIBERS"] > 100) { + logger.debug("inside NUM_SUBSCRIBERS"); + subject.getTaskKey("AADMDoSProvenActTask").copyTo(selectedTask); + return true; +} + +// check if this is first iteration and request probe +if (inFields["UE_IP_ADDRESS"] != null) { + logger.debug("inside UE_IP_ADDRESS"); + subject.getTaskKey("AADMDoSSuggestionActTask").copyTo(selectedTask); + return true; +} + +subject.defaultTaskKey.copyTo(selectedTask); +return true; diff --git a/examples/examples-aadm/src/main/resources/org/onap/policy/apex/examples/aadm/model/mvel/Default_TaskLogic.mvel b/examples/examples-aadm/src/main/resources/org/onap/policy/apex/examples/aadm/model/mvel/Default_TaskLogic.mvel new file mode 100644 index 000000000..69146d19c --- /dev/null +++ b/examples/examples-aadm/src/main/resources/org/onap/policy/apex/examples/aadm/model/mvel/Default_TaskLogic.mvel @@ -0,0 +1,23 @@ +/* + * ============LICENSE_START======================================================= + * Copyright (C) 2016-2018 Ericsson. 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. + * + * SPDX-License-Identifier: Apache-2.0 + * ============LICENSE_END========================================================= + */ +logger.debug(subject.id + ":" + subject.taskName + " execution logic"); +logger.debug(inFields); +logger.debug(outFields); +return true; diff --git a/examples/examples-aadm/src/main/resources/org/onap/policy/apex/examples/aadm/model/mvel/Default_TaskSelectionLogic.mvel b/examples/examples-aadm/src/main/resources/org/onap/policy/apex/examples/aadm/model/mvel/Default_TaskSelectionLogic.mvel new file mode 100644 index 000000000..20fe626cd --- /dev/null +++ b/examples/examples-aadm/src/main/resources/org/onap/policy/apex/examples/aadm/model/mvel/Default_TaskSelectionLogic.mvel @@ -0,0 +1,23 @@ +/* + * ============LICENSE_START======================================================= + * Copyright (C) 2016-2018 Ericsson. 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. + * + * SPDX-License-Identifier: Apache-2.0 + * ============LICENSE_END========================================================= + */ +logger.debug(subject.id + ":" + subject.stateName); +subject.defaultTaskKey.copyTo(selectedTask) +logger.debug(subject.id + ":" + subject.stateName) + ", using default task"; +return true; diff --git a/examples/examples-aadm/src/main/resources/org/onap/policy/apex/examples/aadm/model/mvel/PeriodicActTask_TaskLogic.mvel b/examples/examples-aadm/src/main/resources/org/onap/policy/apex/examples/aadm/model/mvel/PeriodicActTask_TaskLogic.mvel new file mode 100644 index 000000000..115ac5477 --- /dev/null +++ b/examples/examples-aadm/src/main/resources/org/onap/policy/apex/examples/aadm/model/mvel/PeriodicActTask_TaskLogic.mvel @@ -0,0 +1,40 @@ +/* + * ============LICENSE_START======================================================= + * Copyright (C) 2016-2018 Ericsson. 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. + * + * SPDX-License-Identifier: Apache-2.0 + * ============LICENSE_END========================================================= + */ +import org.onap.policy.apex.examples.aadm.concepts.IMSIStatus; + +logger.debug(subject.id + ":" + subject.taskName + " execution logic"); +logger.debug(inFields); + +for (IMSIStatus imsiStatus : getContextAlbum("IMSIStatusAlbum").values()) { + if ((System.currentTimeMillis() - imsiStatus.getBlacklistedTime()) > 180000) { + imsiStatus.setBlacklistedTime(0); + getContextAlbum("IMSIStatusAlbum").put(imsiStatus.getIMSI(), imsiStatus); + } +} + +outFields["IMSI"] = 0; +outFields["PROFILE"] = "ServiceA"; +outFields["BLACKLIST_ON"] = false; +outFields["PROBE_ON"] = false; +outFields["TCP_ON"] = false; +outFields["NW_IP"] = "0.0.0.0"; +outFields["IMSI_IP"] = "0.0.0.0"; + +return true; diff --git a/examples/examples-aadm/src/main/resources/org/onap/policy/apex/examples/aadm/model/mvel/SAPCActTask_TaskLogic.mvel b/examples/examples-aadm/src/main/resources/org/onap/policy/apex/examples/aadm/model/mvel/SAPCActTask_TaskLogic.mvel new file mode 100644 index 000000000..7ceaa2abe --- /dev/null +++ b/examples/examples-aadm/src/main/resources/org/onap/policy/apex/examples/aadm/model/mvel/SAPCActTask_TaskLogic.mvel @@ -0,0 +1,79 @@ +/* + * ============LICENSE_START======================================================= + * Copyright (C) 2016-2018 Ericsson. 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. + * + * SPDX-License-Identifier: Apache-2.0 + * ============LICENSE_END========================================================= + */ +import org.onap.policy.apex.examples.aadm.concepts.IMSIStatus; + +logger.debug(subject.id + ":" + subject.taskName + " execution logic"); +logger.debug(inFields); + +if (inFields["IMSI"] == null) { + outFields["IMSI"] = 0; +} +else { + outFields["IMSI"] = inFields["IMSI"]; +} + +if (outFields["IMSI"] == 0 && inFields["IMSI_IP"] != null && inFields["IMSI_IP"].equals("0")) { + // no action arrived + outFields["IMSI"] = 0; + outFields["PROFILE"] = "none"; + outFields["BLACKLIST_ON"] = false; + outFields["PROBE_ON"] = false; + return true; +} + +IMSIStatus imsiStatus = getContextAlbum("IMSIStatusAlbum").get((String)inFields["IMSI"]); +logger.debug(imsiStatus); + +if (imsiStatus.getBlockingCount() > 1) { + outFields["IMSI"] = 0; + outFields["PROFILE"] = "none"; + outFields["BLACKLIST_ON"] = false; + outFields["PROBE_ON"] = false; + + return true; +} + +if (imsiStatus.getBlockingCount() > 0 && imsiStatus.getBlacklistedTime() != 0) { + outFields["IMSI"] = 0; + outFields["PROFILE"] = "none"; + outFields["BLACKLIST_ON"] = false; + outFields["PROBE_ON"] = false; + + return true; +} + +imsiStatus.incrementBlockingCount(); +imsiStatus.setBlacklistedTime(System.currentTimeMillis()); + +logger.debug("Bocking count for IMSI: " + imsiStatus.getIMSI() + " is: " + imsiStatus.getBlockingCount()); +getContextAlbum("IMSIStatusAlbum").put(imsiStatus.getIMSI(), imsiStatus); + +outFields["PROFILE"] = "ServiceA"; +outFields["BLACKLIST_ON"] = true; +outFields["PROBE_ON"] = false; + +if (imsiStatus.getBlockingCount() > 1) { + logger.debug("POLICY SAPCPolicy - blacklisting imsi: " + outFields["IMSI"] + " permanently"); +} +else { + logger.debug("POLICY SAPCPolicy - blacklisting imsi: " + outFields["IMSI"] + " temporary for 120000 ms"); +} + +return true; diff --git a/examples/examples-aadm/src/main/resources/org/onap/policy/apex/examples/aadm/model/mvel/SAPCMatchTask_TaskLogic.mvel b/examples/examples-aadm/src/main/resources/org/onap/policy/apex/examples/aadm/model/mvel/SAPCMatchTask_TaskLogic.mvel new file mode 100644 index 000000000..1de8b190c --- /dev/null +++ b/examples/examples-aadm/src/main/resources/org/onap/policy/apex/examples/aadm/model/mvel/SAPCMatchTask_TaskLogic.mvel @@ -0,0 +1,52 @@ +/* + * ============LICENSE_START======================================================= + * Copyright (C) 2016-2018 Ericsson. 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. + * + * SPDX-License-Identifier: Apache-2.0 + * ============LICENSE_END========================================================= + */ +logger.debug(subject.id + ":" + subject.taskName + " execution logic"); +logger.debug(inFields); + +if (inFields["ACTTASK"] != null && inFields["ACTTASK"].equals("no")) { + outFields["IMSI"] = 0; + outFields["IMSI_IP"] = "0"; + return true; +} + +if (inFields["PROBE_ON"] != null) { + outFields["PROBE_ON"] = inFields["PROBE_ON"]; +} +else{ + outFields["PROBE_ON"] = false; +} + +if (inFields["TCP_ON"] != null) { + outFields["TCP_ON"] = inFields["TCP_ON"]; +} +else{ + outFields["TCP_ON"] = false; +} + +outFields["IMSI"] = inFields["IMSI"]; +if (inFields["IMSI_IP"] != null) { + outFields["IMSI_IP"] = inFields["IMSI_IP"]; +} + +if (inFields["NW_IP"] != null) { + outFields["NW_IP"] = inFields["NW_IP"]; +} + +return true; diff --git a/examples/examples-aadm/src/main/resources/org/onap/policy/apex/examples/aadm/model/mvel/VMMEActTask_TaskLogic.mvel b/examples/examples-aadm/src/main/resources/org/onap/policy/apex/examples/aadm/model/mvel/VMMEActTask_TaskLogic.mvel new file mode 100644 index 000000000..db1abdfe9 --- /dev/null +++ b/examples/examples-aadm/src/main/resources/org/onap/policy/apex/examples/aadm/model/mvel/VMMEActTask_TaskLogic.mvel @@ -0,0 +1,44 @@ +/* + * ============LICENSE_START======================================================= + * Copyright (C) 2016-2018 Ericsson. 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. + * + * SPDX-License-Identifier: Apache-2.0 + * ============LICENSE_END========================================================= + */ +logger.debug(subject.id + ":" + subject.taskName + " execution logic"); +logger.debug(inFields); + +outFields["TRIGGER_SPEC"] = "vMMEThresholdEvent"; +outFields["MAJ_MIN_MAINT_VERSION"] = "0.0.1"; + +if (outFields["IMSI"] == null) { + outFields["IMSI"] = 0; +} + +if (outFields["ENODEB_ID"] == null) { + outFields["ENODEB_ID"] = 0; +} + +if (outFields["IMSI_IP"] == null) { + outFields["IMSI_IP"] = ""; +} + +if (outFields["NW_IP"] == null) { + outFields["NW_IP"] = ""; +} + +outFields["PROFILE"] = "ServiceA"; +outFields["THRESHOLD"] = 20; +return true; diff --git a/examples/examples-aadm/src/main/resources/org/onap/policy/apex/examples/aadm/model/mvel/VMMEMatchTask_TaskLogic.mvel b/examples/examples-aadm/src/main/resources/org/onap/policy/apex/examples/aadm/model/mvel/VMMEMatchTask_TaskLogic.mvel new file mode 100644 index 000000000..33dbd4cd0 --- /dev/null +++ b/examples/examples-aadm/src/main/resources/org/onap/policy/apex/examples/aadm/model/mvel/VMMEMatchTask_TaskLogic.mvel @@ -0,0 +1,47 @@ +/* + * ============LICENSE_START======================================================= + * Copyright (C) 2016-2018 Ericsson. 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. + * + * SPDX-License-Identifier: Apache-2.0 + * ============LICENSE_END========================================================= + */ +logger.debug(subject.id + ":" + subject.taskName + " execution logic"); +logger.debug(inFields); + +if (inFields["PROBE_ON"] != null) { + outFields["PROBE_ON"] = inFields["PROBE_ON"]; +} +else{ + outFields["PROBE_ON"] = false; +} + +if (inFields["TCP_ON"] != null) { + outFields["TCP_ON"] = inFields["TCP_ON"]; +} +else{ + outFields["TCP_ON"] = false; +} + +outFields["IMSI"] = inFields["IMSI"]; +if (inFields["IMSI_IP"] != null) { + outFields["IMSI_IP"] = inFields["IMSI_IP"]; +} + +if (inFields["NW_IP"] != null) { + outFields["NW_IP"] = inFields["NW_IP"]; +} +outFields["VERSION"] = inFields.getkey().getVersion(); + +return true; diff --git a/examples/examples-aadm/src/test/java/org/onap/policy/apex/examples/aadm/TestAADMDBWrite.java b/examples/examples-aadm/src/test/java/org/onap/policy/apex/examples/aadm/TestAADMDBWrite.java new file mode 100644 index 000000000..02e6f9179 --- /dev/null +++ b/examples/examples-aadm/src/test/java/org/onap/policy/apex/examples/aadm/TestAADMDBWrite.java @@ -0,0 +1,60 @@ +/*- + * ============LICENSE_START======================================================= + * Copyright (C) 2016-2018 Ericsson. 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. + * + * SPDX-License-Identifier: Apache-2.0 + * ============LICENSE_END========================================================= + */ + +package org.onap.policy.apex.examples.aadm; + +import java.io.File; +import java.sql.Connection; +import java.sql.DriverManager; + +import org.junit.After; +import org.junit.Before; +import org.junit.Test; +import org.onap.policy.apex.model.basicmodel.dao.DAOParameters; +import org.onap.policy.apex.model.basicmodel.test.TestApexModel; +import org.onap.policy.apex.model.policymodel.concepts.AxPolicyModel; + +public class TestAADMDBWrite { + private Connection connection; + TestApexModel<AxPolicyModel> testApexModel; + + @Before + public void setup() throws Exception { + Class.forName("org.apache.derby.jdbc.EmbeddedDriver").newInstance(); + connection = DriverManager.getConnection("jdbc:derby:memory:apex_test;create=true"); + + testApexModel = new TestApexModel<AxPolicyModel>(AxPolicyModel.class, new TestAADMModelCreator()); + } + + @After + public void teardown() throws Exception { + connection.close(); + new File("derby.log").delete(); + } + + @Test + public void testModelWriteReadJPA() throws Exception { + final DAOParameters daoParameters = new DAOParameters(); + daoParameters.setPluginClass("org.onap.policy.apex.model.basicmodel.dao.impl.DefaultApexDao"); + daoParameters.setPersistenceUnit("AADMModelTest"); + + testApexModel.testApexModelWriteReadJPA(daoParameters); + } +} diff --git a/examples/examples-aadm/src/test/java/org/onap/policy/apex/examples/aadm/TestAADMModel.java b/examples/examples-aadm/src/test/java/org/onap/policy/apex/examples/aadm/TestAADMModel.java new file mode 100644 index 000000000..2c62c4994 --- /dev/null +++ b/examples/examples-aadm/src/test/java/org/onap/policy/apex/examples/aadm/TestAADMModel.java @@ -0,0 +1,81 @@ +/*- + * ============LICENSE_START======================================================= + * Copyright (C) 2016-2018 Ericsson. 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. + * + * SPDX-License-Identifier: Apache-2.0 + * ============LICENSE_END========================================================= + */ + +package org.onap.policy.apex.examples.aadm; + +import static org.junit.Assert.assertTrue; + +import java.io.File; +import java.sql.Connection; +import java.sql.DriverManager; + +import org.junit.After; +import org.junit.Before; +import org.junit.Test; +import org.onap.policy.apex.model.basicmodel.concepts.AxValidationResult; +import org.onap.policy.apex.model.basicmodel.dao.DAOParameters; +import org.onap.policy.apex.model.basicmodel.test.TestApexModel; +import org.onap.policy.apex.model.policymodel.concepts.AxPolicyModel; + +public class TestAADMModel { + private Connection connection; + TestApexModel<AxPolicyModel> testApexModel; + + @Before + public void setup() throws Exception { + Class.forName("org.apache.derby.jdbc.EmbeddedDriver").newInstance(); + connection = DriverManager.getConnection("jdbc:derby:memory:apex_test;create=true"); + + testApexModel = new TestApexModel<AxPolicyModel>(AxPolicyModel.class, new TestAADMModelCreator()); + } + + @After + public void teardown() throws Exception { + connection.close(); + new File("derby.log").delete(); + } + + @Test + public void testModelValid() throws Exception { + final AxValidationResult result = testApexModel.testApexModelValid(); + assertTrue(result.toString().equals(VALID_MODEL_STRING)); + } + + @Test + public void testModelWriteReadXML() throws Exception { + testApexModel.testApexModelWriteReadXML(); + } + + @Test + public void testModelWriteReadJSON() throws Exception { + testApexModel.testApexModelWriteReadJSON(); + } + + @Test + public void testModelWriteReadJPA() throws Exception { + final DAOParameters daoParameters = new DAOParameters(); + daoParameters.setPluginClass("org.onap.policy.apex.model.basicmodel.dao.impl.DefaultApexDao"); + daoParameters.setPersistenceUnit("AADMModelTest"); + + testApexModel.testApexModelWriteReadJPA(daoParameters); + } + + private static final String VALID_MODEL_STRING = "***validation of model successful***"; +} diff --git a/examples/examples-aadm/src/test/java/org/onap/policy/apex/examples/aadm/TestAADMModelCreator.java b/examples/examples-aadm/src/test/java/org/onap/policy/apex/examples/aadm/TestAADMModelCreator.java new file mode 100644 index 000000000..9aa2095c7 --- /dev/null +++ b/examples/examples-aadm/src/test/java/org/onap/policy/apex/examples/aadm/TestAADMModelCreator.java @@ -0,0 +1,56 @@ +/*- + * ============LICENSE_START======================================================= + * Copyright (C) 2016-2018 Ericsson. 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. + * + * SPDX-License-Identifier: Apache-2.0 + * ============LICENSE_END========================================================= + */ + +package org.onap.policy.apex.examples.aadm; + +import org.onap.policy.apex.examples.aadm.model.AADMDomainModelFactory; +import org.onap.policy.apex.model.basicmodel.test.TestApexModelCreator; +import org.onap.policy.apex.model.policymodel.concepts.AxPolicyModel; + +/** + * @author Liam Fallon (liam.fallon@ericsson.com) + */ +public class TestAADMModelCreator implements TestApexModelCreator<AxPolicyModel> { + + @Override + public AxPolicyModel getModel() { + return new AADMDomainModelFactory().getAADMPolicyModel(); + } + + @Override + public AxPolicyModel getMalstructuredModel() { + return null; + } + + @Override + public AxPolicyModel getObservationModel() { + return null; + } + + @Override + public AxPolicyModel getWarningModel() { + return getModel(); + } + + @Override + public AxPolicyModel getInvalidModel() { + return null; + } +} diff --git a/examples/examples-aadm/src/test/java/org/onap/policy/apex/examples/aadm/TestAADMUseCase.java b/examples/examples-aadm/src/test/java/org/onap/policy/apex/examples/aadm/TestAADMUseCase.java new file mode 100644 index 000000000..58b1800ba --- /dev/null +++ b/examples/examples-aadm/src/test/java/org/onap/policy/apex/examples/aadm/TestAADMUseCase.java @@ -0,0 +1,412 @@ +/*- + * ============LICENSE_START======================================================= + * Copyright (C) 2016-2018 Ericsson. 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. + * + * SPDX-License-Identifier: Apache-2.0 + * ============LICENSE_END========================================================= + */ + +package org.onap.policy.apex.examples.aadm; + +import static org.junit.Assert.assertEquals; +import static org.junit.Assert.assertNotNull; +import static org.junit.Assert.assertTrue; + +import java.io.IOException; + +import org.junit.After; +import org.junit.Before; +import org.junit.Test; +import org.onap.policy.apex.context.ContextAlbum; +import org.onap.policy.apex.core.engine.EngineParameters; +import org.onap.policy.apex.core.engine.engine.impl.ApexEngineFactory; +import org.onap.policy.apex.core.engine.engine.impl.ApexEngineImpl; +import org.onap.policy.apex.core.engine.event.EnEvent; +import org.onap.policy.apex.examples.aadm.concepts.ENodeBStatus; +import org.onap.policy.apex.examples.aadm.model.AADMDomainModelFactory; +import org.onap.policy.apex.model.basicmodel.concepts.ApexException; +import org.onap.policy.apex.model.basicmodel.concepts.AxArtifactKey; +import org.onap.policy.apex.model.eventmodel.concepts.AxEvent; +import org.onap.policy.apex.model.policymodel.concepts.AxPolicyModel; +import org.onap.policy.apex.plugins.executor.mvel.MVELExecutorParameters; +import org.slf4j.ext.XLogger; +import org.slf4j.ext.XLoggerFactory; + +/** + * User: Sergey Sachkov Date: 13/10/15 + */ +public class TestAADMUseCase { + private static final XLogger logger = XLoggerFactory.getXLogger(TestAADMUseCase.class); + + /** + * Test aadm use case setup. + */ + @Before + public void testAADMUseCaseSetup() {} + + /** + * Test aadm case. + * + * @throws ApexException the apex exception + * @throws InterruptedException the interrupted exception + * @throws IOException Signals that an I/O exception has occurred. + */ + @Test + public void testAADMCase() throws ApexException, InterruptedException, IOException { + final AxPolicyModel apexPolicyModel = new AADMDomainModelFactory().getAADMPolicyModel(); + assertNotNull(apexPolicyModel); + final AxArtifactKey key = new AxArtifactKey("AADMApexEngine", "0.0.1"); + + final EngineParameters parameters = new EngineParameters(); + parameters.getExecutorParameterMap().put("MVEL", new MVELExecutorParameters()); + + final ApexEngineImpl apexEngine = (ApexEngineImpl) new ApexEngineFactory().createApexEngine(key); + final TestApexActionListener listener = new TestApexActionListener("Test"); + apexEngine.addEventListener("listener", listener); + apexEngine.updateModel(apexPolicyModel); + apexEngine.start(); + + final AxEvent axEvent = getTriggerEvent(apexPolicyModel); + assertNotNull(axEvent); + + // getting number of connections send it to policy, expecting probe action + logger.info("Sending too many connections trigger "); + EnEvent event = apexEngine.createEvent(axEvent.getKey()); + event.put("IMSI", new Long(123456)); + event.put("IMSI_IP", "101.111.121.131"); + event.put("ENODEB_ID", new Long(123)); + event.put("SERVICE_REQUEST_COUNT", 99); + event.put("AVG_SUBSCRIBER_SERVICE_REQUEST", 101.0); + event.put("UE_IP_ADDRESS", "101.111.121.131"); + event.put("NUM_SUBSCRIBERS", 101); + event.put("ACTTASK", ""); + event.put("APPLICATION", ""); + event.put("ATTACH_COUNT", 0); + event.put("AVG_SUBSCRIBER_ATTACH", 0D); + event.put("DoS", false); + event.put("NW_IP", ""); + event.put("PROBE_ON", false); + event.put("SGW_IP_ADDRESS", ""); + event.put("TCP_ON", false); + event.put("TCP_UE_SIDE_AVG_THROUGHPUT", 0D); + event.put("TCP_UE_SIDE_MEDIAN_RTT_TX_TO_RX", 0L); + event.put("http_host_class", ""); + event.put("protocol_group", ""); + apexEngine.handleEvent(event); + EnEvent result = listener.getResult(); + assertTrue(result.getName().startsWith("XSTREAM_AADM_ACT_EVENT")); + assertEquals("ExecutionIDs are different", event.getExecutionID(), result.getExecutionID()); + // no DOS_IN_eNodeB set so return probe action + assertTrue(result.get("ACTTASK").equals("probe")); + assertTrue((boolean) result.get("TCP_ON")); + assertTrue((boolean) result.get("PROBE_ON")); + logger.info("Receiving action event with {} action", result.get("ACTTASK")); + + final ContextAlbum eNodeBStatusAlbum = apexEngine.getInternalContext().get("ENodeBStatusAlbum"); + final ENodeBStatus eNodeBStatus = (ENodeBStatus) eNodeBStatusAlbum.get("123"); + eNodeBStatus.setDOSCount(101); + eNodeBStatusAlbum.put(eNodeBStatus.getENodeB(), eNodeBStatus); + + logger.info("Sending too many connections trigger "); + event = apexEngine.createEvent(axEvent.getKey()); + event.put("IMSI", new Long(123456)); + event.put("IMSI_IP", "101.111.121.131"); + event.put("ENODEB_ID", new Long(123)); + event.put("SERVICE_REQUEST_COUNT", 101); + event.put("AVG_SUBSCRIBER_SERVICE_REQUEST", 99.0); + event.put("UE_IP_ADDRESS", "101.111.121.131"); + event.put("NUM_SUBSCRIBERS", 101); + event.put("TCP_UE_SIDE_AVG_THROUGHPUT", 101.0); + event.put("ACTTASK", ""); + event.put("APPLICATION", ""); + event.put("ATTACH_COUNT", 0); + event.put("AVG_SUBSCRIBER_ATTACH", 0D); + event.put("DoS", false); + event.put("NW_IP", ""); + event.put("PROBE_ON", false); + event.put("SGW_IP_ADDRESS", ""); + event.put("TCP_ON", false); + event.put("TCP_UE_SIDE_MEDIAN_RTT_TX_TO_RX", 0L); + event.put("http_host_class", ""); + event.put("protocol_group", ""); + + apexEngine.handleEvent(event); + result = listener.getResult(); + assertTrue(result.getName().startsWith("XSTREAM_AADM_ACT_EVENT")); + assertEquals("ExecutionIDs are different", event.getExecutionID(), result.getExecutionID()); + // DOS_IN_eNodeB set to be more than throughput so return act action + assertTrue(result.get("ACTTASK").equals("act")); + // only one imsi was sent to process, so stop probe and tcp + assertTrue(!(boolean) result.get("TCP_ON")); + assertTrue(!(boolean) result.get("PROBE_ON")); + assertEquals(100, ((ENodeBStatus) eNodeBStatusAlbum.get("123")).getDOSCount()); + logger.info("Receiving action event with {} action", result.get("ACTTASK")); + + ((ENodeBStatus) eNodeBStatusAlbum.get("123")).setDOSCount(99); + + // getting number of connections send it to policy, expecting probe action + logger.info("Sending too many connections trigger "); + event = apexEngine.createEvent(axEvent.getKey()); + event.put("IMSI", new Long(123456)); + event.put("IMSI_IP", "101.111.121.131"); + event.put("ENODEB_ID", new Long(123)); + event.put("SERVICE_REQUEST_COUNT", 99); + event.put("AVG_SUBSCRIBER_SERVICE_REQUEST", 101.0); + event.put("UE_IP_ADDRESS", "101.111.121.131"); + event.put("NUM_SUBSCRIBERS", 99); + event.put("ACTTASK", ""); + event.put("APPLICATION", ""); + event.put("ATTACH_COUNT", 0); + event.put("AVG_SUBSCRIBER_ATTACH", 0D); + event.put("DoS", false); + event.put("NW_IP", ""); + event.put("PROBE_ON", false); + event.put("SGW_IP_ADDRESS", ""); + event.put("TCP_ON", false); + event.put("TCP_UE_SIDE_AVG_THROUGHPUT", 0D); + event.put("TCP_UE_SIDE_MEDIAN_RTT_TX_TO_RX", 0L); + event.put("http_host_class", ""); + event.put("protocol_group", ""); + + apexEngine.handleEvent(event); + result = listener.getResult(); + assertTrue(result.getName().startsWith("XSTREAM_AADM_ACT_EVENT")); + assertEquals("ExecutionIDs are different", event.getExecutionID(), result.getExecutionID()); + assertTrue(result.get("ACTTASK").equals("probe")); + assertTrue((boolean) result.get("TCP_ON")); + assertTrue((boolean) result.get("PROBE_ON")); + assertEquals(99, ((ENodeBStatus) eNodeBStatusAlbum.get("123")).getDOSCount()); + + ((ENodeBStatus) eNodeBStatusAlbum.get("123")).setDOSCount(99); + + // tcp correlation return positive dos + logger.info("Receiving action event with {} action", result.get("ACTTASK")); + event = apexEngine.createEvent(axEvent.getKey()); + event.put("IMSI", new Long(123456)); + event.put("IMSI_IP", "101.111.121.131"); + event.put("ENODEB_ID", new Long(123)); + event.put("TCP_UE_SIDE_AVG_THROUGHPUT", 101.0); + event.put("ACTTASK", ""); + event.put("APPLICATION", ""); + event.put("ATTACH_COUNT", 0); + event.put("AVG_SUBSCRIBER_ATTACH", 0D); + event.put("AVG_SUBSCRIBER_SERVICE_REQUEST", 0.0); + event.put("DoS", false); + event.put("NUM_SUBSCRIBERS", 0); + event.put("NW_IP", ""); + event.put("PROBE_ON", false); + event.put("SERVICE_REQUEST_COUNT", 0); + event.put("SGW_IP_ADDRESS", ""); + event.put("TCP_ON", false); + event.put("TCP_UE_SIDE_MEDIAN_RTT_TX_TO_RX", 0L); + event.put("UE_IP_ADDRESS", ""); + event.put("http_host_class", ""); + event.put("protocol_group", ""); + + apexEngine.handleEvent(event); + result = listener.getResult(); + assertTrue(result.getName().startsWith("XSTREAM_AADM_ACT_EVENT")); + assertEquals("ExecutionIDs are different", event.getExecutionID(), result.getExecutionID()); + assertTrue(result.get("ACTTASK").equals("act")); + assertTrue(!(boolean) result.get("TCP_ON")); + assertTrue(!(boolean) result.get("PROBE_ON")); + assertEquals(98, ((ENodeBStatus) eNodeBStatusAlbum.get("123")).getDOSCount()); + logger.info("Receiving action event with {} action", result.get("ACTTASK")); + + ((ENodeBStatus) eNodeBStatusAlbum.get("123")).setDOSCount(101); + + // user moving enodeB + logger.info("Sending too many connections trigger "); + event = apexEngine.createEvent(axEvent.getKey()); + event.put("IMSI", new Long(123456)); + event.put("IMSI_IP", "101.111.121.131"); + event.put("ENODEB_ID", new Long(123)); + event.put("SERVICE_REQUEST_COUNT", 99); + event.put("AVG_SUBSCRIBER_SERVICE_REQUEST", 101.0); + event.put("UE_IP_ADDRESS", "101.111.121.131"); + event.put("NUM_SUBSCRIBERS", 101); + event.put("ACTTASK", ""); + event.put("APPLICATION", ""); + event.put("ATTACH_COUNT", 0); + event.put("AVG_SUBSCRIBER_ATTACH", 0D); + event.put("AVG_SUBSCRIBER_SERVICE_REQUEST", 0.0); + event.put("DoS", false); + event.put("NW_IP", ""); + event.put("PROBE_ON", false); + event.put("SGW_IP_ADDRESS", ""); + event.put("TCP_ON", false); + event.put("TCP_UE_SIDE_AVG_THROUGHPUT", 0D); + event.put("TCP_UE_SIDE_MEDIAN_RTT_TX_TO_RX", 0L); + event.put("http_host_class", ""); + event.put("protocol_group", ""); + + apexEngine.handleEvent(event); + result = listener.getResult(); + assertTrue(result.getName().startsWith("XSTREAM_AADM_ACT_EVENT")); + assertEquals("ExecutionIDs are different", event.getExecutionID(), result.getExecutionID()); + assertTrue(result.get("ACTTASK").equals("act")); + assertTrue(!(boolean) result.get("TCP_ON")); + assertTrue(!(boolean) result.get("PROBE_ON")); + assertEquals(100, ((ENodeBStatus) eNodeBStatusAlbum.get("123")).getDOSCount()); + logger.info("Receiving action event with {} action", result.get("ACTTASK")); + + logger.info("Sending too many connections trigger "); + event = apexEngine.createEvent(axEvent.getKey()); + event.put("IMSI", new Long(123456)); + event.put("ENODEB_ID", new Long(124)); + event.put("SERVICE_REQUEST_COUNT", 99); + event.put("AVG_SUBSCRIBER_SERVICE_REQUEST", 101.0); + event.put("UE_IP_ADDRESS", "101.111.121.131"); + event.put("NUM_SUBSCRIBERS", 101); + event.put("ACTTASK", ""); + event.put("APPLICATION", ""); + event.put("ATTACH_COUNT", 0); + event.put("AVG_SUBSCRIBER_ATTACH", 0D); + event.put("DoS", false); + event.put("IMSI_IP", ""); + event.put("NW_IP", ""); + event.put("PROBE_ON", false); + event.put("SGW_IP_ADDRESS", ""); + event.put("TCP_ON", false); + event.put("TCP_UE_SIDE_AVG_THROUGHPUT", 0D); + event.put("TCP_UE_SIDE_MEDIAN_RTT_TX_TO_RX", 0L); + event.put("http_host_class", ""); + event.put("protocol_group", ""); + + apexEngine.handleEvent(event); + result = listener.getResult(); + assertTrue(result.getName().startsWith("XSTREAM_AADM_ACT_EVENT")); + assertEquals("ExecutionIDs are different", event.getExecutionID(), result.getExecutionID()); + assertTrue(result.get("ACTTASK").equals("probe")); + assertTrue((boolean) result.get("TCP_ON")); + assertTrue((boolean) result.get("PROBE_ON")); + assertEquals(99, ((ENodeBStatus) eNodeBStatusAlbum.get("123")).getDOSCount()); + assertEquals(1, ((ENodeBStatus) eNodeBStatusAlbum.get("124")).getDOSCount()); + logger.info("Receiving action event with {} action", result.get("ACTTASK")); + // End of user moving enodeB + + ((ENodeBStatus) eNodeBStatusAlbum.get("123")).setDOSCount(101); + + // user becomes non anomalous + logger.info("Sending too many connections trigger "); + event = apexEngine.createEvent(axEvent.getKey()); + event.put("IMSI", new Long(123456)); + event.put("IMSI_IP", "101.111.121.131"); + event.put("ENODEB_ID", new Long(123)); + event.put("SERVICE_REQUEST_COUNT", 99); + event.put("AVG_SUBSCRIBER_SERVICE_REQUEST", 101.0); + event.put("UE_IP_ADDRESS", "101.111.121.131"); + event.put("NUM_SUBSCRIBERS", 101); + event.put("ACTTASK", ""); + event.put("APPLICATION", ""); + event.put("ATTACH_COUNT", 0); + event.put("AVG_SUBSCRIBER_ATTACH", 0D); + event.put("DoS", false); + event.put("NW_IP", ""); + event.put("PROBE_ON", false); + event.put("SGW_IP_ADDRESS", ""); + event.put("TCP_ON", false); + event.put("TCP_UE_SIDE_AVG_THROUGHPUT", 0D); + event.put("TCP_UE_SIDE_MEDIAN_RTT_TX_TO_RX", 0L); + event.put("http_host_class", ""); + event.put("protocol_group", ""); + + apexEngine.handleEvent(event); + result = listener.getResult(); + assertTrue(result.getName().startsWith("XSTREAM_AADM_ACT_EVENT")); + assertEquals("ExecutionIDs are different", event.getExecutionID(), result.getExecutionID()); + assertTrue(result.get("ACTTASK").equals("probe")); + assertTrue((boolean) result.get("TCP_ON")); + assertTrue((boolean) result.get("PROBE_ON")); + assertEquals(102, ((ENodeBStatus) eNodeBStatusAlbum.get("123")).getDOSCount()); + logger.info("Receiving action event with {} action", result.get("ACTTASK")); + + logger.info("Sending too many connections trigger "); + event = apexEngine.createEvent(axEvent.getKey()); + event.put("IMSI", new Long(123456)); + event.put("ENODEB_ID", new Long(123)); + event.put("SERVICE_REQUEST_COUNT", 99); + event.put("UE_IP_ADDRESS", "101.111.121.131"); + event.put("ACTTASK", ""); + event.put("APPLICATION", ""); + event.put("ATTACH_COUNT", 0); + event.put("AVG_SUBSCRIBER_ATTACH", 0D); + event.put("AVG_SUBSCRIBER_SERVICE_REQUEST", 0.0); + event.put("DoS", false); + event.put("IMSI_IP", ""); + event.put("NUM_SUBSCRIBERS", 0); + event.put("NW_IP", ""); + event.put("PROBE_ON", false); + event.put("SGW_IP_ADDRESS", ""); + event.put("TCP_ON", false); + event.put("TCP_UE_SIDE_AVG_THROUGHPUT", 0D); + event.put("TCP_UE_SIDE_MEDIAN_RTT_TX_TO_RX", 0L); + event.put("http_host_class", ""); + event.put("protocol_group", ""); + + apexEngine.handleEvent(event); + result = listener.getResult(); + assertTrue(result.getName().startsWith("XSTREAM_AADM_ACT_EVENT")); + assertEquals("ExecutionIDs are different", event.getExecutionID(), result.getExecutionID()); + assertTrue(result.get("ACTTASK").equals("probe")); + assertTrue((boolean) result.get("TCP_ON")); + assertTrue((boolean) result.get("PROBE_ON")); + assertEquals(102, ((ENodeBStatus) eNodeBStatusAlbum.get("123")).getDOSCount()); + logger.info("Receiving action event with {} action", result.get("ACTTASK")); + // End of user becomes non anomalous + apexEngine.handleEvent(result); + result = listener.getResult(); + assertTrue(result.getName().startsWith("SAPCBlacklistSubscriberEvent")); + assertTrue(result.get("PROFILE").equals("ServiceA")); + assertTrue(result.get("BLACKLIST_ON").equals(true)); + + event = apexEngine.createEvent(new AxArtifactKey("PeriodicEvent", "0.0.1")); + event.put("PERIODIC_EVENT_COUNT", (long) 100); + event.put("PERIODIC_DELAY", (long) 1000); + event.put("PERIODIC_FIRST_TIME", System.currentTimeMillis()); + event.put("PERIODIC_CURRENT_TIME", System.currentTimeMillis()); + event.put("PERIODIC_LAST_TIME", System.currentTimeMillis()); + apexEngine.handleEvent(event); + result = listener.getResult(); + assertTrue(result.getName().startsWith("SAPCBlacklistSubscriberEvent")); + assertEquals("ExecutionIDs are different", event.getExecutionID(), result.getExecutionID()); + assertEquals(0L, result.get("IMSI")); + assertTrue(result.get("PROFILE").equals("ServiceA")); + assertTrue(result.get("BLACKLIST_ON").equals(false)); + + apexEngine.stop(); + } + + /** + * Test vpn cleardown. + */ + @After + public void testAADMCleardown() {} + + /** + * Gets the trigger event. + * + * @param apexModel the apex model + * @return the trigger event + */ + private AxEvent getTriggerEvent(final AxPolicyModel apexPolicyModel) { + for (final AxEvent axEvent : apexPolicyModel.getEvents().getEventMap().values()) { + if (axEvent.getKey().getID().equals("AADMEvent:0.0.1")) { + return axEvent; + } + } + return null; + } +} diff --git a/examples/examples-aadm/src/test/java/org/onap/policy/apex/examples/aadm/TestApexActionListener.java b/examples/examples-aadm/src/test/java/org/onap/policy/apex/examples/aadm/TestApexActionListener.java new file mode 100644 index 000000000..ccf4539aa --- /dev/null +++ b/examples/examples-aadm/src/test/java/org/onap/policy/apex/examples/aadm/TestApexActionListener.java @@ -0,0 +1,91 @@ +/*- + * ============LICENSE_START======================================================= + * Copyright (C) 2016-2018 Ericsson. 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. + * + * SPDX-License-Identifier: Apache-2.0 + * ============LICENSE_END========================================================= + */ + +package org.onap.policy.apex.examples.aadm; + +import java.util.ArrayList; +import java.util.List; + +import org.onap.policy.apex.core.engine.engine.EnEventListener; +import org.onap.policy.apex.core.engine.event.EnEvent; +import org.onap.policy.apex.core.infrastructure.threading.ThreadUtilities; + +/** + * The listener interface for receiving testApexAction events. The class that is interested in processing a + * testApexAction event implements this interface, and the object created with that class is registered with a component + * using the component's <code>addTestApexActionListener</code> method. When the testApexAction event occurs, that + * object's appropriate method is invoked. + * + * @author Liam Fallon (liam.fallon@ericsson.com) + */ +public class TestApexActionListener implements EnEventListener { + List<EnEvent> resultEvents = new ArrayList<EnEvent>(); + + private final String id; + + /** + * Instantiates a new test apex action listener. + * + * @param id the id + */ + public TestApexActionListener(final String id) { + this.id = id; + } + + /** + * Gets the result. + * + * @return the result + */ + public EnEvent getResult() { + while (resultEvents.isEmpty()) { + ThreadUtilities.sleep(100); + } + return resultEvents.remove(0); + } + + /* + * (non-Javadoc) + * + * @see + * org.onap.policy.apex.core.engine.engine.EnEventListener#onEnEvent(org.onap.policy.apex.core.engine.event.EnEvent) + */ + @Override + public void onEnEvent(final EnEvent actionEvent) { + try { + Thread.sleep(100); + } catch (final InterruptedException e) { + e.printStackTrace(); + } + if (actionEvent != null) { + System.out.println("Action event from engine:" + actionEvent.getName()); + resultEvents.add(actionEvent); + } + } + + /** + * Gets the id. + * + * @return the id + */ + public String getId() { + return id; + } +} diff --git a/examples/examples-aadm/src/test/resources/META-INF/persistence.xml b/examples/examples-aadm/src/test/resources/META-INF/persistence.xml new file mode 100644 index 000000000..eaef96a85 --- /dev/null +++ b/examples/examples-aadm/src/test/resources/META-INF/persistence.xml @@ -0,0 +1,69 @@ +<?xml version="1.0" encoding="UTF-8"?> +<!-- + ============LICENSE_START======================================================= + Copyright (C) 2016-2018 Ericsson. 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. + + SPDX-License-Identifier: Apache-2.0 + ============LICENSE_END========================================================= +--> + +<persistence xmlns="http://java.sun.com/xml/ns/persistence" version="2.0"> + <persistence-unit name="AADMModelTest" transaction-type="RESOURCE_LOCAL"> + <provider>org.eclipse.persistence.jpa.PersistenceProvider</provider> + + <class>org.onap.policy.apex.model.basicmodel.dao.converters.CDATAConditioner</class> + <class>org.onap.policy.apex.model.basicmodel.dao.converters.UUID2String</class> + <class>org.onap.policy.apex.model.basicmodel.concepts.AxArtifactKey</class> + <class>org.onap.policy.apex.model.basicmodel.concepts.AxConcept</class> + <class>org.onap.policy.apex.model.basicmodel.concepts.AxKeyInfo</class> + <class>org.onap.policy.apex.model.basicmodel.concepts.AxKeyInformation</class> + <class>org.onap.policy.apex.model.basicmodel.concepts.AxModel</class> + <class>org.onap.policy.apex.model.basicmodel.concepts.TestEntity</class> + <class>org.onap.policy.apex.model.contextmodel.concepts.AxContextSchema</class> + <class>org.onap.policy.apex.model.contextmodel.concepts.AxContextSchemas</class> + <class>org.onap.policy.apex.model.contextmodel.concepts.AxContextAlbum</class> + <class>org.onap.policy.apex.model.contextmodel.concepts.AxContextAlbums</class> + <class>org.onap.policy.apex.model.contextmodel.concepts.AxContextModel</class> + <class>org.onap.policy.apex.model.eventmodel.concepts.AxField</class> + <class>org.onap.policy.apex.model.eventmodel.concepts.AxInputField</class> + <class>org.onap.policy.apex.model.eventmodel.concepts.AxOutputField</class> + <class>org.onap.policy.apex.model.eventmodel.concepts.AxEvent</class> + <class>org.onap.policy.apex.model.eventmodel.concepts.AxEvents</class> + <class>org.onap.policy.apex.model.eventmodel.concepts.AxEventModel</class> + <class>org.onap.policy.apex.model.policymodel.concepts.AxLogic</class> + <class>org.onap.policy.apex.model.policymodel.concepts.AxTaskParameter</class> + <class>org.onap.policy.apex.model.policymodel.concepts.AxTaskLogic</class> + <class>org.onap.policy.apex.model.policymodel.concepts.AxTask</class> + <class>org.onap.policy.apex.model.policymodel.concepts.AxTasks</class> + <class>org.onap.policy.apex.model.policymodel.concepts.AxTaskSelectionLogic</class> + <class>org.onap.policy.apex.model.policymodel.concepts.AxStateFinalizerLogic</class> + <class>org.onap.policy.apex.model.policymodel.concepts.AxStateOutput</class> + <class>org.onap.policy.apex.model.policymodel.concepts.AxStateTaskReference</class> + <class>org.onap.policy.apex.model.policymodel.concepts.AxState</class> + <class>org.onap.policy.apex.model.policymodel.concepts.AxPolicy</class> + <class>org.onap.policy.apex.model.policymodel.concepts.AxPolicies</class> + <class>org.onap.policy.apex.model.policymodel.concepts.AxPolicyModel</class> + + <properties> + <property name="javax.persistence.jdbc.url" value="jdbc:derby:memory:apex_test" /> + <property name="javax.persistence.target-database" value="Derby" /> + <property name="javax.persistence.jdbc.driver" value="org.apache.derby.jdbc.EmbeddedDriver" /> + + <property name="eclipselink.ddl-generation" value="drop-and-create-tables" /> + <property name="eclipselink.ddl-generation.output-mode" value="database" /> + <property name="eclipselink.logging.level" value="INFO" /> + </properties> + </persistence-unit> +</persistence> diff --git a/examples/examples-aadm/src/test/resources/logback-test.xml b/examples/examples-aadm/src/test/resources/logback-test.xml new file mode 100644 index 000000000..4b9258c40 --- /dev/null +++ b/examples/examples-aadm/src/test/resources/logback-test.xml @@ -0,0 +1,74 @@ +<?xml version="1.0" encoding="UTF-8"?> +<!-- + ============LICENSE_START======================================================= + Copyright (C) 2016-2018 Ericsson. 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. + + SPDX-License-Identifier: Apache-2.0 + ============LICENSE_END========================================================= +--> + +<configuration> + + <contextName>Apex</contextName> + <statusListener class="ch.qos.logback.core.status.OnConsoleStatusListener" /> + <property name="LOG_DIR" value="${java.io.tmpdir}/apex_logging/" /> + + <!-- USE FOR STD OUT ONLY --> + <appender name="STDOUT" class="ch.qos.logback.core.ConsoleAppender"> + <encoder> + <Pattern>%d %contextName [%t] %level %logger{36} - %msg%n</Pattern> + </encoder> + </appender> + + <root level="INFO"> + <appender-ref ref="STDOUT" /> + </root> + + <logger name="org.infinispan" level="INFO" additivity="false"> + <appender-ref ref="STDOUT" /> + </logger> + + <logger name="org.apache.zookeeper.ClientCnxn" level="OFF" additivity="false"> + <appender-ref ref="STDOUT" /> + </logger> + + <appender name="FILE" class="ch.qos.logback.core.FileAppender"> + <file>${LOG_DIR}/apex.log</file> + <encoder> + <pattern>%d %-5relative [procId=${processId}] [%thread] %-5level + %logger{26} - %msg %n %ex{full}</pattern> + </encoder> + </appender> + + <appender name="CTXT_FILE" class="ch.qos.logback.core.FileAppender"> + <file>${LOG_DIR}/apex_ctxt.log</file> + <encoder> + <pattern>%d %-5relative [procId=${processId}] [%thread] %-5level + %logger{26} - %msg %n %ex{full}</pattern> + </encoder> + </appender> + + <logger name="org.onap.policy.apex.core.context.impl.monitoring" level="TRACE" additivity="false"> + <appender-ref ref="CTXT_FILE" /> + </logger> + + <logger name="org.onap.policy.apex" level="TRACE" additivity="false"> + <appender-ref ref="STDOUT" /> + </logger> + + <logger name="org.onap.policy.apex.core.infrastructure" level="INFO" additivity="false"> + <appender-ref ref="STDOUT" /> + </logger> +</configuration> |