blob: db65f06e9fb74ab4ab53ea13eba3c0bf191a3056 [file] [log] [blame]
Dominik Fleischmannca6eb952019-11-27 16:38:18 +01001# Copyright 2019 Canonical Ltd.
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#
14
Adam Israel6fd46222019-05-29 11:31:01 -040015"""
16Deploy a multi-vdu, multi-charm VNF
17"""
18
19import asyncio
20import logging
21import pytest
22from .. import base
23
24
25# @pytest.mark.serial
26class TestCharm(base.TestN2VC):
27
28 NSD_YAML = """
29nsd:nsd-catalog:
30 nsd:
31 - id: hackfest-simplecharm-ns
32 name: hackfest-simplecharm-ns
33 short-name: hackfest-simplecharm-ns
34 description: NS with 2 VNFs hackfest-simplecharm-vnf connected by datanet and mgmtnet VLs
35 version: '1.0'
36 logo: osm.png
37 constituent-vnfd:
38 - vnfd-id-ref: hackfest-simplecharm-vnf
39 member-vnf-index: '1'
40 - vnfd-id-ref: hackfest-simplecharm-vnf
41 member-vnf-index: '2'
42 vld:
43 - id: mgmtnet
44 name: mgmtnet
45 short-name: mgmtnet
46 type: ELAN
47 mgmt-network: 'true'
48 vim-network-name: mgmt
49 vnfd-connection-point-ref:
50 - vnfd-id-ref: hackfest-simplecharm-vnf
51 member-vnf-index-ref: '1'
52 vnfd-connection-point-ref: vnf-mgmt
53 - vnfd-id-ref: hackfest-simplecharm-vnf
54 member-vnf-index-ref: '2'
55 vnfd-connection-point-ref: vnf-mgmt
56 - id: datanet
57 name: datanet
58 short-name: datanet
59 type: ELAN
60 vnfd-connection-point-ref:
61 - vnfd-id-ref: hackfest-simplecharm-vnf
62 member-vnf-index-ref: '1'
63 vnfd-connection-point-ref: vnf-data
64 - vnfd-id-ref: hackfest-simplecharm-vnf
65 member-vnf-index-ref: '2'
66 vnfd-connection-point-ref: vnf-data
67 """
68
69 VNFD_YAML = """
70vnfd:vnfd-catalog:
71 vnfd:
72 - id: hackfest-simplecharm-vnf
73 name: hackfest-simplecharm-vnf
74 short-name: hackfest-simplecharm-vnf
75 version: '1.0'
76 description: A VNF consisting of 2 VDUs connected to an internal VL, and one VDU with cloud-init
77 logo: osm.png
78 connection-point:
79 - id: vnf-mgmt
80 name: vnf-mgmt
81 short-name: vnf-mgmt
82 type: VPORT
83 - id: vnf-data
84 name: vnf-data
85 short-name: vnf-data
86 type: VPORT
87 mgmt-interface:
88 cp: vnf-mgmt
89 internal-vld:
90 - id: internal
91 name: internal
92 short-name: internal
93 type: ELAN
94 internal-connection-point:
95 - id-ref: mgmtVM-internal
96 - id-ref: dataVM-internal
97 vdu:
98 - id: mgmtVM
99 name: mgmtVM
100 image: hackfest3-mgmt
101 count: '1'
102 vm-flavor:
103 vcpu-count: '1'
104 memory-mb: '1024'
105 storage-gb: '10'
106 interface:
107 - name: mgmtVM-eth0
108 position: '1'
109 type: EXTERNAL
110 virtual-interface:
111 type: PARAVIRT
112 external-connection-point-ref: vnf-mgmt
113 - name: mgmtVM-eth1
114 position: '2'
115 type: INTERNAL
116 virtual-interface:
117 type: PARAVIRT
118 internal-connection-point-ref: mgmtVM-internal
119 internal-connection-point:
120 - id: mgmtVM-internal
121 name: mgmtVM-internal
122 short-name: mgmtVM-internal
123 type: VPORT
124 cloud-init-file: cloud-config.txt
125 - id: dataVM
126 name: dataVM
127 image: hackfest3-mgmt
128 count: '1'
129 vm-flavor:
130 vcpu-count: '1'
131 memory-mb: '1024'
132 storage-gb: '10'
133 interface:
134 - name: dataVM-eth0
135 position: '1'
136 type: INTERNAL
137 virtual-interface:
138 type: PARAVIRT
139 internal-connection-point-ref: dataVM-internal
140 - name: dataVM-xe0
141 position: '2'
142 type: EXTERNAL
143 virtual-interface:
144 type: PARAVIRT
145 external-connection-point-ref: vnf-data
146 internal-connection-point:
147 - id: dataVM-internal
148 name: dataVM-internal
149 short-name: dataVM-internal
150 type: VPORT
151 vnf-configuration:
152 juju:
153 charm: simple
154 initial-config-primitive:
155 - seq: '1'
156 name: config
157 parameter:
158 - name: ssh-hostname
159 value: <rw_mgmt_ip>
160 - name: ssh-username
161 value: ubuntu
162 - name: ssh-password
163 value: osm4u
164 - seq: '2'
165 name: touch
166 parameter:
167 - name: filename
168 value: '/home/ubuntu/first-touch'
169 config-primitive:
170 - name: touch
171 parameter:
172 - name: filename
173 data-type: STRING
174 default-value: '/home/ubuntu/touched'
175 """
176
177 # @pytest.mark.serial
178 @pytest.mark.asyncio
179 async def test_multivdu_multicharm(self, event_loop):
180 """Deploy and execute the initial-config-primitive of a VNF."""
181
182 if self.nsd and self.vnfd:
183 vnf_index = 0
184
185 for config in self.get_config():
186 juju = config['juju']
187 charm = juju['charm']
188
189 await self.deploy(
190 vnf_index,
191 charm,
192 config,
193 event_loop,
194 )
195 vnf_index += 1
196
197 while await self.running():
198 logging.debug("Waiting for test to finish...")
199 await asyncio.sleep(15)
200 # assert False
201 logging.debug("test_multivdu_multicharm stopped")
202
203 return 'ok'