66673f6b87f6d56235067277abc08677212a4d08
[vfc/gvnfm/vnflcm.git] / lcm / lcm / nf / tests / test_query_vnf.py
1 # Copyright 2017 ZTE Corporation.
2 #
3 # Licensed under the Apache License, Version 2.0 (the "License");
4 # you may not use this file except in compliance with the License.
5 # You may obtain a copy of the License at
6 #
7 #         http://www.apache.org/licenses/LICENSE-2.0
8 #
9 # Unless required by applicable law or agreed to in writing, software
10 # distributed under the License is distributed on an "AS IS" BASIS,
11 # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
12 # See the License for the specific language governing permissions and
13 # limitations under the License.
14
15 from django.test import TestCase, Client
16 from rest_framework import status
17
18 from lcm.pub.database.models import (NfInstModel, VLInstModel,
19                                      VNFCInstModel, VmInstModel, StorageInstModel)
20
21
22 class ResourceTest(TestCase):
23     def setUp(self):
24         self.client = Client()
25         self.nf_inst_id = "01"
26         NfInstModel.objects.all().delete()
27         self.test_data_single_vnf = {
28             "id": "1",
29             "vnfInstanceName": "VNF1",
30             "vnfInstanceDescription": "VNF DESC",
31             "vnfdId": "1",
32             "vnfProvider": "ZTE",
33             "vnfProductName": "XGW",
34             "vnfSoftwareVersion": "V1",
35             "vnfdVersion": "V1",
36             "vnfPkgId": "2",
37             "instantiationState": "INSTANTIATED",
38             "instantiatedVnfInfo": {
39                 "vnfState": "STARTED",
40                 "extCpInfo": [],
41                 "virtualStorageResourceInfo": [
42                     {
43                         "id": "s02",
44                         "storageResource": {
45                             "resourceId": "resource01",
46                             "vimConnectionId": "vim01"
47                         }
48                     }
49                 ],
50                 "extVirtualLinkInfo": [],
51                 "vnfcResourceInfo": [],
52                 "monitoringParameters": [],
53                 "flavourId": None,
54                 "vnfVirtualLinkResourceInfo": [],
55                 "scaleStatus": []
56             }
57         }
58         self.test_data_multi_vnf = [
59             {
60                 "id": "1",
61                 "vnfInstanceName": "VNF1",
62                 "vnfInstanceDescription": "VNF DESC",
63                 "vnfdId": "1",
64                 "vnfProvider": "ZTE",
65                 "vnfProductName": "XGW",
66                 "vnfSoftwareVersion": "V1",
67                 "vnfdVersion": "V1",
68                 "vnfPkgId": "2",
69                 "instantiationState": "INSTANTIATED",
70                 "instantiatedVnfInfo": {
71                     "vnfState": "STARTED",
72                     "extCpInfo": [],
73                     "virtualStorageResourceInfo": [
74                         {
75                             "id": "s01",
76                             "storageResource": {
77                                 "resourceId": "resource01",
78                                 "vimConnectionId": "vim01"
79                             }
80                         }
81                     ],
82                     "extVirtualLinkInfo": [],
83                     "vnfcResourceInfo": [],
84                     "monitoringParameters": [],
85                     "flavourId": None,
86                     "vnfVirtualLinkResourceInfo": [],
87                     "scaleStatus": []
88                 }
89             },
90             {
91                 "id": "2",
92                 "vnfInstanceName": "VNF2",
93                 "vnfInstanceDescription": "VNF DESC",
94                 "vnfdId": "1",
95                 "vnfProvider": "ZTE",
96                 "vnfProductName": "XGW",
97                 "vnfSoftwareVersion": "V1",
98                 "vnfdVersion": "V1",
99                 "vnfPkgId": "2",
100                 "instantiationState": "INSTANTIATED",
101                 "instantiatedVnfInfo": {
102                     "vnfState": "STARTED",
103                     "extCpInfo": [],
104                     "virtualStorageResourceInfo": [
105                         {
106                             "id": "s02",
107                             "storageResource": {
108                                 "resourceId": "resource02",
109                                 "vimConnectionId": "vim02"
110                             }
111                         }
112                     ],
113                     "extVirtualLinkInfo": [],
114                     "vnfcResourceInfo": [],
115                     "monitoringParameters": [],
116                     "flavourId": None,
117                     "vnfVirtualLinkResourceInfo": [],
118                     "scaleStatus": []
119                 }
120             }
121         ]
122
123     def tearDown(self):
124         pass
125
126     def test_get_vnf(self):
127         vnf_inst_id = "1"
128         NfInstModel(nfinstid=vnf_inst_id,
129                     nf_name='VNF1',
130                     nf_desc="VNF DESC",
131                     vnfdid="1",
132                     netype="XGW",
133                     vendor="ZTE",
134                     vnfSoftwareVersion="V1",
135                     version="V1",
136                     package_id="2",
137                     status='INSTANTIATED').save()
138         StorageInstModel(storageid='s02',
139                          vimid='vim01',
140                          resourceid='resource01',
141                          insttype=1,
142                          instid=vnf_inst_id).save()
143         response = self.client.get("/api/vnflcm/v1/vnf_instances/%s" % vnf_inst_id, format='json')
144         self.assertEqual(response.status_code, status.HTTP_200_OK)
145         self.assertEqual(self.test_data_single_vnf, response.data)
146
147     def test_get_vnf_not_exist(self):
148         response = self.client.get("/api/vnflcm/v1/vnf_instances/x", format='json')
149         self.assertEqual(response.status_code, status.HTTP_500_INTERNAL_SERVER_ERROR)
150         self.assertEqual({'error': 'VnfInst(x) does not exist.'}, response.data)
151
152     def test_get_vnf_net_not_exist(self):
153         vnf_inst_id = "1"
154         NfInstModel(nfinstid=vnf_inst_id,
155                     nf_name='VNF1',
156                     vnfdid="1",
157                     netype="XGW",
158                     vendor="ZTE",
159                     vnfSoftwareVersion="V1",
160                     version="V1",
161                     package_id="2",
162                     status='INSTANTIATED').save()
163         VLInstModel(ownerid=vnf_inst_id,
164                     relatednetworkid='x',
165                     ownertype='0').save()
166         response = self.client.get("/api/vnflcm/v1/vnf_instances/%s" % vnf_inst_id, format='json')
167         self.assertEqual(response.status_code, status.HTTP_500_INTERNAL_SERVER_ERROR)
168         self.assertEqual({'error': 'NetworkInst(x) does not exist.'}, response.data)
169
170     def test_get_vnf_vm_not_exist(self):
171         vnf_inst_id = "1"
172         NfInstModel(nfinstid=vnf_inst_id,
173                     nf_name='VNF1',
174                     vnfdid="1",
175                     netype="XGW",
176                     vendor="ZTE",
177                     vnfSoftwareVersion="V1",
178                     version="V1",
179                     package_id="2",
180                     status='INSTANTIATED').save()
181         VNFCInstModel(instid=vnf_inst_id,
182                       vmid='x').save()
183         response = self.client.get("/api/vnflcm/v1/vnf_instances/%s" % vnf_inst_id, format='json')
184         self.assertEqual(response.status_code, status.HTTP_500_INTERNAL_SERVER_ERROR)
185         self.assertEqual({'error': 'VmInst(x) does not exist.'}, response.data)
186
187     def test_get_vnf_storage_not_exist(self):
188         vnf_inst_id = "1"
189         NfInstModel(nfinstid=vnf_inst_id,
190                     nf_name='VNF1',
191                     vnfdid="1",
192                     netype="XGW",
193                     vendor="ZTE",
194                     vnfSoftwareVersion="V1",
195                     version="V1",
196                     package_id="2",
197                     status='INSTANTIATED').save()
198         VNFCInstModel(instid=vnf_inst_id,
199                       vmid='x',).save()
200         VmInstModel(vmid='x', insttype='0').save()
201         response = self.client.get("/api/vnflcm/v1/vnf_instances/%s" % vnf_inst_id, format='json')
202         self.assertEqual(response.status_code, status.HTTP_500_INTERNAL_SERVER_ERROR)
203
204     def test_get_vnfs(self):
205         for i in range(1, 3):
206             NfInstModel(nfinstid='%s' % i,
207                         nf_name='VNF%s' % i,
208                         nf_desc="VNF DESC",
209                         vnfdid="1",
210                         netype="XGW",
211                         vendor="ZTE",
212                         vnfSoftwareVersion="V1",
213                         version="V1",
214                         package_id="2",
215                         status='INSTANTIATED').save()
216             StorageInstModel(storageid='s0%s' % i,
217                              vimid='vim0%s' % i,
218                              resourceid='resource0%s' % i,
219                              insttype=1,
220                              instid='%s' % i).save()
221         response = self.client.get("/api/vnflcm/v1/vnf_instances", format='json')
222         self.failUnlessEqual(status.HTTP_200_OK, response.status_code)
223         self.assertEqual(self.test_data_multi_vnf, response.data)
224
225     def test_get_vnfs_not_exist(self):
226         response = self.client.get("/api/vnflcm/v1/vnf_instances", format='json')
227         self.assertEqual(response.status_code, status.HTTP_200_OK)