AETHER-1751 Add CI/CD
Change-Id: I29daba05c7f261e159384f94381bb8a397bd0400
diff --git a/Makefile b/Makefile
new file mode 100644
index 0000000..fca7084
--- /dev/null
+++ b/Makefile
@@ -0,0 +1,2 @@
+.DEFAULT:
+ make -C edge-monitoring-server $@
diff --git a/VERSION b/VERSION
new file mode 100644
index 0000000..394f84e
--- /dev/null
+++ b/VERSION
@@ -0,0 +1 @@
+0.6.2-dev
diff --git a/edge-monitoring-server/.gitignore b/edge-monitoring-server/.gitignore
new file mode 100644
index 0000000..c39a109
--- /dev/null
+++ b/edge-monitoring-server/.gitignore
@@ -0,0 +1,6 @@
+# Copyright 2020-present Open Networking Foundation
+#
+# SPDX-License-Identifier: LicenseRef-ONF-Member-Only-1.0
+
+*.pyc
+__pycache__/
diff --git a/edge-monitoring/Dockerfile.server b/edge-monitoring-server/Dockerfile.server
similarity index 100%
rename from edge-monitoring/Dockerfile.server
rename to edge-monitoring-server/Dockerfile.server
diff --git a/edge-monitoring/Makefile b/edge-monitoring-server/Makefile
similarity index 91%
rename from edge-monitoring/Makefile
rename to edge-monitoring-server/Makefile
index f199fa4..9cbcef0 100644
--- a/edge-monitoring/Makefile
+++ b/edge-monitoring-server/Makefile
@@ -22,7 +22,7 @@
SHELL = bash -e -o pipefail
# Variables
-VERSION ?= $(shell cat ./VERSION)
+VERSION ?= $(shell cat ../VERSION)
VENVDIR := venv
## Docker related
@@ -57,9 +57,11 @@
docker-push:
docker push ${ADAPTER_IMAGENAME}
-${VENVDIR}:
- virtualenv --python=python3 ${VENVDIR};\
+${VENVDIR}: requirements.txt
+ python3 -m venv ${VENVDIR};\
source ./${VENVDIR}/bin/activate ; set -u ;\
+ pip install --upgrade pip wheel setuptools;\
+ python3 --version; pip --version; \
pip install -r requirements.txt
clean:
diff --git a/edge-monitoring/edge_maintenance_agent.py b/edge-monitoring-server/edge_maintenance_agent.py
similarity index 100%
rename from edge-monitoring/edge_maintenance_agent.py
rename to edge-monitoring-server/edge_maintenance_agent.py
diff --git a/edge-monitoring/edge_monitoring_server.py b/edge-monitoring-server/edge_monitoring_server.py
similarity index 95%
rename from edge-monitoring/edge_monitoring_server.py
rename to edge-monitoring-server/edge_monitoring_server.py
index aa4d7e5..6f74a53 100755
--- a/edge-monitoring/edge_monitoring_server.py
+++ b/edge-monitoring-server/edge_monitoring_server.py
@@ -13,6 +13,7 @@
from flask import Flask, jsonify, abort, request, Response
import prometheus_client as prom
import jsonschema
+from logging.config import dictConfig
# URL of maintenance calendar
SECRET_ICAL_URL = os.environ.get("SECRET_ICAL_URL")
@@ -24,6 +25,22 @@
# Move to "no result" status if we don't hear from agent for this many seconds
NO_RESULT_THRESHOLD = 720
+dictConfig({
+ 'version': 1,
+ 'formatters': {'default': {
+ 'format': '[%(asctime)s] %(levelname)s %(message)s',
+ }},
+ 'handlers': {'wsgi': {
+ 'class': 'logging.StreamHandler',
+ 'stream': 'ext://flask.logging.wsgi_errors_stream',
+ 'formatter': 'default'
+ }},
+ 'root': {
+ 'level': 'INFO',
+ 'handlers': ['wsgi']
+ }
+})
+
app = Flask(__name__)
edgeSchema = {
@@ -195,7 +212,7 @@
es = events(SECRET_ICAL_URL, start = now)
process_all_day_events(es)
except Exception as e:
- print(e)
+ app.logger.error(e)
else:
for edge in edges:
if 'maintenance' not in edge:
@@ -367,7 +384,7 @@
try:
jsonschema.validate(instance=request.json, schema=edgeSchema)
except jsonschema.exceptions.ValidationError as err:
- print(err)
+ app.logger.warn(err)
abort(400)
req_edge = {
@@ -406,7 +423,7 @@
edge = [edge for edge in edges if edge['name'] == req_edge['name']]
if len(edge) == 0:
- print("new edge request " + req_edge['name'])
+ app.logger.info("new edge request " + req_edge['name'])
edges.append(req_edge)
else:
edge[0]['status']['control_plane'] = req_edge['status']['control_plane']
@@ -423,7 +440,7 @@
@app.route('/edges/<string:name>', methods=['DELETE'])
@app.route('/testresults/<string:name>', methods=['DELETE'])
def delete_edge(name):
- print("delete edge request " + name)
+ app.logger.info("delete edge request " + name)
result = False
for i in range(len(edges)):
if edges[i]['name'] == name:
@@ -438,7 +455,7 @@
if __name__ == '__main__':
if SECRET_ICAL_URL and AETHER_ENV:
- print(" * Starting maintenance calendar polling thread (Aether env: %s)" % AETHER_ENV)
+ app.logger.info(" * Starting maintenance calendar polling thread (Aether env: %s)" % AETHER_ENV)
t = threading.Thread(target=pull_maintenance_events)
t.start()
app.run(debug=True, host='0.0.0.0', port=80)
diff --git a/edge-monitoring/requirements.txt b/edge-monitoring-server/requirements.txt
similarity index 68%
rename from edge-monitoring/requirements.txt
rename to edge-monitoring-server/requirements.txt
index bc3f77b..0f9f0f8 100644
--- a/edge-monitoring/requirements.txt
+++ b/edge-monitoring-server/requirements.txt
@@ -3,3 +3,4 @@
pytz
icalevents
jsonschema
+unittest-xml-reporting
diff --git a/edge-monitoring/test_edge_monitoring_server.py b/edge-monitoring-server/test_edge_monitoring_server.py
similarity index 98%
rename from edge-monitoring/test_edge_monitoring_server.py
rename to edge-monitoring-server/test_edge_monitoring_server.py
index e326a06..d86cd4c 100755
--- a/edge-monitoring/test_edge_monitoring_server.py
+++ b/edge-monitoring-server/test_edge_monitoring_server.py
@@ -458,5 +458,6 @@
self.assertFalse('ace-menlo-pixel' in data)
if __name__ == '__main__':
- suite = unittest.TestLoader().loadTestsFromTestCase(TestEdgeMonitoringServer)
- unittest.TextTestRunner(verbosity=2).run(suite)
+ import xmlrunner
+ with open('results.xml', 'wb') as output:
+ unittest.main(testRunner=xmlrunner.XMLTestRunner(verbosity=2, output=output))
\ No newline at end of file
diff --git a/edge-monitoring/VERSION b/edge-monitoring/VERSION
deleted file mode 100644
index ee6cdce..0000000
--- a/edge-monitoring/VERSION
+++ /dev/null
@@ -1 +0,0 @@
-0.6.1