4 # Copyright 2017 RIFT.IO Inc
6 # Licensed under the Apache License, Version 2.0 (the "License");
7 # you may not use this file except in compliance with the License.
8 # You may obtain a copy of the License at
10 # http://www.apache.org/licenses/LICENSE-2.0
12 # Unless required by applicable law or agreed to in writing, software
13 # distributed under the License is distributed on an "AS IS" BASIS,
14 # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
15 # See the License for the specific language governing permissions and
16 # limitations under the License.
19 @file test_input_params.py
20 @author Paul Laidler (Paul.Laidler@riftio.com)
22 @brief Test of VNF Input parameters using ping pong
36 from contextlib
import contextmanager
39 import rift
.auto
.session
40 import rift
.auto
.descriptor
42 gi
.require_version('RwVnfrYang', '1.0')
43 from gi
.repository
import (
52 logging
.basicConfig(level
=logging
.DEBUG
)
53 logger
= logging
.getLogger(__name__
)
55 @pytest.fixture(scope
='session')
56 def global_vendor_name():
57 return 'global_vendor'
59 @pytest.fixture(scope
='session')
60 def ping_custom_vendor_name():
63 @pytest.fixture(scope
='session')
64 def pong_custom_vendor_name():
67 @pytest.fixture(scope
='session')
68 def ping_custom_init_data():
69 return 'ping_custom_init_data'
71 @pytest.fixture(scope
='session')
72 def pong_custom_init_data():
73 return 'pong_custom_init_data'
75 @pytest.fixture(scope
='session')
76 def ping_custom_meta_data():
77 return 'ping_custom_meta_data'
79 @pytest.fixture(scope
='session')
80 def pong_custom_meta_data():
81 return 'pong_custom_meta_data'
83 @pytest.fixture(scope
='session')
84 def ping_custom_script_init_data():
87 @pytest.fixture(scope
='session')
88 def pong_custom_script_init_data():
91 @pytest.fixture(scope
='session')
92 def ping_descriptor(descriptors_pingpong_vnf_input_params
):
93 return descriptors_pingpong_vnf_input_params
[0]
95 @pytest.fixture(scope
='session')
96 def pong_descriptor(descriptors_pingpong_vnf_input_params
):
97 return descriptors_pingpong_vnf_input_params
[1]
99 @pytest.fixture(scope
='session')
100 def ping_pong_descriptor(descriptors_pingpong_vnf_input_params
):
101 return descriptors_pingpong_vnf_input_params
[2]
103 @pytest.fixture(scope
='session')
104 def ping_id(ping_descriptor
):
105 return ping_descriptor
.vnfd
.id
107 @pytest.fixture(scope
='session')
108 def pong_id(pong_descriptor
):
109 return pong_descriptor
.vnfd
.id
111 @pytest.fixture(scope
='session')
112 def ping_script_descriptor(descriptors_pingpong_script_input_params
):
113 return descriptors_pingpong_script_input_params
[0]
115 @pytest.fixture(scope
='session')
116 def pong_script_descriptor(descriptors_pingpong_script_input_params
):
117 return descriptors_pingpong_script_input_params
[1]
119 @pytest.fixture(scope
='session')
120 def ping_pong_script_descriptor(descriptors_pingpong_script_input_params
):
121 return descriptors_pingpong_script_input_params
[2]
123 @pytest.fixture(scope
='session')
124 def ping_script_id(ping_script_descriptor
):
125 return ping_script_descriptor
.vnfd
.id
127 @pytest.fixture(scope
='session')
128 def pong_script_id(pong_script_descriptor
):
129 return pong_script_descriptor
.vnfd
.id
132 def VerifyAllInstancesRunning(mgmt_session
):
133 ''' Verifies all network service instances reach running operational status '''
134 nsr_opdata
= mgmt_session
.proxy(RwNsrYang
).get("/rw-project:project[rw-project:name='default']/ns-instance-opdata")
135 nsrs
= nsr_opdata
.nsr
138 "/rw-project:project[rw-project:name='default']/ns-instance-opdata/nsr[ns-instance-config-ref='{ns_instance_config_ref}']/operational-status"
140 ns_instance_config_ref
=nsr
.ns_instance_config_ref
142 mgmt_session
.proxy(RwNsrYang
).wait_for(xpath
, "running", fail_on
=['failed'], timeout
=300)
144 def VerifyAllInstancesConfigured(mgmt_session
):
145 ''' Verifies all network service instances reach configured config status '''
146 nsr_opdata
= mgmt_session
.proxy(RwNsrYang
).get("/rw-project:project[rw-project:name='default']/ns-instance-opdata")
147 nsrs
= nsr_opdata
.nsr
150 "/rw-project:project[rw-project:name='default']/ns-instance-opdata/nsr[ns-instance-config-ref='{}']/config-status"
152 nsr
.ns_instance_config_ref
154 mgmt_session
.proxy(RwNsrYang
).wait_for(xpath
, "configured", fail_on
=['failed'], timeout
=300)
156 @pytest.mark
.depends('launchpad')
157 @pytest.mark
.setup('descriptors')
158 @pytest.mark
.incremental
159 class TestSetupPingpong(object):
160 def test_onboard_custom_descriptors(self
, mgmt_session
, packages_pingpong_vnf_input_params
, packages_pingpong_script_input_params
):
161 for descriptor_package
in packages_pingpong_vnf_input_params
:
162 rift
.auto
.descriptor
.onboard(mgmt_session
, descriptor_package
)
163 for descriptor_package
in packages_pingpong_script_input_params
:
164 rift
.auto
.descriptor
.onboard(mgmt_session
, descriptor_package
)
166 @pytest.mark
.depends('descriptors')
167 @pytest.mark
.incremental
168 class TestGlobalVnfInputParams
:
169 def test_instantiate(self
, mgmt_session
, cloud_account_name
, global_vendor_name
):
170 ''' Testing vnf input parameters with broadest xpath expression allowed
172 /vnfd:vnfd-catalog/vnfd:vnfd/<leaf>
174 Expected to replace the leaf in all member VNFs
177 xpath
= "/vnfd:vnfd-catalog/vnfd:vnfd/vnfd:vendor"
178 value
= global_vendor_name
179 vnf_input_parameter
= rift
.auto
.descriptor
.create_vnf_input_parameter(xpath
, value
)
181 nsd_catalog
= mgmt_session
.proxy(RwProjectNsdYang
).get_config("/rw-project:project[rw-project:name='default']/nsd-catalog")
182 nsd
= [nsd
for nsd
in nsd_catalog
.nsd
if nsd
.name
== 'pp_input_nsd'][0]
184 nsr
= rift
.auto
.descriptor
.create_nsr(
188 vnf_input_param_list
=[vnf_input_parameter
]
190 mgmt_session
.proxy(RwNsrYang
).create_config("/rw-project:project[rw-project:name='default']/ns-instance-config/nsr", nsr
)
193 def test_verify_running(self
, mgmt_session
):
194 VerifyAllInstancesRunning(mgmt_session
)
196 def test_verify_configured(self
, mgmt_session
):
197 VerifyAllInstancesConfigured(mgmt_session
)
199 def test_verify_vnf_input_parameters(self
, mgmt_session
, ping_id
, pong_id
, global_vendor_name
):
200 vnfr_catalog
= mgmt_session
.proxy(RwVnfrYang
).get("/project[name='default']/vnfr-catalog")
201 ping_vnfr
= [vnfr
for vnfr
in vnfr_catalog
.vnfr
if vnfr
.vnfd
.id == ping_id
][0]
202 pong_vnfr
= [vnfr
for vnfr
in vnfr_catalog
.vnfr
if vnfr
.vnfd
.id == pong_id
][0]
203 ping_vendor_name
= mgmt_session
.proxy(RwVnfrYang
).get("/project[name='default']/vnfr-catalog/vnfr[id='%s']/vendor" % ping_vnfr
.id)
204 assert ping_vendor_name
== global_vendor_name
205 pong_vendor_name
= mgmt_session
.proxy(RwVnfrYang
).get("/project[name='default']/vnfr-catalog/vnfr[id='%s']/vendor" % pong_vnfr
.id)
206 assert pong_vendor_name
== global_vendor_name
208 def test_teardown(self
, mgmt_session
):
209 ns_instance_config
= mgmt_session
.proxy(RwNsrYang
).get_config("/rw-project:project[rw-project:name='default']/ns-instance-config")
210 for nsr
in ns_instance_config
.nsr
:
211 mgmt_session
.proxy(RwNsrYang
).delete_config("/rw-project:project[rw-project:name='default']/ns-instance-config/nsr[id='{}']".format(nsr
.id))
213 vnfr_catalog
= mgmt_session
.proxy(RwVnfrYang
).get("/rw-project:project[rw-project:name='default']/vnfr-catalog")
214 assert vnfr_catalog
is None or len(vnfr_catalog
.vnfr
) == 0
216 @pytest.mark
.depends('descriptors')
217 @pytest.mark
.incremental
218 class TestMemberVnfInputParams
:
219 def test_instantiate(self
, mgmt_session
, cloud_account_name
, ping_id
, pong_id
, ping_custom_vendor_name
, pong_custom_vendor_name
):
220 ''' Testing vnf input parameters with member specific xpath expression
222 /vnfd:vnfd-catalog/vnfd:vnfd[vnfd:id='<member-id>'/<leaf>
224 Expected to replace the leaf in a specific member VNF
227 xpath
= "/vnfd:vnfd-catalog/vnfd:vnfd[vnfd:id='%s']/vnfd:vendor" % (ping_id
)
228 value
= ping_custom_vendor_name
229 vnf_input_parameter_ping
= rift
.auto
.descriptor
.create_vnf_input_parameter(xpath
, value
, vnfd_id_ref
=ping_id
)
231 xpath
= "/vnfd:vnfd-catalog/vnfd:vnfd[vnfd:id='%s']/vnfd:vendor" % (pong_id
)
232 value
= pong_custom_vendor_name
233 vnf_input_parameter_pong
= rift
.auto
.descriptor
.create_vnf_input_parameter(xpath
, value
, vnfd_id_ref
=pong_id
)
235 nsd_catalog
= mgmt_session
.proxy(RwProjectNsdYang
).get_config("/rw-project:project[rw-project:name='default']/nsd-catalog")
236 nsd
= [nsd
for nsd
in nsd_catalog
.nsd
if nsd
.name
== 'pp_input_nsd'][0]
238 nsr
= rift
.auto
.descriptor
.create_nsr(
242 vnf_input_param_list
=[vnf_input_parameter_ping
, vnf_input_parameter_pong
]
244 mgmt_session
.proxy(RwNsrYang
).create_config("/rw-project:project[rw-project:name='default']/ns-instance-config/nsr", nsr
)
246 def test_verify_running(self
, mgmt_session
):
247 VerifyAllInstancesRunning(mgmt_session
)
249 def test_verify_configured(self
, mgmt_session
):
250 VerifyAllInstancesConfigured(mgmt_session
)
252 def test_verify_vnf_input_parameters(self
, mgmt_session
, ping_id
, pong_id
, ping_custom_vendor_name
, pong_custom_vendor_name
):
253 vnfr_catalog
= mgmt_session
.proxy(RwVnfrYang
).get("/project[name='default']/vnfr-catalog")
254 ping_vnfr
= [vnfr
for vnfr
in vnfr_catalog
.vnfr
if vnfr
.vnfd
.id == ping_id
][0]
255 pong_vnfr
= [vnfr
for vnfr
in vnfr_catalog
.vnfr
if vnfr
.vnfd
.id == pong_id
][0]
256 ping_vendor_name
= mgmt_session
.proxy(RwVnfrYang
).get("/project[name='default']/vnfr-catalog/vnfr[id='%s']/vendor" % ping_vnfr
.id)
257 assert ping_vendor_name
== ping_custom_vendor_name
258 pong_vendor_name
= mgmt_session
.proxy(RwVnfrYang
).get("/project[name='default']/vnfr-catalog/vnfr[id='%s']/vendor" % pong_vnfr
.id)
259 assert pong_vendor_name
== pong_custom_vendor_name
261 def test_teardown(self
, mgmt_session
):
262 ns_instance_config
= mgmt_session
.proxy(RwNsrYang
).get_config("/rw-project:project[rw-project:name='default']/ns-instance-config")
263 for nsr
in ns_instance_config
.nsr
:
264 mgmt_session
.proxy(RwNsrYang
).delete_config("/rw-project:project[rw-project:name='default']/ns-instance-config/nsr[id='{}']".format(nsr
.id))
266 vnfr_catalog
= mgmt_session
.proxy(RwVnfrYang
).get("/rw-project:project[rw-project:name='default']/vnfr-catalog")
267 assert vnfr_catalog
is None or len(vnfr_catalog
.vnfr
) == 0
269 @pytest.mark
.depends('descriptors')
270 @pytest.mark
.incremental
271 class TestMemberVnfInputParamsCloudInit
:
272 def test_instantiate(self
, mgmt_session
, cloud_account_name
, ping_id
, pong_id
, ping_custom_init_data
, pong_custom_init_data
):
273 ''' Testing vnf input parameters with node specific xpath expression
275 /vnfd:vnfd-catalog/vnfd:vnfd[vnfd:id='<member-id>']/vnfd:vdu[vnfd:id="<vdu-id>"]/vnfd:supplemental-boot-data/vnfd:custom-meta-data[vnfd:name=<leaf-name>]/vnfd:value
276 /vnfd:vnfd-catalog/vnfd:vnfd[vnfd:id='<member-id>'/<leaf>
278 Expected to replace the leaf in a specific member VNF
281 xpath
= "/vnfd:vnfd-catalog/vnfd:vnfd[vnfd:id='%s']/vnfd:vdu[vnfd:id='iovdu_0']/vnfd:supplemental-boot-data/vnfd:custom-meta-data[vnfd:name='custom_cloud_init_data']/vnfd:value" % (ping_id
)
282 value
= ping_custom_init_data
283 vnf_input_parameter_ping
= rift
.auto
.descriptor
.create_vnf_input_parameter(xpath
, value
, vnfd_id_ref
=ping_id
)
285 xpath
= "/vnfd:vnfd-catalog/vnfd:vnfd[vnfd:id='%s']/vnfd:vdu[vnfd:id='iovdu_0']/vnfd:supplemental-boot-data/vnfd:custom-meta-data[vnfd:name='custom_cloud_init_data']/vnfd:value" % (pong_id
)
286 value
= pong_custom_init_data
287 vnf_input_parameter_pong
= rift
.auto
.descriptor
.create_vnf_input_parameter(xpath
, value
, vnfd_id_ref
=pong_id
)
290 nsd_catalog
= mgmt_session
.proxy(RwProjectNsdYang
).get_config("/rw-project:project[rw-project:name='default']/nsd-catalog")
291 nsd
= [nsd
for nsd
in nsd_catalog
.nsd
if nsd
.name
== 'pp_input_nsd'][0]
293 nsr
= rift
.auto
.descriptor
.create_nsr(
297 vnf_input_param_list
=[vnf_input_parameter_ping
, vnf_input_parameter_pong
]
299 mgmt_session
.proxy(RwNsrYang
).create_config("/rw-project:project[rw-project:name='default']/ns-instance-config/nsr", nsr
)
301 def test_verify_running(self
, mgmt_session
):
302 VerifyAllInstancesRunning(mgmt_session
)
304 def test_verify_configured(self
, mgmt_session
):
305 VerifyAllInstancesConfigured(mgmt_session
)
307 def test_verify_vnf_input_parameters(self
, mgmt_session
, ping_id
, pong_id
, ping_custom_init_data
, pong_custom_init_data
):
308 ''' Verify both ping and pong init data were replaced with their respective init data
310 vnfr_catalog
= mgmt_session
.proxy(RwVnfrYang
).get("/project[name='default']/vnfr-catalog")
311 ping_vnfr
= [vnfr
for vnfr
in vnfr_catalog
.vnfr
if vnfr
.vnfd
.id == ping_id
][0]
312 pong_vnfr
= [vnfr
for vnfr
in vnfr_catalog
.vnfr
if vnfr
.vnfd
.id == pong_id
][0]
314 # Verify the data was replaced in the vdu
315 ping_init_data
= mgmt_session
.proxy(RwVnfrYang
).get("/project[name='default']/vnfr-catalog/vnfr[id='%s']/vnfd/vdu/supplemental-boot-data/custom-meta-data[name='custom_cloud_init_data']/value" % (ping_vnfr
.id))
316 assert ping_init_data
== ping_custom_init_data
317 pong_init_data
= mgmt_session
.proxy(RwVnfrYang
).get("/project[name='default']/vnfr-catalog/vnfr[id='%s']/vnfd/vdu/supplemental-boot-data/custom-meta-data[name='custom_cloud_init_data']/value" % (pong_vnfr
.id))
318 assert pong_init_data
== pong_custom_init_data
320 def test_teardown(self
, mgmt_session
):
321 ns_instance_config
= mgmt_session
.proxy(RwNsrYang
).get_config("/rw-project:project[rw-project:name='default']/ns-instance-config")
322 for nsr
in ns_instance_config
.nsr
:
323 mgmt_session
.proxy(RwNsrYang
).delete_config("/rw-project:project[rw-project:name='default']/ns-instance-config/nsr[id='{}']".format(nsr
.id))
325 vnfr_catalog
= mgmt_session
.proxy(RwVnfrYang
).get("/rw-project:project[rw-project:name='default']/vnfr-catalog")
326 assert vnfr_catalog
is None or len(vnfr_catalog
.vnfr
) == 0
328 @pytest.mark
.depends('descriptors')
329 @pytest.mark
.incremental
330 class TestMemberVnfInputParamsCloudMeta
:
331 def test_instantiate(self
, mgmt_session
, cloud_account_name
, ping_id
, pong_id
, ping_custom_meta_data
, pong_custom_meta_data
):
332 ''' Testing vnf input parameters with node specific xpath expression
334 /vnfd:vnfd-catalog/vnfd:vnfd[vnfd:id='<member-id>']/vnfd:vdu[vnfd:id="<vdu-id>"]/vnfd:supplemental-boot-data/vnfd:custom-meta-data[vnfd:name=<leaf-name>]/vnfd:value
335 /vnfd:vnfd-catalog/vnfd:vnfd[vnfd:id='<member-id>'/<leaf>
337 Expected to replace the leaf in a specific member VNF
340 xpath
= "/vnfd:vnfd-catalog/vnfd:vnfd[vnfd:id='%s']/vnfd:vdu[vnfd:id='iovdu_0']/vnfd:supplemental-boot-data/vnfd:custom-meta-data[vnfd:name='custom_cloud_meta_data']/vnfd:value" % (ping_id
)
341 value
= ping_custom_meta_data
342 vnf_input_parameter_ping
= rift
.auto
.descriptor
.create_vnf_input_parameter(xpath
, value
, vnfd_id_ref
=ping_id
)
344 xpath
= "/vnfd:vnfd-catalog/vnfd:vnfd[vnfd:id='%s']/vnfd:vdu[vnfd:id='iovdu_0']/vnfd:supplemental-boot-data/vnfd:custom-meta-data[vnfd:name='custom_cloud_meta_data']/vnfd:value" % (pong_id
)
345 value
= pong_custom_meta_data
346 vnf_input_parameter_pong
= rift
.auto
.descriptor
.create_vnf_input_parameter(xpath
, value
, vnfd_id_ref
=pong_id
)
349 nsd_catalog
= mgmt_session
.proxy(RwProjectNsdYang
).get_config("/rw-project:project[rw-project:name='default']/nsd-catalog")
350 nsd
= [nsd
for nsd
in nsd_catalog
.nsd
if nsd
.name
== 'pp_input_nsd'][0]
352 nsr
= rift
.auto
.descriptor
.create_nsr(
356 vnf_input_param_list
=[vnf_input_parameter_ping
, vnf_input_parameter_pong
]
358 mgmt_session
.proxy(RwNsrYang
).create_config("/rw-project:project[rw-project:name='default']/ns-instance-config/nsr", nsr
)
360 def test_verify_running(self
, mgmt_session
):
361 VerifyAllInstancesRunning(mgmt_session
)
363 def test_verify_configured(self
, mgmt_session
):
364 VerifyAllInstancesConfigured(mgmt_session
)
366 def test_verify_vnf_input_parameters(self
, mgmt_session
, ping_id
, pong_id
, ping_custom_meta_data
, pong_custom_meta_data
):
367 ''' Verify both ping and pong meta data were replaced with their respective meta data
369 vnfr_catalog
= mgmt_session
.proxy(RwVnfrYang
).get("/project[name='default']/vnfr-catalog")
370 ping_vnfr
= [vnfr
for vnfr
in vnfr_catalog
.vnfr
if vnfr
.vnfd
.id == ping_id
][0]
371 pong_vnfr
= [vnfr
for vnfr
in vnfr_catalog
.vnfr
if vnfr
.vnfd
.id == pong_id
][0]
373 # Verify the data was replaced in the vdu
374 ping_meta_data
= mgmt_session
.proxy(RwVnfrYang
).get("/project[name='default']/vnfr-catalog/vnfr[id='%s']/vnfd/vdu/supplemental-boot-data/custom-meta-data[name='custom_cloud_meta_data']/value" % (ping_vnfr
.id))
375 assert ping_meta_data
== ping_custom_meta_data
376 pong_meta_data
= mgmt_session
.proxy(RwVnfrYang
).get("/project[name='default']/vnfr-catalog/vnfr[id='%s']/vnfd/vdu/supplemental-boot-data/custom-meta-data[name='custom_cloud_meta_data']/value" % (pong_vnfr
.id))
377 assert pong_meta_data
== pong_custom_meta_data
379 # Verify the data was also replaced in the vdur
380 ping_meta_data
= mgmt_session
.proxy(RwVnfrYang
).get("/project[name='default']/vnfr-catalog/vnfr[id='%s']/vdur/supplemental-boot-data/custom-meta-data[name='custom_cloud_meta_data']/value" % (ping_vnfr
.id))
381 assert ping_meta_data
== ping_custom_meta_data
382 pong_meta_data
= mgmt_session
.proxy(RwVnfrYang
).get("/project[name='default']/vnfr-catalog/vnfr[id='%s']/vdur/supplemental-boot-data/custom-meta-data[name='custom_cloud_meta_data']/value" % (pong_vnfr
.id))
383 assert pong_meta_data
== pong_custom_meta_data
385 def test_teardown(self
, mgmt_session
):
386 ns_instance_config
= mgmt_session
.proxy(RwNsrYang
).get_config("/rw-project:project[rw-project:name='default']/ns-instance-config")
387 for nsr
in ns_instance_config
.nsr
:
388 mgmt_session
.proxy(RwNsrYang
).delete_config("/rw-project:project[rw-project:name='default']/ns-instance-config/nsr[id='{}']".format(nsr
.id))
390 vnfr_catalog
= mgmt_session
.proxy(RwVnfrYang
).get("/rw-project:project[rw-project:name='default']/vnfr-catalog")
391 assert vnfr_catalog
is None or len(vnfr_catalog
.vnfr
) == 0
394 @pytest.mark
.depends('descriptors')
395 @pytest.mark
.incremental
396 @pytest.mark
.skipif(True, reason
='RIFT-18171 - Disabled due to cloud init failure on userdata supplied bash scripts')
397 class TestMemberVnfInputParamsInitScripts
:
398 def test_instantiate(self
, mgmt_session
, cloud_account_name
, ping_script_id
, pong_script_id
, ping_custom_script_init_data
, pong_custom_script_init_data
):
399 ''' Testing replacement of vnf input parameters with node specific xpath expression in init scripts
401 /vnfd:vnfd-catalog/vnfd:vnfd[vnfd:id='<member-id>']/vnfd:vdu[vnfd:id="<vdu-id>"]/vnfd:supplemental-boot-data/vnfd:custom-meta-data[vnfd:name=<leaf-name>]/vnfd:value
402 /vnfd:vnfd-catalog/vnfd:vnfd[vnfd:id='<member-id>'/<leaf>
404 Expected to replace the leaf in a specific member VNF
407 xpath
= "/vnfd:vnfd-catalog/vnfd:vnfd[vnfd:id='%s']/vnfd:vdu[vnfd:id='iovdu_0']/vnfd:supplemental-boot-data/vnfd:custom-meta-data[vnfd:name='CI-script-init-data']/vnfd:value" % (ping_script_id
)
408 value
= ping_custom_script_init_data
409 vnf_input_parameter_ping
= rift
.auto
.descriptor
.create_vnf_input_parameter(xpath
, value
, vnfd_id_ref
=ping_script_id
)
411 xpath
= "/vnfd:vnfd-catalog/vnfd:vnfd[vnfd:id='%s']/vnfd:vdu[vnfd:id='iovdu_0']/vnfd:supplemental-boot-data/vnfd:custom-meta-data[vnfd:name='CI-script-init-data']/vnfd:value" % (pong_script_id
)
412 value
= pong_custom_script_init_data
413 vnf_input_parameter_pong
= rift
.auto
.descriptor
.create_vnf_input_parameter(xpath
, value
, vnfd_id_ref
=pong_script_id
)
415 nsd_catalog
= mgmt_session
.proxy(RwProjectNsdYang
).get_config("/rw-project:project[rw-project:name='default']/nsd-catalog")
416 nsd
= [nsd
for nsd
in nsd_catalog
.nsd
if nsd
.name
== 'pp_script_nsd'][0]
418 nsr
= rift
.auto
.descriptor
.create_nsr(
422 vnf_input_param_list
=[vnf_input_parameter_ping
, vnf_input_parameter_pong
]
424 mgmt_session
.proxy(RwNsrYang
).create_config("/rw-project:project[rw-project:name='default']/ns-instance-config/nsr", nsr
)
426 def test_verify_running(self
, mgmt_session
):
427 VerifyAllInstancesRunning(mgmt_session
)
429 def test_verify_configured(self
, mgmt_session
):
430 # Configuration will only succeed if the replacement was sucessful
431 VerifyAllInstancesConfigured(mgmt_session
)