63ac8d0ba4befe05e27eee5eef98f75df337ed3a
[policy/apex-pdp.git] / examples / examples-aadm / src / main / resources / org / onap / policy / apex / examples / aadm / model / mvel / AADMDoSSuggestionActTaskTaskLogic.mvel
1 /*
2  * ============LICENSE_START=======================================================
3  *  Copyright (C) 2016-2018 Ericsson. All rights reserved.
4  * ================================================================================
5  * Licensed under the Apache License, Version 2.0 (the "License");
6  * you may not use this file except in compliance with the License.
7  * You may obtain a copy of the License at
8  * 
9  *      http://www.apache.org/licenses/LICENSE-2.0
10  * 
11  * Unless required by applicable law or agreed to in writing, software
12  * distributed under the License is distributed on an "AS IS" BASIS,
13  * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
14  * See the License for the specific language governing permissions and
15  * limitations under the License.
16  * 
17  * SPDX-License-Identifier: Apache-2.0
18  * ============LICENSE_END=========================================================
19  */
20 import org.onap.policy.apex.examples.aadm.concepts.ENodeBStatus;
21 import org.onap.policy.apex.examples.aadm.concepts.ImsiStatus;
22
23 logger.debug(subject.id + ":" + subject.taskName + " execution logic");
24 logger.debug(inFields);
25
26 outFields["ACTTASK"] = "probe";
27 outFields["TRIGGER_SPEC"] = "XSTREAM_AADM_ACT_EVENT";
28 outFields["MAJ_MIN_MAINT_VERSION"] = "0.0.1";
29 outFields["IMSI"] = inFields["IMSI"];
30
31 if (inFields["IMSI_IP"] != null) {
32     outFields["IMSI_IP"] = inFields["IMSI_IP"];
33 }
34 else {
35     outFields["IMSI_IP"] = inFields["UE_IP_ADDRESS"];
36 }
37
38 if (inFields["NW_IP"] != null) {
39     outFields["NW_IP"] = inFields["NW_IP"];
40 }
41 else {
42     outFields["NW_IP"] = inFields["SGW_IP_ADDRESS"];
43 }
44
45 ImsiStatus imsiStatus = getContextAlbum("IMSIStatusAlbum").get((String)inFields["IMSI"]);
46 logger.debug(imsiStatus);
47
48 ENodeBStatus eNodeBStatus = getContextAlbum("ENodeBStatusAlbum").get(imsiStatus.getENodeBId());
49 logger.debug(eNodeBStatus);
50
51 if (imsiStatus.getENodeBId() != null && !imsiStatus.getENodeBId().equals(inFields["ENODEB_ID"]) || inFields["AVG_SUBSCRIBER_SERVICE_REQUEST"] == null) {
52     // if user moved enodeB remove him from previous one
53     if (imsiStatus.getENodeBId() != null) {
54         eNodeBStatus.decrementDosCount();
55     }
56
57     // if user became non anomalous return action
58     if (inFields["AVG_SUBSCRIBER_SERVICE_REQUEST"] == null) {
59         imsiStatus.setAnomalous(false);
60         outFields["ACTTASK"] = "remove_from_probe";
61
62         for (ENodeBStatus enbStatus : getContextAlbum("ENodeBStatusAlbum").values) {
63             if (enbStatus.getBeingProbed()) {
64                 outFields["PROBE_ON"] = true;
65                 outFields["TCP_ON"] = true;
66                 return true;
67             }
68         }
69
70         outFields["PROBE_ON"] = false;
71         outFields["TCP_ON"] = false;
72
73         getContextAlbum("IMSIStatusAlbum").put(imsiStatus.getIMSI(), imsiStatus);
74         getContextAlbum("ENodeBStatusAlbum").put(eNodeBStatus.getENodeB(), eNodeBStatus);
75
76         return true;
77     }
78 }
79
80 imsiStatus.setAnomalous(true);
81 imsiStatus.setAnomolousTime(System.currentTimeMillis());
82 imsiStatus.setENodeBId(inFields["ENODEB_ID"]);
83 getContextAlbum("IMSIStatusAlbum").put(imsiStatus.getImsi(), imsiStatus);
84 logger.debug(imsiStatus.getENodeBId() + ": enodeb added to imsi ip added " + outFields["IMSI_IP"]);
85
86 ENodeBStatus eNodeBStatus = getContextAlbum("ENodeBStatusAlbum").get(imsiStatus.getENodeBId());
87 if (eNodeBStatus == null) {
88     eNodeBStatus = new ENodeBStatus(imsiStatus.getENodeBId());
89     getContextAlbum("ENodeBStatusAlbum").put(eNodeBStatus.getENodeB(), eNodeBStatus);
90     logger.debug("new eNodeB added " + getContextAlbum("ENodeBStatusAlbum").get(imsiStatus.getENodeBId()));
91 }
92
93 eNodeBStatus.incrementDosCount();
94 getContextAlbum("ENodeBStatusAlbum").put(eNodeBStatus.getENodeB(), eNodeBStatus);
95 logger.debug(eNodeBStatus.getENodeB() + ": dosCount incremented to " + eNodeBStatus.getDosCount());
96
97 outFields["PROBE_ON"]     = true;
98 outFields["TCP_ON"]       = true;
99 outFields["THRESHOLD"]    = 0;
100 outFields["PROFILE"]      = "";
101 outFields["VERSION"]      = "0.0.1";
102 outFields["BLACKLIST_ON"] = false;
103
104 logger.debug("out here5");
105
106 return true;