aboutsummaryrefslogtreecommitdiffstats
path: root/vnfs/readme.md
diff options
context:
space:
mode:
Diffstat (limited to 'vnfs/readme.md')
-rw-r--r--vnfs/readme.md145
1 files changed, 145 insertions, 0 deletions
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());
+ }
+ }
+