a1f9dda9f1111e78ea9282bc7d371fefb8488b85
[vfc/nfvo/lcm.git] / lcm / ns / tests / test_scaleaspect.py
1 # Copyright 2016-2018 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 import json
16 import os
17 from django.test import TestCase
18 from lcm.pub.database.models import NSInstModel
19 from lcm.pub.database.models import NfInstModel
20 from lcm.pub.utils.timeutil import now_time
21 from lcm.pub.utils import fileutil
22
23
24 class TestScaleAspect(TestCase):
25
26     def setUp(self):
27         self.cur_path = os.path.dirname(os.path.abspath(__file__))
28         self.scaling_map_json = fileutil.read_json_file(self.cur_path + '/data/scalemapping.json')
29         self.vnfd_model_json = fileutil.read_json_file(self.cur_path + '/data/vnfd_model.json')
30         self.initInstModel()
31
32         self.init_scale_ns_data()
33
34         self.vnf_scale_info_list = [
35             {
36                 "vnfd_id": "nf_zte_cscf",
37                 "vnf_scaleAspectId": "mpu",
38                 "numberOfSteps": "1"
39             },
40             {
41                 "vnfd_id": "nf_zte_hss",
42                 "vnf_scaleAspectId": "gsu",
43                 "numberOfSteps": "2"
44             }
45         ]
46
47     def init_scale_ns_data(self):
48         self.ns_scale_aspect = "TIC_EDGE_IMS"
49         self.ns_scale_steps = "1"
50         self.ns_scale_direction = "SCALE_IN"
51         self.scaleNsData = [{
52             "scaleNsByStepsData": [
53                 {
54                     "aspectId": self.ns_scale_aspect,
55                     "numberOfSteps": self.ns_scale_steps,
56                     "scalingDirection": self.ns_scale_direction
57                 }
58             ]
59         }]
60
61         self.ns_scale_aspect2 = "TIC_EDGE_HW"
62         self.ns_scale_steps2 = "4"
63         self.scaleNsData2 = [{
64             "scaleNsByStepsData": [
65                 {
66                     "aspectId": self.ns_scale_aspect2,
67                     "numberOfSteps": self.ns_scale_steps2,
68                     "scalingDirection": self.ns_scale_direction
69                 }
70             ]
71         }]
72
73     def initInstModel(self):
74         self.nsd_id = "23"
75         self.ns_inst_id = "1"
76         self.ns_name = "ns_1"
77         self.ns_package_id = "ns_zte"
78         self.description = "ns_zte"
79         self.global_customer_id = "global_customer_id"
80         self.service_type = "service_role"
81
82         NSInstModel(id=self.ns_inst_id,
83                     name=self.ns_name,
84                     nspackage_id=self.ns_package_id,
85                     nsd_id=self.nsd_id,
86                     description=self.description,
87                     status='empty',
88                     lastuptime=now_time(),
89                     global_customer_id=self.global_customer_id,
90                     service_type=self.service_type).save()
91
92         self.nf_inst_id = "231"
93         self.ns_inst_id = "1"
94         self.nf_name = "name_1"
95         self.vnf_id = "1"
96         self.vnfm_inst_id = "1"
97         self.package_id = "nf_zte_cscf"
98         self.nf_uuid = "abc34-345a-de13-ab85-ijs9"
99
100         NfInstModel.objects.create(
101             nfinstid=self.nf_inst_id,
102             nf_name=self.nf_name,
103             vnf_id=self.vnf_id,
104             vnfm_inst_id=self.vnfm_inst_id,
105             ns_inst_id=self.ns_inst_id,
106             max_cpu='14',
107             max_ram='12296',
108             max_hd='101',
109             max_shd="20",
110             max_net=10,
111             status='active',
112             mnfinstid=self.nf_uuid,
113             package_id=self.package_id,
114             vnfd_model=json.dumps(self.vnfd_model_json))
115
116         # Create a second vnf instance
117         self.nf_inst_id = "232"
118         self.package_id = "nf_zte_hss"
119         self.nf_uuid = "abc34-3g5a-de13-ab85-ijs3"
120
121         NfInstModel.objects.create(
122             nfinstid=self.nf_inst_id,
123             nf_name=self.nf_name,
124             vnf_id=self.vnf_id,
125             vnfm_inst_id=self.vnfm_inst_id,
126             ns_inst_id=self.ns_inst_id,
127             max_cpu='14',
128             max_ram='12296',
129             max_hd='101',
130             max_shd="20",
131             max_net=10,
132             status='active',
133             mnfinstid=self.nf_uuid,
134             package_id=self.package_id,
135             vnfd_model=json.dumps(self.vnfd_model_json))
136
137     def add_another_nf_instance(self):
138         # Create a third vnf instance
139         nf_inst_id = "233"
140         package_id = "nf_zte_hss"
141         nf_uuid = "ab34-3g5j-de13-ab85-ij93"
142
143         NfInstModel.objects.create(
144             nfinstid=nf_inst_id,
145             nf_name=self.nf_name,
146             vnf_id=self.vnf_id,
147             vnfm_inst_id=self.vnfm_inst_id,
148             ns_inst_id=self.ns_inst_id,
149             max_cpu='14',
150             max_ram='12296',
151             max_hd='101',
152             max_shd="20",
153             max_net=10,
154             status='active',
155             mnfinstid=nf_uuid,
156             package_id=package_id,
157             vnfd_model=json.dumps(self.vnfd_model_json))
158
159     def add_new_vnf_instance(self):
160         # Create a third vnf instance
161         nf_inst_id = "241"
162         package_id = "nf_hw_cscf"
163         nf_uuid = "ab34-3g5j-de13-aa85-ij93"
164
165         NfInstModel.objects.create(
166             nfinstid=nf_inst_id,
167             nf_name=self.nf_name,
168             vnf_id=self.vnf_id,
169             vnfm_inst_id=self.vnfm_inst_id,
170             ns_inst_id=self.ns_inst_id,
171             max_cpu='14',
172             max_ram='12296',
173             max_hd='101',
174             max_shd="20",
175             max_net=10,
176             status='active',
177             mnfinstid=nf_uuid,
178             package_id=package_id,
179             vnfd_model=json.dumps(self.vnfd_model_json))
180
181         # Create a third vnf instance
182         nf_inst_id = "242"
183         package_id = "nf_hw_hss"
184         nf_uuid = "ab34-3g5j-de13-aa85-id93"
185
186         NfInstModel.objects.create(
187             nfinstid=nf_inst_id,
188             nf_name=self.nf_name,
189             vnf_id=self.vnf_id,
190             vnfm_inst_id=self.vnfm_inst_id,
191             ns_inst_id=self.ns_inst_id,
192             max_cpu='14',
193             max_ram='12296',
194             max_hd='101',
195             max_shd="20",
196             max_net=10,
197             status='active',
198             mnfinstid=nf_uuid,
199             package_id=package_id,
200             vnfd_model=json.dumps(self.vnfd_model_json))
201
202     def tearDown(self):
203         NSInstModel().clean()
204         NfInstModel().clean()