diff options
author | 2020-04-27 21:53:00 +0000 | |
---|---|---|
committer | 2020-04-28 14:52:48 +0000 | |
commit | 08eddb8df44beacbb7b4047e313a771292030ccc (patch) | |
tree | ede637e3c6725bfd999d115b6ad330f1caa2602f /vnfs/VESreporting_vFW5.0_DANOS/evel/evel-library/bldjobs | |
parent | 6610dc1180d0dfbe30a737306d0f059b463aeb26 (diff) |
Initial VES for DANOS vRouter
1. Create vpp_measurement_reporter that use DANOS configd query
to retrieve statistics and libevel to transmit
2. Copy VES evel library to build a debian package under
vpp_measurement_report
3. Add debian files to create a vpp_measurement_reporter + libevel
debian package
4. Add debian install and systemctl start files
5. Add instruction to build VES reporter debian package (that will
include libevel.so)
6. Add instructions to build DANOS ISO with VES reporter debian
package and creating glance image
Issue-ID: INT-1566
Change-Id: If18f16525f07f1b6bae0fc105e0452263b4bf661
Signed-off-by: Brian Freeman <bf1936@att.com>
Diffstat (limited to 'vnfs/VESreporting_vFW5.0_DANOS/evel/evel-library/bldjobs')
-rw-r--r-- | vnfs/VESreporting_vFW5.0_DANOS/evel/evel-library/bldjobs/Makefile | 297 |
1 files changed, 297 insertions, 0 deletions
diff --git a/vnfs/VESreporting_vFW5.0_DANOS/evel/evel-library/bldjobs/Makefile b/vnfs/VESreporting_vFW5.0_DANOS/evel/evel-library/bldjobs/Makefile new file mode 100644 index 00000000..09ae2eb5 --- /dev/null +++ b/vnfs/VESreporting_vFW5.0_DANOS/evel/evel-library/bldjobs/Makefile @@ -0,0 +1,297 @@ +#*************************************************************************//** +#* +#* Copyright © 2017 AT&T Intellectual Property. 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. +#* +#****************************************************************************/ + +#****************************************************************************** +# The ECOMP Vendor Event Listener (EVEL) API client library Makefile. +# +# Make the various targets associated with housekeeping functions as part of +# Event Reporting library. +# +# NOTE: because Makefiles assign special meaning to the TAB character you +# will need to set tabstops to 2 characters for the layout to look OK. +#****************************************************************************/ + +ARCH=$(shell getconf LONG_BIT) +MACHINE_ARCH=$(shell uname -m) +CODE_ROOT=$(CURDIR)/.. +EVELLIB_ROOT=$(CODE_ROOT)/code/evel_library +EVELUNIT_ROOT=$(CODE_ROOT)/code/evel_unit +EVELTRAINING_ROOT=$(CODE_ROOT)/code +LIBS_DIR=$(CODE_ROOT)/libs/$(MACHINE_ARCH) +OUTPUT_DIR=$(CODE_ROOT)/output/$(MACHINE_ARCH) +DOCS_ROOT=$(CODE_ROOT)/docs +CC=gcc +SCP=scp +SSH=ssh +JAVA=java +DOXYGEN=doxygen +PLANTUML=/usr/local/bin/plantuml.jar +PLANTFLAGS=-tsvg + +#****************************************************************************** +# Standard compiler flags. * +#****************************************************************************** +CPPFLAGS=-I $(EVELLIB_ROOT) +ifeq ($(MACHINE_ARCH), aarch64) + CFLAGS=-Wall -Wextra -march=native -g -fPIC + LIBCFLAGS=-Wall -Wextra -march=native -g -shared -fPIC +else + CFLAGS=-Wall -Wextra -m$(ARCH) -g -fPIC + LIBCFLAGS=-Wall -Wextra -m$(ARCH) -g -shared -fPIC +endif + +#****************************************************************************** +# The testbed is a VM instance where we can install the EVEL example under * +# CentOS. * +#****************************************************************************** +VNF_TESTBED_CENTOS=172.18.152.180 +VNF_TESTBED_CENTOS_USER=centos +TESTBED_CENTOS_DOWNLOAD_PATH=/home/centos/download/evel_lib +TESTBED_CENTOS_INSTALL_PATH=/home/centos/evel + +#****************************************************************************** +# The testbed is a VM instance where we can install the EVEL example under * +# Ubuntu. * +#****************************************************************************** +VNF_TESTBED_UBUNTU=172.18.152.179 +VNF_TESTBED_UBUNTU_USER=ubuntu +TESTBED_UBUNTU_DOWNLOAD_PATH=/home/ubuntu/Downloads/evel_lib +TESTBED_UBUNTU_INSTALL_PATH=/home/ubuntu/evel + +#****************************************************************************** +# The test-collector is where we can send events to be consumed and checked * +# during tests. * +#****************************************************************************** +VNF_COLLECTOR_HOST=172.18.152.185 +VNF_COLLECTOR_PORT=30000 + +#****************************************************************************** +# A documentation server used by the team where we can install documentation. * +#****************************************************************************** +TEAM_DOCS_SERVER=covlx8 +DOCS_SERVER_PATH=/var/www/html/evel + +#****************************************************************************** +# Implicit rule to make dependency files. Recipe copied from Gnu docs at: * +# https://www.gnu.org/software/make/manual/html_node/Automatic-Prerequisites.html * +#****************************************************************************** +%.d: %.c + @echo Making dependency file $(notdir $@) for $(notdir $<) + @set -e; rm -f $@; \ + $(CC) -MM -MT $(<:.c=.o) $(CPPFLAGS) $< > $@.$$$$; \ + sed 's,\($*\)\.o[ :]*,\1.o $@ : ,g' < $@.$$$$ > $@; \ + rm -f $@.$$$$ + +#****************************************************************************** +# Implicit rule to make object files. * +#****************************************************************************** +%.o: %.c + @echo Making $(notdir $@) from $(notdir $<) + @$(CC) $(CPPFLAGS) $(CFLAGS) -c -o $@ $< + +#****************************************************************************** +# Implicit rule to make diagram files using PlantUML. * +#****************************************************************************** +%.svg : %.plantuml + @echo Making $(notdir $@) + $(JAVA) -jar $(PLANTUML) $(PLANTFLAGS) $< + +api: api_library + +all: api_library + +clean: api_library_clean \ + evel_unit_clean + +install: evel_install_centos evel_install_ubuntu + +test: evel_test_centos evel_test_ubuntu + +docs: docs_clean doxygen_docs + + +#****************************************************************************** +# Build the EVEL libraries. * +#****************************************************************************** +API_SOURCES=$(EVELLIB_ROOT)/evel.c \ + $(EVELLIB_ROOT)/metadata.c \ + $(EVELLIB_ROOT)/ring_buffer.c \ + $(EVELLIB_ROOT)/double_list.c \ + $(EVELLIB_ROOT)/hashtable.c \ + $(EVELLIB_ROOT)/evel_event.c \ + $(EVELLIB_ROOT)/evel_fault.c \ + $(EVELLIB_ROOT)/evel_mobile_flow.c \ + $(EVELLIB_ROOT)/evel_option.c \ + $(EVELLIB_ROOT)/evel_jsonobject.c \ + $(EVELLIB_ROOT)/evel_other.c \ + $(EVELLIB_ROOT)/evel_json_buffer.c \ + $(EVELLIB_ROOT)/evel_reporting_measurement.c \ + $(EVELLIB_ROOT)/evel_heartbeat_fields.c \ + $(EVELLIB_ROOT)/evel_sipsignaling.c \ + $(EVELLIB_ROOT)/evel_scaling_measurement.c \ + $(EVELLIB_ROOT)/evel_state_change.c \ + $(EVELLIB_ROOT)/evel_strings.c \ + $(EVELLIB_ROOT)/evel_syslog.c \ + $(EVELLIB_ROOT)/evel_throttle.c \ + $(EVELLIB_ROOT)/evel_internal_event.c \ + $(EVELLIB_ROOT)/evel_event_mgr.c \ + $(EVELLIB_ROOT)/evel_threshold_cross.c \ + $(EVELLIB_ROOT)/evel_voicequality.c \ + $(EVELLIB_ROOT)/evel_logging.c \ + $(EVELLIB_ROOT)/evel_batch.c \ + $(EVELLIB_ROOT)/jsmn.c +API_OBJECTS=$(API_SOURCES:.c=.o) +-include $(API_SOURCES:.c=.d) + +api_library: $(LIBS_DIR)/libevel.so \ + $(LIBS_DIR)/libevel.a + +$(LIBS_DIR)/libevel.a: $(API_OBJECTS) + @echo Linking API Static Library + @$(CC) $(LIBCFLAGS) -o $@ $+ + +$(LIBS_DIR)/libevel.so: $(API_OBJECTS) + @echo Linking API Shared Library + @$(CC) $(LIBCFLAGS) -L $(QLIBCLIBSDIR) -lqlibc -o $@ $+ + +api_library_clean: + @echo Cleaning API Library + @$(RM) $(LIBS_DIR)/libevel.so + @$(RM) $(API_OBJECTS) + @$(RM) $(EVELLIB_ROOT)/*.d + +#****************************************************************************** +# Build the EVEL library unit test. * +#****************************************************************************** +UNIT_SOURCES=$(EVELUNIT_ROOT)/evel_unit.c +UNIT_OBJECTS=$(UNIT_SOURCES:.c=.o) +-include $(UNIT_SOURCES:.c=.d) + +evel_unit: api_library \ + $(OUTPUT_DIR)/evel_unit + +$(OUTPUT_DIR)/evel_unit: $(UNIT_OBJECTS) + @echo Linking EVEL unit test + $(CC) $(CPPFLAGS) $(CFLAGS) -o $@ \ + -L $(LIBS_DIR) \ + $(UNIT_OBJECTS) \ + -level \ + -lpthread \ + -lcurl + +evel_unit_clean: + @echo Cleaning EVEL unit test + @$(RM) $(OUTPUT_DIR)/evel_unit + @$(RM) $(API_OBJECTS) + @$(RM) $(UNIT_OBJECTS) + @$(RM) $(EVELLIB_ROOT)/*.d + @$(RM) $(EVELUNIT_ROOT)/*.d + + +#****************************************************************************** +# Copy the EVEL demo onto the CentOS testbed as a package and build it. * +#****************************************************************************** +evel_install_centos: delivery + @echo Installing EVEL library on CentOS testbed... + @$(SSH) $(VNF_TESTBED_CENTOS_USER)@$(VNF_TESTBED_CENTOS) \ + rm -rf $(TESTBED_CENTOS_DOWNLOAD_PATH) \; \ + mkdir -p $(TESTBED_CENTOS_DOWNLOAD_PATH) \; \ + mkdir -p $(TESTBED_CENTOS_INSTALL_PATH) + @$(SCP) -r $(CODE_ROOT)/output/evel-library-package.tgz \ + $(VNF_TESTBED_CENTOS_USER)@$(VNF_TESTBED_CENTOS):$(TESTBED_CENTOS_DOWNLOAD_PATH) + @$(SSH) $(VNF_TESTBED_CENTOS_USER)@$(VNF_TESTBED_CENTOS) \ + tar zx --directory $(TESTBED_CENTOS_INSTALL_PATH) \ + --file $(TESTBED_CENTOS_DOWNLOAD_PATH)/evel-library-package.tgz + @echo Making EVEL library on testbed... + @$(SSH) $(VNF_TESTBED_CENTOS_USER)@$(VNF_TESTBED_CENTOS) \ + cd $(TESTBED_CENTOS_INSTALL_PATH)/bldjobs \; \ + make clean all + +#****************************************************************************** +# Copy the EVEL demo onto the Ubuntu testbed as a package and build it. * +#****************************************************************************** +evel_install_ubuntu: delivery + @echo Installing EVEL library on Ubuntu testbed... + @$(SSH) $(VNF_TESTBED_UBUNTU_USER)@$(VNF_TESTBED_UBUNTU) \ + rm -rf $(TESTBED_UBUNTU_DOWNLOAD_PATH) \; \ + mkdir -p $(TESTBED_UBUNTU_DOWNLOAD_PATH) \; \ + mkdir -p $(TESTBED_UBUNTU_INSTALL_PATH) + @$(SCP) -r $(CODE_ROOT)/output/evel-library-package.tgz \ + $(VNF_TESTBED_UBUNTU_USER)@$(VNF_TESTBED_UBUNTU):$(TESTBED_UBUNTU_DOWNLOAD_PATH) + @$(SSH) $(VNF_TESTBED_UBUNTU_USER)@$(VNF_TESTBED_UBUNTU) \ + tar zx --directory $(TESTBED_UBUNTU_INSTALL_PATH) \ + --file $(TESTBED_UBUNTU_DOWNLOAD_PATH)/evel-library-package.tgz + @echo Making EVEL library on testbed... + @$(SSH) $(VNF_TESTBED_UBUNTU_USER)@$(VNF_TESTBED_UBUNTU) \ + cd $(TESTBED_UBUNTU_INSTALL_PATH)/bldjobs \; \ + make clean all + +#****************************************************************************** +# Make sure that the Centos platform is up to date and then run the software * +# against a test collector. Validating correct operation is not presently * +# automated. * +#****************************************************************************** +evel_test_centos: evel_install_centos + @echo Testing EVEL Demo application on CentOS... + @$(SSH) $(VNF_TESTBED_CENTOS_USER)@$(VNF_TESTBED_CENTOS) \ + source .bash_profile \; \ + $(TESTBED_CENTOS_INSTALL_PATH)/output/$(MACHINE_ARCH)/evel_demo \ + --fqdn $(VNF_COLLECTOR_HOST) \ + --port $(VNF_COLLECTOR_PORT) \ + --verbose + +#****************************************************************************** +# Make sure that the Ubuntu platform is up to date and then run the software * +# against a test collector. Validating correct operation is not presently * +# automated. * +#****************************************************************************** +evel_test_ubuntu: evel_install_ubuntu + @echo Testing EVEL Demo application on Ubuntu... + @$(SSH) $(VNF_TESTBED_UBUNTU_USER)@$(VNF_TESTBED_UBUNTU) \ + source .profile \; \ + $(TESTBED_UBUNTU_INSTALL_PATH)/output/$(MACHINE_ARCH)/evel_demo \ + --fqdn $(VNF_COLLECTOR_HOST) \ + --port $(VNF_COLLECTOR_PORT) \ + --verbose + +#****************************************************************************** +# Making a clean delivery has some very specific dependencies which are order * +# dependent, so we recursively make a series of targets to do a clean build * +# of all of the required deliverables and then finally zipping up. * +#****************************************************************************** +delivery: + @$(MAKE) -s delivery_baseline + @$(MAKE) -s package + +delivery_baseline: docs + +#****************************************************************************** +# Package the software for delivery. * +#****************************************************************************** +package: api_library_clean \ + evel_unit_clean + @echo Packaging the software for delivery + @cd $(CODE_ROOT) && tar cfz output/evel-library-package.tgz bldjobs \ + code \ + docs \ + libs/$(MACHINE_ARCH)/README \ + output/$(MACHINE_ARCH)/README \ + readme.md + +package_clean: + @echo Clean delivery packages + @$(RM) $(OUTPUTDIR)/*.tgz |