aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rwxr-xr-xdocker/docker-entrypoint.sh2
-rwxr-xr-xdocker/instance_config.sh12
-rwxr-xr-xdocker/instance_init.sh56
-rw-r--r--lcm/ns/tests/test_sol_ns_heal_api.py8
-rw-r--r--lcm/ns/tests/test_sol_ns_scale_api.py2
-rw-r--r--lcm/ns/tests/test_sol_ns_terminate_api.py5
-rw-r--r--lcm/ns/urls.py6
-rw-r--r--lcm/ns/views/sol/health_check.py24
8 files changed, 70 insertions, 45 deletions
diff --git a/docker/docker-entrypoint.sh b/docker/docker-entrypoint.sh
index 814d1798..e116c33b 100755
--- a/docker/docker-entrypoint.sh
+++ b/docker/docker-entrypoint.sh
@@ -1,5 +1,7 @@
#!/bin/bash
+find /service -name '*.sh'|xargs chmod a+x
+
if [ -z "$SERVICE_IP" ]; then
export SERVICE_IP=`hostname -i`
fi
diff --git a/docker/instance_config.sh b/docker/instance_config.sh
index 185194cd..524d4e7f 100755
--- a/docker/instance_config.sh
+++ b/docker/instance_config.sh
@@ -29,14 +29,16 @@ fi
# Configure MYSQL
MYSQL_IP=`echo $MYSQL_ADDR | cut -d: -f 1`
MYSQL_PORT=`echo $MYSQL_ADDR | cut -d: -f 2`
-MYSQL_USER=`echo $MYSQL_AUTH | cut -d: -f 1`
-MYSQL_ROOT_PASSWORD=`echo $MYSQL_AUTH | cut -d: -f 2
-
echo "MYSQL_ADDR=$MYSQL_ADDR"
+
+if [ $REDIS_ADDR ]; then
+ REDIS_IP=`echo $REDIS_ADDR | cut -d: -f 1`
+else
+ REDIS_IP="$MYSQL_ADDR"
+fi
+
sed -i "s|DB_IP.*|DB_IP = '$MYSQL_IP'|" vfc/nfvo/lcm/lcm/pub/config/config.py
sed -i "s|DB_PORT.*|DB_PORT = $MYSQL_PORT|" vfc/nfvo/lcm/lcm/pub/config/config.py
sed -i "s|REDIS_HOST.*|REDIS_HOST = '$MYSQL_IP'|" vfc/nfvo/lcm/lcm/pub/config/config.py
-sed -i "s|DB_USER.*|DB_USER = '$MYSQL_USER'|" vfc/nfvo/lcm/lcm/pub/config/config.py
-sed -i "s|DB_PASSWD.*|DB_PASSWD = '$MYSQL_ROOT_PASSWORD'|" vfc/nfvo/lcm/lcm/pub/config/config.py
cat vfc/nfvo/lcm/lcm/pub/config/config.py
diff --git a/docker/instance_init.sh b/docker/instance_init.sh
index 70e83016..6c289657 100755
--- a/docker/instance_init.sh
+++ b/docker/instance_init.sh
@@ -1,52 +1,34 @@
#/bin/bash
-mkdir -p /service/vfc/nfvo/lcm/resources/bin/logs
-mkdir -p /var/log/onap/vfc/nslcm/
-if [ ! -f /service/vfc/nfvo/lcm/resources/bin/logs/django.log ]; then
- touch /service/vfc/nfvo/lcm/resources/bin/logs/django.log
-else
- echo >/service/vfc/nfvo/lcm/resources/bin/logs/django.log
-fi
-if [ ! -f /var/log/onap/vfc/nslcm/runtime_nslcm.log ]; then
- touch /var/log/onap/vfc/nslcm/runtime_nslcm.log
+MYSQL_IP=`echo $MYSQL_ADDR | cut -d: -f 1`
+MYSQL_PORT=`echo $MYSQL_ADDR | cut -d: -f 2`
+
+if [ $MYSQL_AUTH ]; then
+ MYSQL_ROOT_USER=`echo $MYSQL_AUTH | cut -d: -f 1`
+ MYSQL_ROOT_PASSWORD=`echo $MYSQL_AUTH | cut -d: -f 2`
else
- echo >/var/log/onap/vfc/nslcm/runtime_nslcm.log
+ MYSQL_ROOT_USER="root"
+ MYSQL_ROOT_PASSWORD="root"
fi
-MYSQL_IP=`echo $MYSQL_ADDR | cut -d: -f 1`
-MYSQL_PORT=`echo $MYSQL_ADDR | cut -d: -f 2`
-MYSQL_USER=`echo $MYSQL_AUTH | cut -d: -f 1`
-MYSQL_ROOT_PASSWORD=`echo $MYSQL_AUTH | cut -d: -f 2`
function create_database {
cd /service/vfc/nfvo/lcm/resources/bin
- bash initDB.sh $MYSQL_USER $MYSQL_ROOT_PASSWORD $MYSQL_PORT $MYSQL_IP
- man_path=/service/vfc/nfvo/lcm
- tab=`mysql -u${MYSQL_USER} -p${MYSQL_ROOT_PASSWORD} -P${MYSQL_PORT} -h${MYSQL_IP} -e "SELECT count(TABLE_NAME) FROM information_schema.TABLES WHERE TABLE_SCHEMA='vfcnfvolcm';"`
- tab1=`echo $tab |awk '{print $2}'`
-
- if [ $tab1 -eq 0 ] ; then
-
- echo "TABLE NOT EXISTS, START MIGRATE"
- python $man_path/manage.py makemigrations database && python $man_path/manage.py migrate database &
- wait
- tab2=`mysql -u${MYSQL_USER} -p${MYSQL_ROOT_PASSWORD} -P${MYSQL_PORT} -h${MYSQL_IP} -e "SELECT count(TABLE_NAME) FROM information_schema.TABLES WHERE TABLE_SCHEMA='vfcnfvolcm';"`
- tab3=`echo $tab2|awk '{print $2}'`
- if [ $tab3 -gt 0 ] ; then
- echo "TABLE CREATE uUCCESSFUL"
- fi
-else
- echo "table already existed"
- exit 1
-fi
+ bash initDB.sh $MYSQL_ROOT_USER $MYSQL_ROOT_PASSWORD $MYSQL_PORT $MYSQL_IP
+
}
+function migrate_database {
+ cd /service/vfc/nfvo/lcm
+ python manage.py makemigrations database
+ python manage.py migrate
+}
-if [ ! -f /service/vfc/nfvo/lcm/docker/db.txt ]; then
- echo 1 > /service/vfc/nfvo/lcm/docker/db.txt
+cd /service
+if [ ! -f dbexist.txt ]; then
+ echo 1 > dbexist.txt
create_database
-else
- echo "database already existed"
+ migrate_database
fi
diff --git a/lcm/ns/tests/test_sol_ns_heal_api.py b/lcm/ns/tests/test_sol_ns_heal_api.py
index 8ff4ced5..ebd8ba0d 100644
--- a/lcm/ns/tests/test_sol_ns_heal_api.py
+++ b/lcm/ns/tests/test_sol_ns_heal_api.py
@@ -13,6 +13,7 @@
# limitations under the License.
import json
+import uuid
import mock
from django.test import Client
@@ -28,7 +29,8 @@ from lcm.pub.utils.jobutil import JobUtil, JOB_TYPE
class TestHealNsApi(TestCase):
def setUp(self):
self.url = "/api/nslcm/v1/ns_instances/%s/heal"
- self.ns_inst_id = '1'
+ # self.ns_inst_id = '1'
+ self.ns_inst_id = str(uuid.uuid4())
self.nf_inst_id = '1'
self.nf_uuid = '1-1-1'
@@ -93,6 +95,8 @@ class TestHealNsApi(TestCase):
self.assertEqual(status.HTTP_202_ACCEPTED, response.status_code, response.data)
self.assertIsNotNone(response.data)
self.assertIsNotNone(response['Location'])
+ response = self.client.get(response['Location'], format='json')
+ self.assertEqual(response.status_code, status.HTTP_200_OK)
# add healNsData
@@ -117,6 +121,8 @@ class TestHealNsApi(TestCase):
response = self.client.post(self.url % self.ns_inst_id, data=data)
self.assertEqual(status.HTTP_202_ACCEPTED, response.status_code, response.data)
self.assertIsNotNone(response['Location'])
+ response = self.client.get(response['Location'], format='json')
+ self.assertEqual(response.status_code, status.HTTP_200_OK)
@mock.patch.object(NSHealService, "start")
def test_heal_vnf_non_existing_ns(self, mock_start):
diff --git a/lcm/ns/tests/test_sol_ns_scale_api.py b/lcm/ns/tests/test_sol_ns_scale_api.py
index c484a88d..9d4ed938 100644
--- a/lcm/ns/tests/test_sol_ns_scale_api.py
+++ b/lcm/ns/tests/test_sol_ns_scale_api.py
@@ -198,6 +198,8 @@ class TestScaleNsApi(TestCase):
response = self.client.post(self.url % self.ns_inst_id, data=data)
self.failUnlessEqual(status.HTTP_202_ACCEPTED, response.status_code)
self.assertIsNotNone(response['Location'])
+ response = self.client.get(response['Location'], format='json')
+ self.assertEqual(response.status_code, status.HTTP_200_OK)
@mock.patch.object(NSManualScaleService, 'start')
def test_ns_manual_scale_empty_data(self, mock_start):
diff --git a/lcm/ns/tests/test_sol_ns_terminate_api.py b/lcm/ns/tests/test_sol_ns_terminate_api.py
index 44de00e7..5aec52e9 100644
--- a/lcm/ns/tests/test_sol_ns_terminate_api.py
+++ b/lcm/ns/tests/test_sol_ns_terminate_api.py
@@ -25,7 +25,8 @@ class TestTerminateNsApi(TestCase):
def setUp(self):
self.client = Client()
self.url = "/api/nslcm/v1/ns_instances/%s/terminate"
- self.ns_inst_id = '1'
+ # self.ns_inst_id = '1'
+ self.ns_inst_id = str(uuid.uuid4())
self.nf_inst_id = '1'
self.vnffg_id = str(uuid.uuid4())
self.vim_id = str(uuid.uuid4())
@@ -62,6 +63,8 @@ class TestTerminateNsApi(TestCase):
response = self.client.post(self.url % self.ns_inst_id, data=req_data)
self.failUnlessEqual(status.HTTP_202_ACCEPTED, response.status_code)
self.assertIsNotNone(response['Location'])
+ response = self.client.get(response['Location'], format='json')
+ self.assertEqual(response.status_code, status.HTTP_200_OK)
def test_method_not_allowed(self):
response = self.client.put(self.url % '1', data={}, format='json')
diff --git a/lcm/ns/urls.py b/lcm/ns/urls.py
index fd826fab..1e859d3d 100644
--- a/lcm/ns/urls.py
+++ b/lcm/ns/urls.py
@@ -34,6 +34,7 @@ from lcm.ns.views.sol.subscriptions_view import SubscriptionsView
from lcm.ns.views.sol.update_ns_view import UpdateNSView
from lcm.ns.views.sol.scale_ns_views import ScaleNSView
from lcm.ns.views.sol.heal_ns_view import HealNSView
+from lcm.ns.views.sol.health_check import HealthCheckView
urlpatterns = [
# API will be deprecated in the future release
@@ -56,7 +57,10 @@ urlpatterns = [
url(r'^api/nslcm/v1/ns_instances/(?P<ns_instance_id>[0-9a-zA-Z_-]+)/terminate$', TerminateNsView.as_view()),
url(r'^api/nslcm/v1/ns_lcm_op_occs/(?P<lcmopoccid>[0-9a-zA-Z_-]+)$', QuerySingleNsLcmOpOcc.as_view()),
url(r'^api/nslcm/v1/subscriptions$', SubscriptionsView.as_view()),
- url(r'^api/nslcm/v1/ns_lcm_op_occs$', QueryMultiNsLcmOpOccs.as_view())
+ url(r'^api/nslcm/v1/ns_lcm_op_occs$', QueryMultiNsLcmOpOccs.as_view()),
+
+ # health check
+ url(r'^api/nslcm/v1/health_check$', HealthCheckView.as_view())
]
diff --git a/lcm/ns/views/sol/health_check.py b/lcm/ns/views/sol/health_check.py
new file mode 100644
index 00000000..863ef597
--- /dev/null
+++ b/lcm/ns/views/sol/health_check.py
@@ -0,0 +1,24 @@
+# Copyright (c) 2018, CMCC Technologies Co., Ltd.
+
+# 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.
+
+import logging
+
+from rest_framework.views import APIView
+
+logger = logging.getLogger(__name__)
+
+
+class HealthCheckView(APIView):
+ logger.debug("Health check.")
+ pass