summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorying.yunlong <ying.yunlong@zte.com.cn>2017-08-30 16:58:54 +0800
committerying.yunlong <ying.yunlong@zte.com.cn>2017-08-30 16:58:54 +0800
commit413288222272a379b87ff89aee95f2333e025da1 (patch)
tree5330bb9081497b19e504d4785cf7b51ccd52f9a9
parent0801c4f94071231a622c4ecb0d3f1d8d478d9192 (diff)
Add vnflcm operate vnfinst code
When create or delete vnf instance in vnflcm, need to create or delete vnf instance in aai, and add related unit tests. Change-Id: Id4808218351c648c50a8b127d91f8670e6daa7cf Issue-ID: VFC-193 Signed-off-by: ying.yunlong <ying.yunlong@zte.com.cn>
-rw-r--r--lcm/lcm/nf/vnfs/tests/test_vnf_cancel.py5
-rw-r--r--lcm/lcm/nf/vnfs/tests/test_vnf_create.py5
-rw-r--r--lcm/lcm/nf/vnfs/vnf_cancel/delete_vnf_identifier.py27
-rw-r--r--lcm/lcm/nf/vnfs/vnf_create/create_vnf_identifier.py11
-rw-r--r--lcm/lcm/pub/aaiapi/aai.py2
5 files changed, 38 insertions, 12 deletions
diff --git a/lcm/lcm/nf/vnfs/tests/test_vnf_cancel.py b/lcm/lcm/nf/vnfs/tests/test_vnf_cancel.py
index 53936b0f..8cdfb7f2 100644
--- a/lcm/lcm/nf/vnfs/tests/test_vnf_cancel.py
+++ b/lcm/lcm/nf/vnfs/tests/test_vnf_cancel.py
@@ -56,11 +56,14 @@ class TestNFTerminate(TestCase):
descp=job_detail)
self.assertEqual(1, len(jobs))
- def test_delete_vnf_identifier(self):
+ @mock.patch.object(restcall, 'call_req_aai')
+ def test_delete_vnf_identifier(self, mock_call_req_aai):
NfInstModel.objects.create(nfinstid='1111', nf_name='2222', package_id='todo', version='', vendor='',
netype='', vnfd_model='', status='NOT_INSTANTIATED', nf_desc='', vnfdid='',
vnfSoftwareVersion='', vnfConfigurableProperties='todo',
localizationLanguage='EN_US', create_time=now_time())
+ r1_create_vnf_to_aai = [0, json.JSONEncoder().encode({}), '200']
+ mock_call_req_aai.side_effect = [r1_create_vnf_to_aai]
response = self.client.delete("/api/vnflcm/v1/vnf_instances/1111")
self.failUnlessEqual(status.HTTP_204_NO_CONTENT, response.status_code)
self.assertEqual(None, response.data)
diff --git a/lcm/lcm/nf/vnfs/tests/test_vnf_create.py b/lcm/lcm/nf/vnfs/tests/test_vnf_create.py
index ad94fb60..d4d5d77c 100644
--- a/lcm/lcm/nf/vnfs/tests/test_vnf_create.py
+++ b/lcm/lcm/nf/vnfs/tests/test_vnf_create.py
@@ -48,12 +48,15 @@ class TestNFInstantiate(TestCase):
self.assertEqual(response.status_code, status.HTTP_200_OK)
@mock.patch.object(restcall, 'call_req')
- def test_create_vnf_identifier(self, mock_call_req):
+ @mock.patch.object(restcall, 'call_req_aai')
+ def test_create_vnf_identifier(self, mock_call_req_aai, mock_call_req):
r1_get_csarid_by_vnfdid = [0, json.JSONEncoder().encode({'csars':[{'package_id': '222',
'csarId': '2222',
'vnfdId': '111'}]}), '200']
r2_get_rawdata_from_catalog = [0, json.JSONEncoder().encode(vnfd_rawdata), '200']
+ r3_create_vnf_to_aai = [0, json.JSONEncoder().encode({}), '200']
mock_call_req.side_effect = [r1_get_csarid_by_vnfdid, r2_get_rawdata_from_catalog]
+ mock_call_req_aai.side_effect = [r3_create_vnf_to_aai]
data = {
"vnfdId": "111",
"vnfInstanceName": "vFW_01",
diff --git a/lcm/lcm/nf/vnfs/vnf_cancel/delete_vnf_identifier.py b/lcm/lcm/nf/vnfs/vnf_cancel/delete_vnf_identifier.py
index 1eedb543..91d92089 100644
--- a/lcm/lcm/nf/vnfs/vnf_cancel/delete_vnf_identifier.py
+++ b/lcm/lcm/nf/vnfs/vnf_cancel/delete_vnf_identifier.py
@@ -13,7 +13,9 @@
# limitations under the License.
import logging
+from lcm.pub.aaiapi.aai import delete_vnf
from lcm.pub.database.models import NfInstModel, NfvoRegInfoModel
+from lcm.pub.exceptions import NFLCMException
logger = logging.getLogger(__name__)
@@ -24,12 +26,19 @@ class DeleteVnf:
self.nf_inst_id = instanceid
def do_biz(self):
- vnf_insts = NfInstModel.objects.filter(nfinstid=self.nf_inst_id)
- if not vnf_insts.exists():
- logger.warn('VnfInst(%s) does not exist' % self.nf_inst_id)
- return
- #sel_vnf = vnf_insts[0]
- #if sel_vnf.status != 'NOT_INSTANTIATED':
- # raise NFLCMException("Don't allow to delete vnf(status:[%s])" % sel_vnf.status)
- NfInstModel.objects.filter(nfinstid=self.nf_inst_id).delete()
- NfvoRegInfoModel.objects.filter(nfvoid=self.nf_inst_id).delete()
+ try:
+ vnf_insts = NfInstModel.objects.filter(nfinstid=self.nf_inst_id)
+ if not vnf_insts.exists():
+ logger.warn('VnfInst(%s) does not exist' % self.nf_inst_id)
+ return
+ #sel_vnf = vnf_insts[0]
+ #if sel_vnf.status != 'NOT_INSTANTIATED':
+ # raise NFLCMException("Don't allow to delete vnf(status:[%s])" % sel_vnf.status)
+ NfInstModel.objects.filter(nfinstid=self.nf_inst_id).delete()
+ NfvoRegInfoModel.objects.filter(nfvoid=self.nf_inst_id).delete()
+
+ delete_vnf(self.nf_inst_id)
+ except NFLCMException as e:
+ logger.debug('Delete VNF instance[%s] from AAI failed' % self.nf_inst_id)
+ except:
+ logger.debug('Delete VNF instance[%s] failed' % self.nf_inst_id)
diff --git a/lcm/lcm/nf/vnfs/vnf_create/create_vnf_identifier.py b/lcm/lcm/nf/vnfs/vnf_create/create_vnf_identifier.py
index 09170d5a..a91c8d02 100644
--- a/lcm/lcm/nf/vnfs/vnf_create/create_vnf_identifier.py
+++ b/lcm/lcm/nf/vnfs/vnf_create/create_vnf_identifier.py
@@ -15,6 +15,7 @@ import json
import logging
import uuid
+from lcm.pub.aaiapi.aai import create_vnf
from lcm.pub.database.models import NfInstModel
from lcm.pub.exceptions import NFLCMException
from lcm.pub.msapi.catalog import query_rawdata_from_catalog
@@ -66,6 +67,16 @@ class CreateVnf:
version=version, vendor=vendor, netype=netype, vnfd_model=vnfd_model,
status='NOT_INSTANTIATED', nf_desc=self.description, vnfdid=self.vnfd_id,
vnfSoftwareVersion=vnfsoftwareversion, create_time=now_time())
+ data = {
+ "vnf-id": nf_inst_id,
+ "vnf-name": self.vnf_instance_mame,
+ "vnf-type": "INFRA",
+ "in-maint": "true",
+ "is-closed-loop-disabled": "false"
+ }
+ create_vnf(nf_inst_id, data)
+ except NFLCMException as e:
+ logger.debug('Create VNF instance[%s] to AAI failed' % nf_inst_id)
except:
NfInstModel.objects.create(nfinstid=nf_inst_id, nf_name=self.vnf_instance_mame, package_id='',
version='', vendor='', netype='', vnfd_model='',
diff --git a/lcm/lcm/pub/aaiapi/aai.py b/lcm/lcm/pub/aaiapi/aai.py
index e8b42fa2..f45b099c 100644
--- a/lcm/lcm/pub/aaiapi/aai.py
+++ b/lcm/lcm/pub/aaiapi/aai.py
@@ -66,7 +66,7 @@ def create_vnf(vnf_id, data):
raise NFLCMException("Vnf instance creation exception in AAI")
return json.JSONDecoder().decode(ret[1])
-def delete_vnf(vnf_id, data):
+def delete_vnf(vnf_id, data=[]):
resource = "/network/generic-vnfs/generic-vnf/%s" % vnf_id
ret = call_aai(resource, "DELETE", data)
# ret = call_req_aai(AAI_BASE_URL, AAI_USER, AAI_PASSWORD, rest_no_auth, resource, "DELETE", data)