1 <?xml version="1.0" encoding="UTF-8"?><!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd"><html xmlns="http://www.w3.org/1999/xhtml" lang="en"><head><meta http-equiv="Content-Type" content="text/html;charset=UTF-8"/><link rel="stylesheet" href="../jacoco-resources/report.css" type="text/css"/><link rel="shortcut icon" href="../jacoco-resources/report.gif" type="image/gif"/><title>NorthMessageMgr.java</title><link rel="stylesheet" href="../jacoco-resources/prettify.css" type="text/css"/><script type="text/javascript" src="../jacoco-resources/prettify.js"></script></head><body onload="window['PR_TAB_WIDTH']=4;prettyPrint()"><div class="breadcrumb" id="breadcrumb"><span class="info"><a href="../jacoco-sessions.html" class="el_session">Sessions</a></span><a href="../index.html" class="el_report">vfc-nfvo-driver-ems-ems-boco</a> > <a href="index.source.html" class="el_package">org.onap.vfc.nfvo.emsdriver.northbound.client</a> > <span class="el_source">NorthMessageMgr.java</span></div><h1>NorthMessageMgr.java</h1><pre class="source lang-java linenums">/**
2 * Copyright 2017 BOCO Corporation. CMCC Technologies Co., Ltd
4 * Licensed under the Apache License, Version 2.0 (the "License");
5 * you may not use this file except in compliance with the License.
6 * You may obtain a copy of the License at
8 * http://www.apache.org/licenses/LICENSE-2.0
10 * Unless required by applicable law or agreed to in writing, software
11 * distributed under the License is distributed on an "AS IS" BASIS,
12 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13 * See the License for the specific language governing permissions and
14 * limitations under the License.
16 package org.onap.vfc.nfvo.emsdriver.northbound.client;
18 import java.text.ParseException;
19 import java.text.SimpleDateFormat;
20 import java.util.Date;
22 import java.util.Properties;
24 import org.apache.log4j.Level;
25 import org.onap.vfc.nfvo.emsdriver.commons.constant.Constant;
26 import org.onap.vfc.nfvo.emsdriver.commons.utils.DriverThread;
27 import org.onap.vfc.nfvo.emsdriver.configmgr.ConfigurationInterface;
28 import org.onap.vfc.nfvo.emsdriver.messagemgr.MessageChannel;
29 import org.onap.vfc.nfvo.emsdriver.messagemgr.MessageChannelFactory;
31 import com.alibaba.fastjson.JSONObject;
33 import evel_javalibrary.att.com.AgentMain;
34 import evel_javalibrary.att.com.AgentMain.EVEL_ERR_CODES;
35 import evel_javalibrary.att.com.EvelFault;
36 import evel_javalibrary.att.com.EvelFault.EVEL_SEVERITIES;
37 import evel_javalibrary.att.com.EvelFault.EVEL_SOURCE_TYPES;
38 import evel_javalibrary.att.com.EvelFault.EVEL_VF_STATUSES;
39 import evel_javalibrary.att.com.EvelHeader;
40 import evel_javalibrary.att.com.EvelScalingMeasurement;
42 <span class="nc" id="L42">public class NorthMessageMgr extends DriverThread{</span>
44 <span class="nc" id="L44"> private MessageChannel alarmChannel = MessageChannelFactory.getMessageChannel(Constant.RESULT_CHANNEL_KEY);</span>
45 <span class="nc" id="L45"> private MessageChannel collectResultPMChannel = MessageChannelFactory.getMessageChannel(Constant.COLLECT_RESULT_PM_CHANNEL_KEY);</span>
46 <span class="nc" id="L46"> private MessageChannel collectResultChannel = MessageChannelFactory.getMessageChannel(Constant.COLLECT_RESULT_CHANNEL_KEY);</span>
47 private ConfigurationInterface configurationInterface ;
49 <span class="nc" id="L49"> private boolean threadStop = false;</span>
50 <span class="nc" id="L50"> private Level level = Level.DEBUG;</span>
53 public void dispose() {
54 <span class="nc" id="L54"> log.info("NorthMessageMgr Thread start threadStop="+threadStop);</span>
56 <span class="nc" id="L56"> Properties properties = configurationInterface.getProperties();</span>
57 <span class="nc" id="L57"> String event_api_url = properties.getProperty("event_api_url");</span>
58 <span class="nc" id="L58"> String port = properties.getProperty("port");</span>
59 <span class="nc" id="L59"> String path = properties.getProperty("path");</span>
60 <span class="nc" id="L60"> String topic = properties.getProperty("topic");</span>
61 <span class="nc" id="L61"> String username = properties.getProperty("username");</span>
62 <span class="nc" id="L62"> String password = properties.getProperty("password");</span>
63 <span class="nc" id="L63"> String levelStr = properties.getProperty("level");</span>
64 <span class="nc bnc" id="L64" title="All 2 branches missed."> if("debug".equals(levelStr)){</span>
65 <span class="nc" id="L65"> level = Level.DEBUG;</span>
67 <span class="nc" id="L67"> level = Level.INFO;</span>
71 <span class="nc" id="L71"> event_api_url = "http://"+event_api_url;</span>
72 <span class="nc" id="L72"> log.info("AgentMain.evel_initialize start event_api_url=["+event_api_url+"]port=["+port+"]path=["+path+"]"</span>
73 + "topic=["+topic+"]username=["+username+"]password=["+password+"]level=["+level+"]");
75 <span class="nc" id="L75"> EVEL_ERR_CODES evecode = AgentMain.evel_initialize(event_api_url, Integer.parseInt(port),</span>
80 <span class="nc" id="L80"> log.info("AgentMain.evel_initialize sucess EVEL_ERR_CODES="+evecode);</span>
81 <span class="nc" id="L81"> } catch( Exception e ){</span>
82 <span class="nc" id="L82"> log.error("AgentMain.evel_initialize fail ",e);</span>
83 <span class="nc" id="L83"> }catch( Error e1 ){</span>
84 <span class="nc" id="L84"> log.error("AgentMain.evel_initialize Error ",e1);</span>
85 <span class="nc" id="L85"> }</span>
86 <span class="nc" id="L86"> } catch (Exception e2) {</span>
87 <span class="nc" id="L87"> log.error("NorthMessageMgr start fail ",e2);</span>
88 <span class="nc" id="L88"> }</span>
90 <span class="nc" id="L90"> new HeatBeatTread().start();</span>
92 <span class="nc" id="L92"> new AlarmMessageRecv().start();</span>
94 <span class="nc" id="L94"> new ResultMessageRecv().start();</span>
96 <span class="nc" id="L96"> new CollectMessageRecv().start();</span>
98 <span class="nc" id="L98"> log.info("NorthMessageMgr start sucess ");</span>
99 <span class="nc" id="L99"> }</span>
102 <span class="nc" id="L102"> class HeatBeatTread extends Thread{</span>
106 <span class="nc bnc" id="L106" title="All 2 branches missed."> while(!threadStop){</span>
109 <span class="nc" id="L109"> EvelHeader header = EvelHeader.evel_new_heartbeat("Hearbeat_EMS","EMS-driver");</span>
110 <span class="nc" id="L110"> header.evel_nfnamingcode_set("EMS-driver");</span>
111 <span class="nc" id="L111"> header.evel_nfcnamingcode_set("EMS-driver");</span>
112 <span class="nc" id="L112"> AgentMain.evel_post_event(header);</span>
113 <span class="nc" id="L113"> log.info("HeatBeat send!");</span>
115 <span class="nc" id="L115"> Thread.sleep(60*1000);</span>
116 <span class="nc" id="L116"> } catch( Exception e ){</span>
117 <span class="nc" id="L117"> e.printStackTrace();</span>
118 <span class="nc" id="L118"> }</span>
119 <span class="nc" id="L119"> } catch (Exception e) {</span>
120 <span class="nc" id="L120"> log.error("HeatBeatTread exception",e);</span>
121 <span class="nc" id="L121"> }</span>
123 <span class="nc" id="L123"> }</span>
126 <span class="nc" id="L126"> class AlarmMessageRecv extends Thread{</span>
127 <span class="nc" id="L127"> long timeStamp = System.currentTimeMillis();</span>
130 <span class="nc bnc" id="L130" title="All 2 branches missed."> while(!threadStop){</span>
133 <span class="nc bnc" id="L133" title="All 2 branches missed."> if(System.currentTimeMillis() - timeStamp > Constant.ONEMINUTE){</span>
134 <span class="nc" id="L134"> timeStamp = System.currentTimeMillis();</span>
136 <span class="nc" id="L136"> log.info("ALARM_CHANNEL Msg size :"+alarmChannel.size());</span>
139 <span class="nc" id="L139"> Object obj = alarmChannel.poll();</span>
140 <span class="nc bnc" id="L140" title="All 2 branches missed."> if(obj == null){</span>
141 <span class="nc" id="L141"> continue;</span>
143 <span class="nc bnc" id="L143" title="All 2 branches missed."> if(obj instanceof String){</span>
144 <span class="nc" id="L144"> String result = (String)obj;</span>
145 <span class="nc" id="L145"> JSONObject reagobj = JSONObject.parseObject(result);</span>
147 <span class="nc" id="L147"> EvelFault evelFault = this.resultEvelFault(reagobj);</span>
150 <span class="nc" id="L150"> log.info("AgentMain.evel_post_event alarm start");</span>
151 <span class="nc" id="L151"> AgentMain.evel_post_event(evelFault);</span>
152 <span class="nc" id="L152"> log.info("AgentMain.evel_post_event alarm sucess");</span>
153 <span class="nc" id="L153"> }else{</span>
154 <span class="nc" id="L154"> log.error("AlarmMessageRecv receive Object = "+obj);</span>
157 <span class="nc" id="L157"> } catch (Exception e) {</span>
158 <span class="nc" id="L158"> log.error("AlarmMessageRecv exception",e);</span>
159 <span class="nc" id="L159"> }</span>
161 <span class="nc" id="L161"> }</span>
163 private EvelFault resultEvelFault(JSONObject reagobj) {
165 <span class="nc" id="L165"> String eventName = null;</span>
166 <span class="nc" id="L166"> EvelHeader.PRIORITIES pri = null;</span>
167 <span class="nc" id="L167"> EVEL_SEVERITIES severity = null;</span>
168 <span class="nc" id="L168"> EVEL_VF_STATUSES status = null;</span>
169 <span class="nc" id="L169"> String alarmStatus = reagobj.getString("alarmStatus");</span>
170 <span class="nc" id="L170"> String origSeverity = reagobj.getString("origSeverity");</span>
171 <span class="nc bnc" id="L171" title="All 2 branches missed."> if("0".equals(alarmStatus)){</span>
172 <span class="nc" id="L172"> status = EVEL_VF_STATUSES.EVEL_VF_STATUS_IDLE;</span>
173 <span class="nc" id="L173"> eventName = "Fault_"+reagobj.getString("neType")+"_"+reagobj.getString("alarmTitle")+"Cleared";</span>
175 <span class="nc bnc" id="L175" title="All 2 branches missed."> if("1".equals(origSeverity)){</span>
176 <span class="nc" id="L176"> severity = EVEL_SEVERITIES.EVEL_SEVERITY_CRITICAL;</span>
177 <span class="nc" id="L177"> pri = EvelHeader.PRIORITIES.EVEL_PRIORITY_HIGH;</span>
178 <span class="nc bnc" id="L178" title="All 2 branches missed."> }else if("2".equals(origSeverity)){</span>
179 <span class="nc" id="L179"> severity = EVEL_SEVERITIES.EVEL_SEVERITY_MAJOR;</span>
180 <span class="nc" id="L180"> pri = EvelHeader.PRIORITIES.EVEL_PRIORITY_MEDIUM;</span>
181 <span class="nc bnc" id="L181" title="All 2 branches missed."> }else if("3".equals(origSeverity)){</span>
182 <span class="nc" id="L182"> severity = EVEL_SEVERITIES.EVEL_SEVERITY_MINOR;</span>
183 <span class="nc" id="L183"> pri = EvelHeader.PRIORITIES.EVEL_PRIORITY_NORMAL;</span>
184 <span class="nc bnc" id="L184" title="All 2 branches missed."> }else if("4".equals(origSeverity)){</span>
185 <span class="nc" id="L185"> severity = EVEL_SEVERITIES.EVEL_SEVERITY_WARNING;</span>
186 <span class="nc" id="L186"> pri = EvelHeader.PRIORITIES.EVEL_PRIORITY_LOW;</span>
190 <span class="nc" id="L190"> status = EVEL_VF_STATUSES.EVEL_VF_STATUS_ACTIVE;</span>
191 <span class="nc" id="L191"> eventName = "Fault_"+reagobj.getString("neType")+"_"+reagobj.getString("alarmTitle");</span>
192 <span class="nc" id="L192"> pri = EvelHeader.PRIORITIES.EVEL_PRIORITY_NORMAL;</span>
193 <span class="nc" id="L193"> severity = EVEL_SEVERITIES.EVEL_SEVERITY_NORMAL;</span>
196 <span class="nc" id="L196"> String evnId = reagobj.getString("alarmId");</span>
197 <span class="nc" id="L197"> String alarmCondition = reagobj.getString("specificProblem");</span>
199 <span class="nc" id="L199"> String specificProblem = reagobj.getString("specificProblem");</span>
201 <span class="nc" id="L201"> EvelFault flt = new EvelFault(eventName, evnId,alarmCondition, </span>
202 specificProblem,pri,severity,
203 EVEL_SOURCE_TYPES.EVEL_SOURCE_VIRTUAL_NETWORK_FUNCTION,
205 <span class="nc" id="L205"> flt.evel_nfcnamingcode_set("");</span>
206 <span class="nc" id="L206"> flt.evel_nfnamingcode_set("");</span>
207 <span class="nc" id="L207"> flt.evel_header_type_set("applicationVnf");</span>
208 <span class="nc" id="L208"> String eventTime = reagobj.getString("eventTime");</span>
209 <span class="nc" id="L209"> SimpleDateFormat format = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");</span>
210 <span class="nc" id="L210"> Date eventTimeD = new Date();</span>
212 <span class="nc" id="L212"> eventTimeD = format.parse(eventTime);</span>
213 <span class="nc" id="L213"> } catch (ParseException e) {</span>
214 // TODO Auto-generated catch block
215 <span class="nc" id="L215"> e.printStackTrace();</span>
216 <span class="nc" id="L216"> }</span>
217 <span class="nc" id="L217"> flt.evel_start_epoch_set(eventTimeD.getTime());</span>
218 <span class="nc" id="L218"> flt.evel_last_epoch_set(eventTimeD.getTime());</span>
220 <span class="nc" id="L220"> flt.evel_fault_category_set(reagobj.getString("alarmType"));</span>
221 <span class="nc" id="L221"> flt.evel_fault_interface_set(reagobj.getString("objectName"));</span>
222 <span class="nc" id="L222"> String neUID = reagobj.getString("neUID");</span>
223 <span class="nc" id="L223"> flt.evel_reporting_entity_id_set(neUID.substring(0,9));//</span>
224 <span class="nc" id="L224"> flt.evel_reporting_entity_name_set(neUID.substring(0,9));</span>
225 <span class="nc" id="L225"> flt.evel_header_set_sourceid(true, reagobj.getString("neName"));</span>
226 <span class="nc" id="L226"> flt.evel_header_set_source_name(reagobj.getString("objectName"));</span>
228 <span class="nc" id="L228"> flt.evel_header_set_priority(pri);</span>
229 <span class="nc bnc" id="L229" title="All 2 branches missed."> for(String key : reagobj.keySet()){</span>
230 <span class="nc" id="L230"> flt.evel_fault_addl_info_add(key, reagobj.getString(key));</span>
231 <span class="nc" id="L231"> }</span>
233 <span class="nc" id="L233"> return flt;</span>
237 <span class="nc" id="L237"> class ResultMessageRecv extends Thread{</span>
238 <span class="nc" id="L238"> long timeStamp = System.currentTimeMillis();</span>
241 <span class="nc bnc" id="L241" title="All 2 branches missed."> while(!threadStop){</span>
244 <span class="nc bnc" id="L244" title="All 2 branches missed."> if(System.currentTimeMillis() - timeStamp > Constant.ONEMINUTE){</span>
245 <span class="nc" id="L245"> timeStamp = System.currentTimeMillis();</span>
247 <span class="nc" id="L247"> log.debug("COLLECT_RESULT_CHANNEL Msg size :"+collectResultChannel.size());</span>
250 <span class="nc" id="L250"> Object obj = collectResultChannel.poll();</span>
251 <span class="nc bnc" id="L251" title="All 2 branches missed."> if(obj == null){</span>
252 <span class="nc" id="L252"> continue;</span>
254 <span class="nc bnc" id="L254" title="All 2 branches missed."> if(obj instanceof String){</span>
256 <span class="nc" id="L256"> Properties properties = configurationInterface.getProperties();</span>
257 <span class="nc" id="L257"> String msbAddress = properties.getProperty("msbAddress");</span>
258 <span class="nc" id="L258"> String url = properties.getProperty("dataNotifyUrl");</span>
259 <span class="nc" id="L259"> String postUrl = "http://"+msbAddress+url;</span>
260 <span class="nc" id="L260"> HttpClientUtil.doPost(postUrl, (String)obj, Constant.ENCODING_UTF8);</span>
263 <span class="nc" id="L263"> } catch (Exception e) {</span>
264 <span class="nc" id="L264"> log.error("ResultMessageRecv exception",e);</span>
265 <span class="nc" id="L265"> }</span>
267 <span class="nc" id="L267"> }</span>
270 <span class="nc" id="L270"> class CollectMessageRecv extends Thread{</span>
271 <span class="nc" id="L271"> long timeStamp = System.currentTimeMillis();</span>
274 <span class="nc" id="L274"> log.info("CollectMessageRecv Thread is start threadStop="+threadStop);</span>
275 <span class="nc bnc" id="L275" title="All 2 branches missed."> while(!threadStop){</span>
278 <span class="nc bnc" id="L278" title="All 2 branches missed."> if(System.currentTimeMillis() - timeStamp > Constant.ONEMINUTE){</span>
279 <span class="nc" id="L279"> timeStamp = System.currentTimeMillis();</span>
281 <span class="nc" id="L281"> log.debug(Constant.COLLECT_RESULT_PM_CHANNEL_KEY+" Msg size :"+collectResultPMChannel.size());</span>
284 <span class="nc" id="L284"> Object obj = collectResultPMChannel.poll();</span>
285 <span class="nc bnc" id="L285" title="All 2 branches missed."> if(obj == null){</span>
286 <span class="nc" id="L286"> continue;</span>
288 <span class="nc bnc" id="L288" title="All 2 branches missed."> if(obj instanceof Map){</span>
289 @SuppressWarnings("unchecked")
290 <span class="nc" id="L290"> Map<String,String> reMap = (Map<String,String>)obj;</span>
291 <span class="nc" id="L291"> log.debug("reMap ="+reMap);</span>
292 <span class="nc" id="L292"> EvelScalingMeasurement evelScalingMeasurement = this.resultEvelScalingMeasurement(reMap);</span>
293 <span class="nc" id="L293"> log.debug("evelScalingMeasurement="+evelScalingMeasurement);</span>
295 <span class="nc" id="L295"> log.info("AgentMain.evel_post_event start");</span>
296 <span class="nc" id="L296"> AgentMain.evel_post_event(evelScalingMeasurement);</span>
297 <span class="nc" id="L297"> log.info("AgentMain.evel_post_event sucess");</span>
299 <span class="nc" id="L299"> }else{</span>
300 <span class="nc" id="L300"> log.error("CollectMessageRecv receive Object = "+obj);</span>
303 <span class="nc" id="L303"> } catch (Exception e) {</span>
304 <span class="nc" id="L304"> log.error("CollectMessageRecv exception",e);</span>
305 <span class="nc" id="L305"> }catch (Error e) {</span>
306 <span class="nc" id="L306"> log.error("CollectMessageRecv Error",e);</span>
307 <span class="nc" id="L307"> }</span>
309 <span class="nc" id="L309"> }</span>
311 private EvelScalingMeasurement resultEvelScalingMeasurement(Map<String,String> reMap) {
312 <span class="nc" id="L312"> String evname = "Mfvs_"+reMap.get("ElementType")+reMap.get("ObjectType");</span>
313 <span class="nc" id="L313"> String evid = reMap.get("StartTime")+reMap.get("ObjectType")+reMap.get("rmUID");</span>
314 <span class="nc bnc" id="L314" title="All 2 branches missed."> int Period = Integer.parseInt(reMap.get("Period")!=null?reMap.get("Period"):"15");</span>
315 <span class="nc" id="L315"> EvelScalingMeasurement sm = new EvelScalingMeasurement(Period,evname, evid);</span>
317 <span class="nc bnc" id="L317" title="All 2 branches missed."> for(String key : reMap.keySet()){</span>
318 <span class="nc" id="L318"> sm.evel_measurement_custom_measurement_add(reMap.get("ElementType"), key, reMap.get(key));</span>
320 <span class="nc" id="L320"> }</span>
322 <span class="nc" id="L322"> sm.evel_nfcnamingcode_set("");</span>
323 <span class="nc" id="L323"> sm.evel_nfnamingcode_set("");</span>
324 <span class="nc" id="L324"> sm.evel_header_type_set("applicationVnf");</span>
325 <span class="nc" id="L325"> String rmUID = reMap.get("rmUID");</span>
326 <span class="nc" id="L326"> sm.evel_reporting_entity_id_set(rmUID.substring(0,9));//</span>
327 <span class="nc" id="L327"> String Dn = reMap.get("Dn");</span>
328 <span class="nc bnc" id="L328" title="All 2 branches missed."> if(Dn!=null)</span>
329 <span class="nc bnc" id="L329" title="All 4 branches missed."> sm.evel_reporting_entity_name_set(Dn.substring(0, Dn != null && Dn.indexOf(";")>0?Dn.indexOf(";"):Dn.length()));</span>
332 // decide the flow if Dn is null
335 <span class="nc" id="L335"> sm.evel_header_set_sourceid(true, reMap.get("rmUID"));</span>
336 <span class="nc" id="L336"> sm.evel_header_set_source_name(reMap.get("rmUID"));</span>
338 <span class="nc" id="L338"> sm.evel_header_set_priority(EvelHeader.PRIORITIES.EVEL_PRIORITY_NORMAL);</span>
339 <span class="nc" id="L339"> return sm;</span>
344 * @return the configurationInterface
346 public ConfigurationInterface getConfigurationInterface() {
347 <span class="nc" id="L347"> return configurationInterface;</span>
351 * @param configurationInterface the configurationInterface to set
353 public void setConfigurationInterface(
354 ConfigurationInterface configurationInterface) {
355 <span class="nc" id="L355"> this.configurationInterface = configurationInterface;</span>
356 <span class="nc" id="L356"> }</span>
359 </pre><div class="footer"><span class="right">Created with <a href="http://www.eclemma.org/jacoco">JaCoCo</a> 0.7.7.201606060606</span></div></body></html>