Add UT instead of deleting FT related with Mistral
This patch deletes the FT related with Mistral for the following reasons.
- Other OpenStack-PJs (e.g. nova and heat) that have Action definition in
mistral([1]) do not implement FT in each PJ.
- These functional tests are carried out in the mistral-tempest-plugin.
However, at the moment, only core PJs (e.g. nova and heat) are targeted in [2],
and it's necessary to aim to add tacker here in the future.
In this patch, instead of deleting FT, the viewpoint of unittest is added to
confirm that mistral-client is called as expected.
The code is modified so that the anchor notation is not used
because not supported by mistral in [3].
[1]: https://opendev.org/openstack/mistral-extra/src/branch/master/mistral_extra/actions/openstack/mapping.json
[2]: https://opendev.org/openstack/mistral-tempest-plugin/src/branch/master/mistral_tempest_tests/tests/scenario/engine/actions/v2/test_openstack_actions.py
[3]: eac23d9e77
Closes-Bug: #1878309
Change-Id: Ie8eab1b262c15f7b53796a287b333e60ffee1c31
This commit is contained in:
parent
c437dbae04
commit
cdada88cbe
@ -119,7 +119,7 @@ python-subunit==1.0.0
|
|||||||
python-swiftclient==3.5.0
|
python-swiftclient==3.5.0
|
||||||
python-tackerclient==0.8.0
|
python-tackerclient==0.8.0
|
||||||
pytz==2018.3
|
pytz==2018.3
|
||||||
PyYAML==3.12
|
PyYAML==5.1
|
||||||
reno==2.7.0
|
reno==2.7.0
|
||||||
repoze.lru==0.7
|
repoze.lru==0.7
|
||||||
requests-oauthlib==0.8.0
|
requests-oauthlib==0.8.0
|
||||||
|
@ -52,7 +52,7 @@ castellan>=0.16.0 # Apache-2.0
|
|||||||
kubernetes>=5.0.0 # Apache-2.0
|
kubernetes>=5.0.0 # Apache-2.0
|
||||||
setuptools!=24.0.0,!=34.0.0,!=34.0.1,!=34.0.2,!=34.0.3,!=34.1.0,!=34.1.1,!=34.2.0,!=34.3.0,!=34.3.1,!=34.3.2,!=36.2.0,>=21.0.0 # PSF/ZPL
|
setuptools!=24.0.0,!=34.0.0,!=34.0.1,!=34.0.2,!=34.0.3,!=34.1.0,!=34.1.1,!=34.2.0,!=34.3.0,!=34.3.1,!=34.3.2,!=36.2.0,>=21.0.0 # PSF/ZPL
|
||||||
tooz>=1.58.0 # Apache-2.0
|
tooz>=1.58.0 # Apache-2.0
|
||||||
PyYAML>=3.12 # MIT
|
PyYAML>=5.1 # MIT
|
||||||
|
|
||||||
# Glance Store
|
# Glance Store
|
||||||
glance-store>=0.26.1 # Apache-2.0
|
glance-store>=0.26.1 # Apache-2.0
|
||||||
|
@ -731,6 +731,7 @@ class OpenStack_Driver(abstract_vim_driver.VimAbstractDriver,
|
|||||||
wg.task(**kwargs)
|
wg.task(**kwargs)
|
||||||
if not wg.get_tasks():
|
if not wg.get_tasks():
|
||||||
raise nfvo.NoTasksException(resource=resource, action=action)
|
raise nfvo.NoTasksException(resource=resource, action=action)
|
||||||
|
yaml.SafeDumper.ignore_aliases = lambda self, data: True
|
||||||
definition_yaml = yaml.safe_dump(wg.definition)
|
definition_yaml = yaml.safe_dump(wg.definition)
|
||||||
workflow = mistral_client.workflows.create(definition_yaml)
|
workflow = mistral_client.workflows.create(definition_yaml)
|
||||||
return {'id': workflow[0].id, 'input': wg.get_input_dict()}
|
return {'id': workflow[0].id, 'input': wg.get_input_dict()}
|
||||||
|
@ -35,6 +35,7 @@ def prepare_and_create_workflow(mistral_client, vim_id, action,
|
|||||||
kwargs):
|
kwargs):
|
||||||
wg = workflow_generator.WorkflowGenerator(vim_id, action)
|
wg = workflow_generator.WorkflowGenerator(vim_id, action)
|
||||||
wg.task(**kwargs)
|
wg.task(**kwargs)
|
||||||
|
yaml.SafeDumper.ignore_aliases = lambda self, data: True
|
||||||
definition_yaml = yaml.safe_dump(wg.definition, default_flow_style=False)
|
definition_yaml = yaml.safe_dump(wg.definition, default_flow_style=False)
|
||||||
LOG.debug('vim monitor workflow: %s', definition_yaml)
|
LOG.debug('vim monitor workflow: %s', definition_yaml)
|
||||||
workflow = mistral_client.workflows.create(definition_yaml)
|
workflow = mistral_client.workflows.create(definition_yaml)
|
||||||
|
@ -208,54 +208,3 @@ class NsdTestCreate(base.BaseTackerTest):
|
|||||||
self._test_delete_nsd(nsd_id)
|
self._test_delete_nsd(nsd_id)
|
||||||
self._test_delete_vnfd(vnfd1_id)
|
self._test_delete_vnfd(vnfd1_id)
|
||||||
self._test_delete_vnfd(vnfd2_id)
|
self._test_delete_vnfd(vnfd2_id)
|
||||||
|
|
||||||
def test_create_delete_network_service(self):
|
|
||||||
self._test_create_delete_ns('test-ns-nsd.yaml',
|
|
||||||
'test-ns-onboarded',
|
|
||||||
template_source='onboarded')
|
|
||||||
time.sleep(1)
|
|
||||||
self._test_create_delete_ns('test-ns-nsd.yaml',
|
|
||||||
'test-ns-inline',
|
|
||||||
template_source='inline')
|
|
||||||
|
|
||||||
def _wait_for_server_active(self, server_id, target_status='ACTIVE',
|
|
||||||
timeout=60, sleep_interval=2):
|
|
||||||
start_time = int(time.time())
|
|
||||||
while True:
|
|
||||||
server_info = self.novaclient().servers.get(server_id)
|
|
||||||
if (server_info.status == target_status) or (
|
|
||||||
(int(time.time()) - start_time) > timeout):
|
|
||||||
break
|
|
||||||
time.sleep(sleep_interval)
|
|
||||||
|
|
||||||
def test_create_delete_ns_vnffg(self):
|
|
||||||
net = self.neutronclient().list_networks()
|
|
||||||
for network in net['networks']:
|
|
||||||
if network['name'] == 'net0':
|
|
||||||
net_id = network['id']
|
|
||||||
networks = [{'net-id': net_id}]
|
|
||||||
img = self.glanceclient().images.list(
|
|
||||||
name='cirros-0.4.0-x86_64-disk').next()
|
|
||||||
http_client = self.novaclient().servers.create(name='http_client',
|
|
||||||
image=img['id'],
|
|
||||||
flavor=1,
|
|
||||||
nics=networks)
|
|
||||||
http_server = self.novaclient().servers.create(name='http_server',
|
|
||||||
image=img['id'],
|
|
||||||
flavor=1,
|
|
||||||
nics=networks)
|
|
||||||
self._wait_for_server_active(http_client.id)
|
|
||||||
self._wait_for_server_active(http_server.id)
|
|
||||||
port_list = self.neutronclient().list_ports()
|
|
||||||
source_port_id = None
|
|
||||||
dest_ip_prefix = http_server.networks['net0'][0] + '/24'
|
|
||||||
for port in port_list['ports']:
|
|
||||||
if port['fixed_ips'][0]['ip_address'] == \
|
|
||||||
http_client.networks['net0'][0]:
|
|
||||||
source_port_id = port['id']
|
|
||||||
|
|
||||||
self._test_create_delete_ns_vnffg('tosca-ns-vnffg.yaml',
|
|
||||||
'tosca-ns-vnffg',
|
|
||||||
source_port_id, dest_ip_prefix)
|
|
||||||
self.novaclient().servers.delete(http_server.id)
|
|
||||||
self.novaclient().servers.delete(http_client.id)
|
|
||||||
|
@ -29,8 +29,10 @@ from tacker.db.nfvo import ns_db
|
|||||||
from tacker.db.nfvo import vnffg_db
|
from tacker.db.nfvo import vnffg_db
|
||||||
from tacker.extensions import nfvo
|
from tacker.extensions import nfvo
|
||||||
from tacker.manager import TackerManager
|
from tacker.manager import TackerManager
|
||||||
|
from tacker.nfvo.drivers.vim import openstack_driver
|
||||||
from tacker.nfvo import nfvo_plugin
|
from tacker.nfvo import nfvo_plugin
|
||||||
from tacker.plugins.common import constants
|
from tacker.plugins.common import constants
|
||||||
|
from tacker.tests import constants as test_constants
|
||||||
from tacker.tests.unit.db import base as db_base
|
from tacker.tests.unit.db import base as db_base
|
||||||
from tacker.tests.unit.db import utils
|
from tacker.tests.unit.db import utils
|
||||||
from tacker.vnfm import vim_client
|
from tacker.vnfm import vim_client
|
||||||
@ -217,15 +219,7 @@ class TestNfvoPlugin(db_base.SqlTestCase):
|
|||||||
super(TestNfvoPlugin, self).setUp()
|
super(TestNfvoPlugin, self).setUp()
|
||||||
self.addCleanup(mock.patch.stopall)
|
self.addCleanup(mock.patch.stopall)
|
||||||
self.context = context.get_admin_context()
|
self.context = context.get_admin_context()
|
||||||
self._mock_driver_manager()
|
|
||||||
mock.patch('tacker.nfvo.nfvo_plugin.NfvoPlugin._get_vim_from_vnf',
|
|
||||||
side_effect=dummy_get_vim).start()
|
|
||||||
self.nfvo_plugin = nfvo_plugin.NfvoPlugin()
|
self.nfvo_plugin = nfvo_plugin.NfvoPlugin()
|
||||||
mock.patch('tacker.db.common_services.common_services_db_plugin.'
|
|
||||||
'CommonServicesPluginDb.create_event'
|
|
||||||
).start()
|
|
||||||
self._cos_db_plugin =\
|
|
||||||
common_services_db_plugin.CommonServicesPluginDb()
|
|
||||||
|
|
||||||
def _mock_driver_manager(self):
|
def _mock_driver_manager(self):
|
||||||
self._driver_manager = mock.Mock(wraps=FakeDriverManager())
|
self._driver_manager = mock.Mock(wraps=FakeDriverManager())
|
||||||
@ -286,6 +280,15 @@ class TestNfvoPlugin(db_base.SqlTestCase):
|
|||||||
def test_create_vim(self):
|
def test_create_vim(self):
|
||||||
vim_dict = utils.get_vim_obj()
|
vim_dict = utils.get_vim_obj()
|
||||||
vim_type = 'openstack'
|
vim_type = 'openstack'
|
||||||
|
self._mock_driver_manager()
|
||||||
|
mock.patch('tacker.nfvo.nfvo_plugin.NfvoPlugin._get_vim_from_vnf',
|
||||||
|
side_effect=dummy_get_vim).start()
|
||||||
|
self.nfvo_plugin = nfvo_plugin.NfvoPlugin()
|
||||||
|
mock.patch('tacker.db.common_services.common_services_db_plugin.'
|
||||||
|
'CommonServicesPluginDb.create_event'
|
||||||
|
).start()
|
||||||
|
self._cos_db_plugin =\
|
||||||
|
common_services_db_plugin.CommonServicesPluginDb()
|
||||||
res = self.nfvo_plugin.create_vim(self.context, vim_dict)
|
res = self.nfvo_plugin.create_vim(self.context, vim_dict)
|
||||||
self._cos_db_plugin.create_event.assert_any_call(
|
self._cos_db_plugin.create_event.assert_any_call(
|
||||||
self.context, evt_type=constants.RES_EVT_CREATE, res_id=mock.ANY,
|
self.context, evt_type=constants.RES_EVT_CREATE, res_id=mock.ANY,
|
||||||
@ -308,6 +311,15 @@ class TestNfvoPlugin(db_base.SqlTestCase):
|
|||||||
vim_id = '6261579e-d6f3-49ad-8bc3-a9cb974778ff'
|
vim_id = '6261579e-d6f3-49ad-8bc3-a9cb974778ff'
|
||||||
self.context.tenant_id = 'ad7ebc56538745a08ef7c5e97f8bd437'
|
self.context.tenant_id = 'ad7ebc56538745a08ef7c5e97f8bd437'
|
||||||
vim_obj = self.nfvo_plugin._get_vim(self.context, vim_id)
|
vim_obj = self.nfvo_plugin._get_vim(self.context, vim_id)
|
||||||
|
self._mock_driver_manager()
|
||||||
|
mock.patch('tacker.nfvo.nfvo_plugin.NfvoPlugin._get_vim_from_vnf',
|
||||||
|
side_effect=dummy_get_vim).start()
|
||||||
|
self.nfvo_plugin = nfvo_plugin.NfvoPlugin()
|
||||||
|
mock.patch('tacker.db.common_services.common_services_db_plugin.'
|
||||||
|
'CommonServicesPluginDb.create_event'
|
||||||
|
).start()
|
||||||
|
self._cos_db_plugin =\
|
||||||
|
common_services_db_plugin.CommonServicesPluginDb()
|
||||||
self.nfvo_plugin.delete_vim(self.context, vim_id)
|
self.nfvo_plugin.delete_vim(self.context, vim_id)
|
||||||
self._driver_manager.invoke.assert_called_once_with(
|
self._driver_manager.invoke.assert_called_once_with(
|
||||||
vim_type, 'deregister_vim',
|
vim_type, 'deregister_vim',
|
||||||
@ -327,6 +339,15 @@ class TestNfvoPlugin(db_base.SqlTestCase):
|
|||||||
vim_project = vim_dict['vim']['vim_project']
|
vim_project = vim_dict['vim']['vim_project']
|
||||||
self._insert_dummy_vim()
|
self._insert_dummy_vim()
|
||||||
self.context.tenant_id = 'ad7ebc56538745a08ef7c5e97f8bd437'
|
self.context.tenant_id = 'ad7ebc56538745a08ef7c5e97f8bd437'
|
||||||
|
self._mock_driver_manager()
|
||||||
|
mock.patch('tacker.nfvo.nfvo_plugin.NfvoPlugin._get_vim_from_vnf',
|
||||||
|
side_effect=dummy_get_vim).start()
|
||||||
|
self.nfvo_plugin = nfvo_plugin.NfvoPlugin()
|
||||||
|
mock.patch('tacker.db.common_services.common_services_db_plugin.'
|
||||||
|
'CommonServicesPluginDb.create_event'
|
||||||
|
).start()
|
||||||
|
self._cos_db_plugin =\
|
||||||
|
common_services_db_plugin.CommonServicesPluginDb()
|
||||||
res = self.nfvo_plugin.update_vim(self.context, vim_dict['vim']['id'],
|
res = self.nfvo_plugin.update_vim(self.context, vim_dict['vim']['id'],
|
||||||
vim_dict)
|
vim_dict)
|
||||||
vim_obj = self.nfvo_plugin._get_vim(
|
vim_obj = self.nfvo_plugin._get_vim(
|
||||||
@ -359,6 +380,15 @@ class TestNfvoPlugin(db_base.SqlTestCase):
|
|||||||
self.context.tenant_id = 'ad7ebc56538745a08ef7c5e97f8bd437'
|
self.context.tenant_id = 'ad7ebc56538745a08ef7c5e97f8bd437'
|
||||||
old_vim_obj = self.nfvo_plugin._get_vim(
|
old_vim_obj = self.nfvo_plugin._get_vim(
|
||||||
self.context, vim_dict['vim']['id'])
|
self.context, vim_dict['vim']['id'])
|
||||||
|
self._mock_driver_manager()
|
||||||
|
mock.patch('tacker.nfvo.nfvo_plugin.NfvoPlugin._get_vim_from_vnf',
|
||||||
|
side_effect=dummy_get_vim).start()
|
||||||
|
self.nfvo_plugin = nfvo_plugin.NfvoPlugin()
|
||||||
|
mock.patch('tacker.db.common_services.common_services_db_plugin.'
|
||||||
|
'CommonServicesPluginDb.create_event'
|
||||||
|
).start()
|
||||||
|
self._cos_db_plugin =\
|
||||||
|
common_services_db_plugin.CommonServicesPluginDb()
|
||||||
res = self.nfvo_plugin.update_vim(self.context, vim_dict['vim']['id'],
|
res = self.nfvo_plugin.update_vim(self.context, vim_dict['vim']['id'],
|
||||||
vim_dict)
|
vim_dict)
|
||||||
vim_obj = self.nfvo_plugin._get_vim(
|
vim_obj = self.nfvo_plugin._get_vim(
|
||||||
@ -593,6 +623,15 @@ class TestNfvoPlugin(db_base.SqlTestCase):
|
|||||||
self.assertEqual('example_vnffgd', result['name'])
|
self.assertEqual('example_vnffgd', result['name'])
|
||||||
|
|
||||||
def test_create_vnffg_abstract_types(self):
|
def test_create_vnffg_abstract_types(self):
|
||||||
|
self._mock_driver_manager()
|
||||||
|
mock.patch('tacker.nfvo.nfvo_plugin.NfvoPlugin._get_vim_from_vnf',
|
||||||
|
side_effect=dummy_get_vim).start()
|
||||||
|
self.nfvo_plugin = nfvo_plugin.NfvoPlugin()
|
||||||
|
mock.patch('tacker.db.common_services.common_services_db_plugin.'
|
||||||
|
'CommonServicesPluginDb.create_event'
|
||||||
|
).start()
|
||||||
|
self._cos_db_plugin =\
|
||||||
|
common_services_db_plugin.CommonServicesPluginDb()
|
||||||
with patch.object(TackerManager, 'get_service_plugins') as \
|
with patch.object(TackerManager, 'get_service_plugins') as \
|
||||||
mock_plugins:
|
mock_plugins:
|
||||||
mock_plugins.return_value = {'VNFM': FakeVNFMPlugin()}
|
mock_plugins.return_value = {'VNFM': FakeVNFMPlugin()}
|
||||||
@ -617,6 +656,15 @@ class TestNfvoPlugin(db_base.SqlTestCase):
|
|||||||
|
|
||||||
@mock.patch('tacker.nfvo.nfvo_plugin.NfvoPlugin.create_vnffgd')
|
@mock.patch('tacker.nfvo.nfvo_plugin.NfvoPlugin.create_vnffgd')
|
||||||
def test_create_vnffg_abstract_types_inline(self, mock_create_vnffgd):
|
def test_create_vnffg_abstract_types_inline(self, mock_create_vnffgd):
|
||||||
|
self._mock_driver_manager()
|
||||||
|
mock.patch('tacker.nfvo.nfvo_plugin.NfvoPlugin._get_vim_from_vnf',
|
||||||
|
side_effect=dummy_get_vim).start()
|
||||||
|
self.nfvo_plugin = nfvo_plugin.NfvoPlugin()
|
||||||
|
mock.patch('tacker.db.common_services.common_services_db_plugin.'
|
||||||
|
'CommonServicesPluginDb.create_event'
|
||||||
|
).start()
|
||||||
|
self._cos_db_plugin =\
|
||||||
|
common_services_db_plugin.CommonServicesPluginDb()
|
||||||
with patch.object(TackerManager, 'get_service_plugins') as \
|
with patch.object(TackerManager, 'get_service_plugins') as \
|
||||||
mock_plugins:
|
mock_plugins:
|
||||||
mock_plugins.return_value = {'VNFM': FakeVNFMPlugin()}
|
mock_plugins.return_value = {'VNFM': FakeVNFMPlugin()}
|
||||||
@ -644,6 +692,15 @@ class TestNfvoPlugin(db_base.SqlTestCase):
|
|||||||
correlation=mock.ANY)
|
correlation=mock.ANY)
|
||||||
|
|
||||||
def test_create_vnffg_param_values(self):
|
def test_create_vnffg_param_values(self):
|
||||||
|
self._mock_driver_manager()
|
||||||
|
mock.patch('tacker.nfvo.nfvo_plugin.NfvoPlugin._get_vim_from_vnf',
|
||||||
|
side_effect=dummy_get_vim).start()
|
||||||
|
self.nfvo_plugin = nfvo_plugin.NfvoPlugin()
|
||||||
|
mock.patch('tacker.db.common_services.common_services_db_plugin.'
|
||||||
|
'CommonServicesPluginDb.create_event'
|
||||||
|
).start()
|
||||||
|
self._cos_db_plugin =\
|
||||||
|
common_services_db_plugin.CommonServicesPluginDb()
|
||||||
with patch.object(TackerManager, 'get_service_plugins') as \
|
with patch.object(TackerManager, 'get_service_plugins') as \
|
||||||
mock_plugins:
|
mock_plugins:
|
||||||
mock_plugins.return_value = {'VNFM': FakeVNFMPlugin()}
|
mock_plugins.return_value = {'VNFM': FakeVNFMPlugin()}
|
||||||
@ -667,6 +724,15 @@ class TestNfvoPlugin(db_base.SqlTestCase):
|
|||||||
correlation=mock.ANY)
|
correlation=mock.ANY)
|
||||||
|
|
||||||
def test_create_vnffg_no_classifier(self):
|
def test_create_vnffg_no_classifier(self):
|
||||||
|
self._mock_driver_manager()
|
||||||
|
mock.patch('tacker.nfvo.nfvo_plugin.NfvoPlugin._get_vim_from_vnf',
|
||||||
|
side_effect=dummy_get_vim).start()
|
||||||
|
self.nfvo_plugin = nfvo_plugin.NfvoPlugin()
|
||||||
|
mock.patch('tacker.db.common_services.common_services_db_plugin.'
|
||||||
|
'CommonServicesPluginDb.create_event'
|
||||||
|
).start()
|
||||||
|
self._cos_db_plugin =\
|
||||||
|
common_services_db_plugin.CommonServicesPluginDb()
|
||||||
with patch.object(TackerManager, 'get_service_plugins') as \
|
with patch.object(TackerManager, 'get_service_plugins') as \
|
||||||
mock_plugins:
|
mock_plugins:
|
||||||
mock_plugins.return_value = {'VNFM': FakeVNFMPlugin()}
|
mock_plugins.return_value = {'VNFM': FakeVNFMPlugin()}
|
||||||
@ -710,6 +776,15 @@ class TestNfvoPlugin(db_base.SqlTestCase):
|
|||||||
self.context, vnffg_obj)
|
self.context, vnffg_obj)
|
||||||
|
|
||||||
def test_create_vnffg_vnf_mapping(self):
|
def test_create_vnffg_vnf_mapping(self):
|
||||||
|
self._mock_driver_manager()
|
||||||
|
mock.patch('tacker.nfvo.nfvo_plugin.NfvoPlugin._get_vim_from_vnf',
|
||||||
|
side_effect=dummy_get_vim).start()
|
||||||
|
self.nfvo_plugin = nfvo_plugin.NfvoPlugin()
|
||||||
|
mock.patch('tacker.db.common_services.common_services_db_plugin.'
|
||||||
|
'CommonServicesPluginDb.create_event'
|
||||||
|
).start()
|
||||||
|
self._cos_db_plugin =\
|
||||||
|
common_services_db_plugin.CommonServicesPluginDb()
|
||||||
with patch.object(TackerManager, 'get_service_plugins') as \
|
with patch.object(TackerManager, 'get_service_plugins') as \
|
||||||
mock_plugins:
|
mock_plugins:
|
||||||
mock_plugins.return_value = {'VNFM': FakeVNFMPlugin()}
|
mock_plugins.return_value = {'VNFM': FakeVNFMPlugin()}
|
||||||
@ -814,6 +889,15 @@ class TestNfvoPlugin(db_base.SqlTestCase):
|
|||||||
self.context, vnffg['id'], updated_vnffg)
|
self.context, vnffg['id'], updated_vnffg)
|
||||||
|
|
||||||
def test_update_vnffg_vnf_mapping(self):
|
def test_update_vnffg_vnf_mapping(self):
|
||||||
|
self._mock_driver_manager()
|
||||||
|
mock.patch('tacker.nfvo.nfvo_plugin.NfvoPlugin._get_vim_from_vnf',
|
||||||
|
side_effect=dummy_get_vim).start()
|
||||||
|
self.nfvo_plugin = nfvo_plugin.NfvoPlugin()
|
||||||
|
mock.patch('tacker.db.common_services.common_services_db_plugin.'
|
||||||
|
'CommonServicesPluginDb.create_event'
|
||||||
|
).start()
|
||||||
|
self._cos_db_plugin =\
|
||||||
|
common_services_db_plugin.CommonServicesPluginDb()
|
||||||
with patch.object(TackerManager, 'get_service_plugins') as \
|
with patch.object(TackerManager, 'get_service_plugins') as \
|
||||||
mock_plugins:
|
mock_plugins:
|
||||||
mock_plugins.return_value = {'VNFM': FakeVNFMPlugin()}
|
mock_plugins.return_value = {'VNFM': FakeVNFMPlugin()}
|
||||||
@ -849,6 +933,15 @@ class TestNfvoPlugin(db_base.SqlTestCase):
|
|||||||
auth_attr=mock.ANY)
|
auth_attr=mock.ANY)
|
||||||
|
|
||||||
def test_update_vnffg_vnffgd_template(self):
|
def test_update_vnffg_vnffgd_template(self):
|
||||||
|
self._mock_driver_manager()
|
||||||
|
mock.patch('tacker.nfvo.nfvo_plugin.NfvoPlugin._get_vim_from_vnf',
|
||||||
|
side_effect=dummy_get_vim).start()
|
||||||
|
self.nfvo_plugin = nfvo_plugin.NfvoPlugin()
|
||||||
|
mock.patch('tacker.db.common_services.common_services_db_plugin.'
|
||||||
|
'CommonServicesPluginDb.create_event'
|
||||||
|
).start()
|
||||||
|
self._cos_db_plugin =\
|
||||||
|
common_services_db_plugin.CommonServicesPluginDb()
|
||||||
with patch.object(TackerManager, 'get_service_plugins') as \
|
with patch.object(TackerManager, 'get_service_plugins') as \
|
||||||
mock_plugins:
|
mock_plugins:
|
||||||
mock_plugins.return_value = {'VNFM': FakeVNFMPlugin()}
|
mock_plugins.return_value = {'VNFM': FakeVNFMPlugin()}
|
||||||
@ -880,6 +973,15 @@ class TestNfvoPlugin(db_base.SqlTestCase):
|
|||||||
auth_attr=mock.ANY)
|
auth_attr=mock.ANY)
|
||||||
|
|
||||||
def test_update_vnffg_legacy_vnffgd_template(self):
|
def test_update_vnffg_legacy_vnffgd_template(self):
|
||||||
|
self._mock_driver_manager()
|
||||||
|
mock.patch('tacker.nfvo.nfvo_plugin.NfvoPlugin._get_vim_from_vnf',
|
||||||
|
side_effect=dummy_get_vim).start()
|
||||||
|
self.nfvo_plugin = nfvo_plugin.NfvoPlugin()
|
||||||
|
mock.patch('tacker.db.common_services.common_services_db_plugin.'
|
||||||
|
'CommonServicesPluginDb.create_event'
|
||||||
|
).start()
|
||||||
|
self._cos_db_plugin =\
|
||||||
|
common_services_db_plugin.CommonServicesPluginDb()
|
||||||
with patch.object(TackerManager, 'get_service_plugins') as \
|
with patch.object(TackerManager, 'get_service_plugins') as \
|
||||||
mock_plugins:
|
mock_plugins:
|
||||||
mock_plugins.return_value = {'VNFM': FakeVNFMPlugin()}
|
mock_plugins.return_value = {'VNFM': FakeVNFMPlugin()}
|
||||||
@ -895,6 +997,15 @@ class TestNfvoPlugin(db_base.SqlTestCase):
|
|||||||
def test_delete_vnffg(self):
|
def test_delete_vnffg(self):
|
||||||
self._insert_dummy_vnffg_template()
|
self._insert_dummy_vnffg_template()
|
||||||
vnffg = self._insert_dummy_vnffg()
|
vnffg = self._insert_dummy_vnffg()
|
||||||
|
self._mock_driver_manager()
|
||||||
|
mock.patch('tacker.nfvo.nfvo_plugin.NfvoPlugin._get_vim_from_vnf',
|
||||||
|
side_effect=dummy_get_vim).start()
|
||||||
|
self.nfvo_plugin = nfvo_plugin.NfvoPlugin()
|
||||||
|
mock.patch('tacker.db.common_services.common_services_db_plugin.'
|
||||||
|
'CommonServicesPluginDb.create_event'
|
||||||
|
).start()
|
||||||
|
self._cos_db_plugin =\
|
||||||
|
common_services_db_plugin.CommonServicesPluginDb()
|
||||||
self.nfvo_plugin.delete_vnffg(self.context, vnffg['id'])
|
self.nfvo_plugin.delete_vnffg(self.context, vnffg['id'])
|
||||||
self._driver_manager.invoke.assert_called_with(mock.ANY, mock.ANY,
|
self._driver_manager.invoke.assert_called_with(mock.ANY, mock.ANY,
|
||||||
fc_id=mock.ANY,
|
fc_id=mock.ANY,
|
||||||
@ -1048,9 +1159,14 @@ class TestNfvoPlugin(db_base.SqlTestCase):
|
|||||||
self.assertIn('updated_at', result)
|
self.assertIn('updated_at', result)
|
||||||
|
|
||||||
@mock.patch.object(nfvo_plugin.NfvoPlugin, 'get_auth_dict')
|
@mock.patch.object(nfvo_plugin.NfvoPlugin, 'get_auth_dict')
|
||||||
@mock.patch.object(vim_client.VimClient, 'get_vim')
|
@mock.patch.object(vim_client.VimClient, 'get_vim',
|
||||||
|
return_value={"vim_type": "openstack"})
|
||||||
@mock.patch.object(nfvo_plugin.NfvoPlugin, '_get_by_name')
|
@mock.patch.object(nfvo_plugin.NfvoPlugin, '_get_by_name')
|
||||||
def test_create_ns(self, mock_get_by_name, mock_get_vimi, mock_auth_dict):
|
@mock.patch.object(openstack_driver.OpenStack_Driver, 'get_mistral_client')
|
||||||
|
@mock.patch.object(uuidutils, 'generate_uuid',
|
||||||
|
return_value=test_constants.UUID)
|
||||||
|
def test_create_ns(self, mock_uuid, mock_mistral_client,
|
||||||
|
mock_get_by_name, mock_get_vimi, mock_auth_dict):
|
||||||
self._insert_dummy_ns_template()
|
self._insert_dummy_ns_template()
|
||||||
self._insert_dummy_vim()
|
self._insert_dummy_vim()
|
||||||
mock_auth_dict.return_value = {
|
mock_auth_dict.return_value = {
|
||||||
@ -1059,6 +1175,63 @@ class TestNfvoPlugin(db_base.SqlTestCase):
|
|||||||
'project_domain_name': 'dummy_domain',
|
'project_domain_name': 'dummy_domain',
|
||||||
'project_name': 'dummy_project'
|
'project_name': 'dummy_project'
|
||||||
}
|
}
|
||||||
|
|
||||||
|
sample_yaml = 'std.create_ns' + test_constants.UUID + ':\n '\
|
||||||
|
'input:\n - ns\n output:\n mgmt_ip_address_VNF1: '\
|
||||||
|
'<% $.mgmt_ip_address_VNF1 %>\n mgmt_ip_address_VNF2: '\
|
||||||
|
'<% $.mgmt_ip_address_VNF2 %>\n status_VNF1: '\
|
||||||
|
'<% $.status_VNF1 %>\n status_VNF2: '\
|
||||||
|
'<% $.status_VNF2 %>\n vim_id_VNF1: <% $.vim_id_VNF1 %>\n'\
|
||||||
|
' vim_id_VNF2: <% $.vim_id_VNF2 %>\n vnf_id_VNF1: '\
|
||||||
|
'<% $.vnf_id_VNF1 %>\n vnf_id_VNF2: <% $.vnf_id_VNF2 %>\n '\
|
||||||
|
'tasks:\n create_ns_VNF1:\n action: tacker.create_vnf '\
|
||||||
|
'body=<% $.ns.VNF1 %>\n input:\n body: '\
|
||||||
|
'<% $.ns.VNF1 %>\n on-success:\n '\
|
||||||
|
'- wait_vnf_active_VNF1\n publish:\n '\
|
||||||
|
'mgmt_ip_address_VNF1: <% task(create_ns_VNF1).result.'\
|
||||||
|
'vnf.mgmt_ip_address %>\n status_VNF1: <% '\
|
||||||
|
'task(create_ns_VNF1).result.vnf.status %>\n'\
|
||||||
|
' vim_id_VNF1: <% task(create_ns_VNF1).'\
|
||||||
|
'result.vnf.vim_id %>\n vnf_id_VNF1: <% '\
|
||||||
|
'task(create_ns_VNF1).result.vnf.id %>\n'\
|
||||||
|
' create_ns_VNF2:\n action: tacker.create_vnf '\
|
||||||
|
'body=<% $.ns.VNF2 %>\n input:\n '\
|
||||||
|
'body: <% $.ns.VNF2 %>\n on-success:\n'\
|
||||||
|
' - wait_vnf_active_VNF2\n publish:\n '\
|
||||||
|
'mgmt_ip_address_VNF2: <% task(create_ns_VNF2).result.vnf.'\
|
||||||
|
'mgmt_ip_address %>\n status_VNF2: <% task(create_ns_VNF2)'\
|
||||||
|
'.result.vnf.status %>\n vim_id_VNF2: <% '\
|
||||||
|
'task(create_ns_VNF2).result.vnf.vim_id %>\n'\
|
||||||
|
' vnf_id_VNF2: <% task(create_ns_VNF2).result.vnf.id '\
|
||||||
|
'%>\n delete_vnf_VNF1:\n action: tacker.delete_vnf vnf'\
|
||||||
|
'=<% $.vnf_id_VNF1%>\n input:\n body:\n '\
|
||||||
|
'vnf:\n attributes:\n force: false\n'\
|
||||||
|
' delete_vnf_VNF2:\n action: tacker.delete_vnf'\
|
||||||
|
' vnf=<% $.vnf_id_VNF2%>\n input:\n body:\n'\
|
||||||
|
' vnf:\n attributes:\n '\
|
||||||
|
'force: false\n wait_vnf_active_VNF1:\n action:'\
|
||||||
|
' tacker.show_vnf vnf=<% $.vnf_id_VNF1 %>\n on-success:\n'\
|
||||||
|
' - delete_vnf_VNF1: <% $.status_VNF1="ERROR" %>\n '\
|
||||||
|
'publish:\n mgmt_ip_address_VNF1: \' <% '\
|
||||||
|
'task(wait_vnf_active_VNF1).result.vnf.mgmt_ip_address\n'\
|
||||||
|
' %>\'\n status_VNF1: <% '\
|
||||||
|
'task(wait_vnf_active_VNF1).result.vnf.status %>\n '\
|
||||||
|
'retry:\n break-on: <% $.status_VNF1 = "ERROR"'\
|
||||||
|
' %>\n continue-on: <% $.status_VNF1 = "PENDING_CREATE" '\
|
||||||
|
'%>\n count: 10\n delay: 10\n '\
|
||||||
|
'wait_vnf_active_VNF2:\n action: tacker.show_vnf vnf=<% '\
|
||||||
|
'$.vnf_id_VNF2 %>\n on-success:\n '\
|
||||||
|
'- delete_vnf_VNF2: <% $.status_VNF2="ERROR" %>\n '\
|
||||||
|
'publish:\n mgmt_ip_address_VNF2: \' <% '\
|
||||||
|
'task(wait_vnf_active_VNF2).result.vnf.mgmt_ip_address\n'\
|
||||||
|
' %>\'\n status_VNF2: '\
|
||||||
|
'<% task(wait_vnf_active_VNF2).result.vnf.status %>\n'\
|
||||||
|
' retry:\n break-on: <% $.status_VNF2 = '\
|
||||||
|
'"ERROR" %>\n continue-on: '\
|
||||||
|
'<% $.status_VNF2 = "PENDING_CREATE" %>\n '\
|
||||||
|
'count: 10\n '\
|
||||||
|
'delay: 10\n type: direct\nversion: \'2.0\'\n'
|
||||||
|
|
||||||
with patch.object(TackerManager, 'get_service_plugins') as \
|
with patch.object(TackerManager, 'get_service_plugins') as \
|
||||||
mock_plugins:
|
mock_plugins:
|
||||||
mock_plugins.return_value = {'VNFM': FakeVNFMPlugin()}
|
mock_plugins.return_value = {'VNFM': FakeVNFMPlugin()}
|
||||||
@ -1072,11 +1245,16 @@ class TestNfvoPlugin(db_base.SqlTestCase):
|
|||||||
self.assertEqual(ns_obj['ns']['name'], result['name'])
|
self.assertEqual(ns_obj['ns']['name'], result['name'])
|
||||||
self.assertIn('status', result)
|
self.assertIn('status', result)
|
||||||
self.assertIn('tenant_id', result)
|
self.assertIn('tenant_id', result)
|
||||||
|
mock_mistral_client().workflows.create.\
|
||||||
|
assert_called_with(sample_yaml)
|
||||||
|
|
||||||
@mock.patch.object(nfvo_plugin.NfvoPlugin, 'get_auth_dict')
|
@mock.patch.object(nfvo_plugin.NfvoPlugin, 'get_auth_dict')
|
||||||
@mock.patch.object(vim_client.VimClient, 'get_vim')
|
@mock.patch.object(vim_client.VimClient, 'get_vim',
|
||||||
|
return_value={"vim_type": "openstack"})
|
||||||
@mock.patch.object(nfvo_plugin.NfvoPlugin, '_get_by_name')
|
@mock.patch.object(nfvo_plugin.NfvoPlugin, '_get_by_name')
|
||||||
def test_create_ns_empty_description(self, mock_get_by_name,
|
@mock.patch.object(openstack_driver.OpenStack_Driver, 'get_mistral_client')
|
||||||
|
def test_create_ns_empty_description(self, mock_mistral_client,
|
||||||
|
mock_get_by_name,
|
||||||
mock_get_vimi, mock_auth_dict):
|
mock_get_vimi, mock_auth_dict):
|
||||||
self._insert_dummy_ns_template()
|
self._insert_dummy_ns_template()
|
||||||
self._insert_dummy_vim()
|
self._insert_dummy_vim()
|
||||||
@ -1100,10 +1278,12 @@ class TestNfvoPlugin(db_base.SqlTestCase):
|
|||||||
|
|
||||||
@mock.patch('tacker.nfvo.nfvo_plugin.NfvoPlugin.create_nsd')
|
@mock.patch('tacker.nfvo.nfvo_plugin.NfvoPlugin.create_nsd')
|
||||||
@mock.patch.object(nfvo_plugin.NfvoPlugin, 'get_auth_dict')
|
@mock.patch.object(nfvo_plugin.NfvoPlugin, 'get_auth_dict')
|
||||||
@mock.patch.object(vim_client.VimClient, 'get_vim')
|
@mock.patch.object(vim_client.VimClient, 'get_vim',
|
||||||
|
return_value={"vim_type": "openstack"})
|
||||||
@mock.patch.object(nfvo_plugin.NfvoPlugin, '_get_by_name')
|
@mock.patch.object(nfvo_plugin.NfvoPlugin, '_get_by_name')
|
||||||
def test_create_ns_inline(self, mock_get_by_name, mock_get_vimi,
|
@mock.patch.object(openstack_driver.OpenStack_Driver, 'get_mistral_client')
|
||||||
mock_auth_dict, mock_create_nsd):
|
def test_create_ns_inline(self, mock_mistral_client, mock_get_by_name,
|
||||||
|
mock_get_vimi, mock_auth_dict, mock_create_nsd):
|
||||||
self._insert_dummy_ns_template_inline()
|
self._insert_dummy_ns_template_inline()
|
||||||
self._insert_dummy_vim()
|
self._insert_dummy_vim()
|
||||||
mock_auth_dict.return_value = {
|
mock_auth_dict.return_value = {
|
||||||
@ -1131,10 +1311,15 @@ class TestNfvoPlugin(db_base.SqlTestCase):
|
|||||||
mock_create_nsd.assert_called_once_with(mock.ANY, mock.ANY)
|
mock_create_nsd.assert_called_once_with(mock.ANY, mock.ANY)
|
||||||
|
|
||||||
@mock.patch.object(nfvo_plugin.NfvoPlugin, 'get_auth_dict')
|
@mock.patch.object(nfvo_plugin.NfvoPlugin, 'get_auth_dict')
|
||||||
@mock.patch.object(vim_client.VimClient, 'get_vim')
|
@mock.patch.object(vim_client.VimClient, 'get_vim',
|
||||||
|
return_value={"vim_type": "openstack"})
|
||||||
@mock.patch.object(nfvo_plugin.NfvoPlugin, '_get_by_name')
|
@mock.patch.object(nfvo_plugin.NfvoPlugin, '_get_by_name')
|
||||||
|
@mock.patch('tacker.common.driver_manager.DriverManager.invoke',
|
||||||
|
side_effect=nfvo.NoTasksException(action='create',
|
||||||
|
resource='ns'))
|
||||||
def test_create_ns_workflow_no_task_exception(
|
def test_create_ns_workflow_no_task_exception(
|
||||||
self, mock_get_by_name, mock_get_vimi, mock_auth_dict):
|
self, mock_mistral_client, mock_get_by_name,
|
||||||
|
mock_get_vimi, mock_auth_dict):
|
||||||
self._insert_dummy_ns_template()
|
self._insert_dummy_ns_template()
|
||||||
self._insert_dummy_vim()
|
self._insert_dummy_vim()
|
||||||
mock_auth_dict.return_value = {
|
mock_auth_dict.return_value = {
|
||||||
|
Loading…
Reference in New Issue
Block a user