summaryrefslogtreecommitdiffstats
path: root/ice-server
diff options
context:
space:
mode:
authorMickael JEZEQUEL <mickael.jezequel@orange.com>2018-03-09 17:44:34 +0100
committerMickael JEZEQUEL <mickael.jezequel@orange.com>2018-03-15 13:45:50 +0100
commitb071b23b024a07b5e0d9f1c915468384369e26af (patch)
treeac1ca80e07e1bf2bdffb79d26c37931348dd297a /ice-server
parentdd79a38607c40db86de950b4c1ecdff443fe68f4 (diff)
Dockerize rest API for ICE tests
Change-Id: I8928203bb76a20fb7d10fd05d06151e2c6b7a934 Issue-ID: VNFSDK-214 Signed-off-by: Mickael JEZEQUEL <mickael.jezequel@orange.com>
Diffstat (limited to 'ice-server')
-rw-r--r--ice-server/heat_test/app.py53
-rw-r--r--ice-server/heat_test/default_settings.cfg13
-rw-r--r--ice-server/heat_test/default_settings.py9
-rw-r--r--ice-server/heat_test/heat_validator.py7
-rw-r--r--ice-server/heat_test/test/fixture/heat_template_empty.zip (renamed from ice-server/heat_test/test/fixture/test.zip)bin166 -> 166 bytes
-rw-r--r--ice-server/heat_test/test/fixture/heat_template_ok.zipbin0 -> 1120 bytes
6 files changed, 62 insertions, 20 deletions
diff --git a/ice-server/heat_test/app.py b/ice-server/heat_test/app.py
index c61150a..97c32a9 100644
--- a/ice-server/heat_test/app.py
+++ b/ice-server/heat_test/app.py
@@ -1,18 +1,19 @@
#!flask/bin/python
-import argparse
+import atexit
import logging
-import requests
import connexion
+import requests
from connexion.resolver import RestyResolver
+config = ''
def create_app():
logging.basicConfig(level=logging.INFO, format='%(asctime)s - %(levelname)s - %(message)s')
app = connexion.App(__name__, specification_dir='swagger/')
# load default config
- app.app.config.from_object("default_settings")
+ app.app.config.from_pyfile("default_settings.cfg")
app.app.config.from_envvar('ICE_SETTINGS', silent=True)
app.add_api('ice_api.yaml', swagger_ui=app.app.config['DEBUG'], resolver=RestyResolver('ice_validator'))
@@ -32,15 +33,51 @@ def start_app(app):
logging.info("######################################")
logging.info("starting server")
logging.info("######################################")
+ global config
+ config = app.app.config
+ msb_register()
+ atexit.register(msb_unregister)
app.run(port=app.app.config['ICE_PORT'], debug=app.app.config['DEBUG'])
- # register service in MSB
+
+def msb_register():
+ try:
+ msb_url = config['MSB_URL']
+ ice_json = {
+ "serviceName": config['ICE_SERVICE_NAME'],
+ "version": config['ICE_VERSION'],
+ "url": "/onapapi/ice/v1",
+ "protocol": "REST",
+ "visualRange": "1",
+ "nodes": [
+ {
+ "ip": config['ICE_ADDR'],
+ "port": config['ICE_PORT'],
+ "ttl": 0
+ }
+ ]
+ }
+ resp = requests.post(msb_url, json=ice_json)
+ if resp.status_code == 201:
+ global registered
+ registered = True
+ logging.info("registration to '%s' done", msb_url)
+ else:
+ logging.info("registration to '%s' failed; status_code = '%s'", msb_url, resp.status_code)
+ except:
+ logging.info("registration to '%s' failed", msb_url)
+
+
+def msb_unregister():
try:
- msb_url = app.app.config['MSB_URL']
- requests.get(msb_url)
- logging.info("registration to %s done", msb_url)
+ msb_url = "%s/%s/version/%s" % (config['MSB_URL'], config['ICE_SERVICE_NAME'], config['ICE_VERSION'])
+ resp = requests.delete(msb_url)
+ if resp.status_code == 200:
+ logging.info("unregistration from '%s' done", msb_url)
+ else:
+ logging.info("unregistration from '%s' failed; status_code = '%s'", msb_url, resp.status_code)
except:
- logging.info("registration to %s failed", msb_url)
+ logging.info("unregistration from '%s' failed", msb_url)
if __name__ == '__main__':
diff --git a/ice-server/heat_test/default_settings.cfg b/ice-server/heat_test/default_settings.cfg
new file mode 100644
index 0000000..3721bbf
--- /dev/null
+++ b/ice-server/heat_test/default_settings.cfg
@@ -0,0 +1,13 @@
+# ICE settings
+DEBUG = True
+ICE_ADDR = "127.0.0.1"
+ICE_PORT = 5000
+ICE_SCRIPT_PATH = '../../validation-scripts/ice_validator'
+ICE_VERSION = "v1"
+ICE_SERVICE_NAME = "vnfsdk-ice"
+
+# MSB settings
+MSB_ADDR = "127.0.0.1"
+MSB_PORT = "80"
+MSB_URL = "http://%s:%s/api/microservices/v1/services" % (MSB_ADDR, MSB_PORT)
+
diff --git a/ice-server/heat_test/default_settings.py b/ice-server/heat_test/default_settings.py
deleted file mode 100644
index d32d039..0000000
--- a/ice-server/heat_test/default_settings.py
+++ /dev/null
@@ -1,9 +0,0 @@
-# ICE settings
-DEBUG = True
-ICE_PORT = 5000
-
-# MSB settings
-MSB_IP = "127.0.0.1"
-MSB_PORT = "80"
-MSB_URL = "http://"+MSB_IP+':'+MSB_PORT+"/api/microservices/v1/services"
-
diff --git a/ice-server/heat_test/heat_validator.py b/ice-server/heat_test/heat_validator.py
index 0cc32a1..d76d275 100644
--- a/ice-server/heat_test/heat_validator.py
+++ b/ice-server/heat_test/heat_validator.py
@@ -7,7 +7,7 @@ import zipfile
from io import StringIO
import pytest
-from flask import (request, jsonify, abort)
+from flask import (request, jsonify, abort, current_app)
class HeatValidator(object):
@@ -49,7 +49,8 @@ class HeatValidator(object):
original_output = sys.stdout
# Assign StringIO so the output is not sent anymore to the console
sys.stdout = StringIO()
- exit_code = pytest.main(['../../validation-scripts/ice_validator',
+ script_path = current_app.config['ICE_SCRIPT_PATH']
+ exit_code = pytest.main([script_path,
'--resultlog=' + tmp_dir + '/result.txt',
'--template-dir', tmp_dir])
with open(tmp_dir + '/result.txt', 'r') as result_file:
@@ -62,7 +63,7 @@ class HeatValidator(object):
except zipfile.BadZipFile:
logging.exception("invalid file")
abort(422, {'status': 4, 'message': 'invalid file'})
- except:
+ except Exception as e:
logging.exception("server error on file")
abort(500, {'status': 3, 'message': 'server error'})
finally:
diff --git a/ice-server/heat_test/test/fixture/test.zip b/ice-server/heat_test/test/fixture/heat_template_empty.zip
index d1e6d99..d1e6d99 100644
--- a/ice-server/heat_test/test/fixture/test.zip
+++ b/ice-server/heat_test/test/fixture/heat_template_empty.zip
Binary files differ
diff --git a/ice-server/heat_test/test/fixture/heat_template_ok.zip b/ice-server/heat_test/test/fixture/heat_template_ok.zip
new file mode 100644
index 0000000..4e89aba
--- /dev/null
+++ b/ice-server/heat_test/test/fixture/heat_template_ok.zip
Binary files differ