From 3937a2e6a422f5cc6bb012e6c119f61dff76341f Mon Sep 17 00:00:00 2001 From: PrakashH Date: Wed, 30 Jan 2019 13:21:45 +0000 Subject: VES5.4.1 EVEL Library enhancements Readme file update and AFXagent addition Issue-ID: CERT-17 Change-Id: I77b956a8e16af844c4ae681c7305fad39dbf22f5 Signed-off-by: PrakashH --- vnfs/readme.md | 145 +++++++++++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 145 insertions(+) create mode 100644 vnfs/readme.md (limited to 'vnfs/readme.md') diff --git a/vnfs/readme.md b/vnfs/readme.md new file mode 100644 index 00000000..8ce88f58 --- /dev/null +++ b/vnfs/readme.md @@ -0,0 +1,145 @@ +# ECOMP Vendor Event Listener Library + + +This project contains a C library that supports interfacing to AT&T's ECOMP +Vendor Event Listener. For an overview of ECOMP, see the +[ECOMP White Paper](http://att.com/ECOMP). + +Developed in 2016 for AT&T by: + * Alok Gupta (https://github.com/ag1367) + * Paul Potochniak (https://github.com/pp8491) + * Gayathri Patrachari(https://github.com/gp2421) + +Current Maintainers: + * Alok Gupta (https://github.com/ag1367) + * Paul Potochniak (https://github.com/pp8491) + * Gayathri Patrachari(https://github.com/gp2421) + +#The description about important directories are given here + + VES5.0 - This contains the code for VES library for VES5.4.1, sample agents + + VESreporting_vFW5.0 - This is the sample virtual firewall agent + + VESreporting_vLB5.0 - This is the sample virtual load balancer agent + + VES5.0/evel/evel-library/code/evel_library - Code for VES library 'evel' + + VES5.0/evel/evel-library/code/VESreporting_HB - Sample json based heartbeat event generated periodically + + VES5.0/evel/evel-library/code/VESreporting_fault - Sample json based fault event based on low byte/packet count on interface. + + VES5.0/evel/evel-library/code/VESreporting_syslog - Sample json based syslog event based on pattern being logged into any file + + VES5.0/evel/evel-library/code/VESreporting_vFW - Sample json based Firewall application that generates measurement event periodically. + +# Info on evel Library +This library supports following events. The corresponding factory functions to generate that event is also mentioned against it +- Faults - ::evel_new_fault +- Heartbeat - ::evel_new_heartbeat +- Measurements - ::evel_new_measurement +- State Change - ::evel_new_state_change +- Syslog - ::evel_new_syslog +- Other - ::evel_new_other +- Mobile Flow - ::evel_new_mobile_flow +- Sipsingnaling - ::evel_new_signaling +- Threshold Crossing Alert - ::evel_new_threshold_cross +- Voice Quality - ::evel_new_voice_quality + +# Setting the environment +Install gcc, libcurl3-dev packages as below + + sudo apt-get install gcc + sudo apt-get install libcurl3-dev + +Clone the code from demo repository + +#Compile VES library + Go to /demo/vnfs/VES5.0/evel/evel-library/bldjobs directory and run the below commands + make all ==> to create the VES library + make package ==> to create the VES package if needed + + FYI - 'make install' can also be given to make a package and install the package in another machine - see /demo/vnfs/VES5.0/evel/evel-library/bldjobs/Makefile for more details + + After compilation VES libraries are generated and are available at below location + /demo/vnfs/VES5.0/evel/evel-library/libs/x86_64 + +#Loading VES the library + Go to /demo/vnfs/VES5.0/evel/evel-library/libs/x86_64 directory and run below commands + sudo cp libevel.so /usr/lib + sudo ldconfig + +#Compiling agent code + After successful compiling of VES library and loading the library, go to agent directory and run 'make all' +For json heartbeat agent + > cd /demo/vnfs/VES5.0/evel/evel-library/VESreporting_HB + > make all + +For all other jason based agents (VESreporting_fault, VESreporting_syslog and VESreporting_vFW) also, the compilation to be carried out in the same manner as mentioned above. + +But for agents in VESreporting_vFW5.0 and VESreporting_vLB5.0, special care to be taken as below + - Copy the contents of the directory into ~/demo/vnfs/VES5.0/evel/evel-library/VESreporting directory + - run 'make all' to create an executable (alternatively, this agent gets compiled during compilation of evel library when VESreporting directory has the agent code. + +#Run the agent + - run the application using go-client.sh command in the agent directory as below + > sudo chmod +x go-client.sh + > sudo ./go-client.sh + +# Agent building guide + +Each application that wants to send events would call evel_initialize() function to initialize the parameter with evel library. For more details about the parameters passed, see the VES5.0/evel/evel-library/code/evel_library/evel.h file. The public APIs to the library are defined in evel.h + +EVEL_ERR_CODES evel_initialize(const char * const fqdn, + int port, + const char * const bakup_fqdn, + int bakup_port, + const char * const path, + const char * const topic, + int ring_buf_size, + int secure, + const char * const cert_file_path, + const char * const key_file_path, + const char * const ca_info, + const char * const ca_file_path, + long verify_peer, + long verify_host, + const char * const username, + const char * const password, + const char * const bakup_username, + const char * const bakup_password, + const char * const source_ip, + const char * const bakup_source_ip, + EVEL_SOURCE_TYPES source_type, + const char * const role, + int verbosity + ) { + fprintf(stderr, "Failed to initialize the EVEL library!!!"); + exit(-1); + } + +After successful running of evel_initialize() API, call the APIs to generate the events. + +For fault event generation, below APIs would be called. For other events see the APIs listed in VES5.0/evel/evel-library/code/evel_library/evel.h + + EVENT_FAULT * fault = evel_new_fault("Fault_vFW-ATT-LinkdownError", + "fault0001", + "My alarm condition", + "It broke very badly", + EVEL_PRIORITY_NORMAL, + EVEL_SEVERITY_MAJOR, + EVEL_SOURCE_HOST, + EVEL_VF_STATUS_PREP_TERMINATE); + if (fault != NULL) + { + evel_fault_type_set(fault, "Bad things happen..."); + evel_fault_interface_set(fault, "My Interface Card"); + evel_fault_addl_info_add(fault, "name1", "value1"); + evel_fault_addl_info_add(fault, "name2", "value2"); + evel_rc = evel_post_event((EVENT_HEADER *)fault); + if (evel_rc != EVEL_SUCCESS) + { + EVEL_ERROR("Post failed %d (%s)", evel_rc, evel_error_string()); + } + } + -- cgit 1.2.3-korg