Allow VNF package upload without policies

If you upload a vnf package without policies, currently
it fails with an error message:
 "InvalidCSAR: 'NoneType' object is not iterable".

This patch fixes this issue.

Closes-Bug: #1847745

Change-Id: I4d6907b4da639e62294f07cbc767a176af04337c
This commit is contained in:
nirajsingh 2019-10-11 10:41:13 +00:00
parent d0c2fb6635
commit 83bc8468b6
4 changed files with 17 additions and 4 deletions

View File

@ -236,9 +236,11 @@ def _validate_sw_image_data_for_artifacts(tosca):
def _get_data_from_csar(tosca, context, id):
for tp in tosca.nested_tosca_templates_with_topology:
levels = _get_instantiation_levels_from_policy(tp.tpl.get("policies"))
for policy_tpl in tp.tpl.get("policies"):
_validate_instantiation_levels(policy_tpl, levels)
policies = tp.tpl.get("policies")
if policies:
levels = _get_instantiation_levels_from_policy(policies)
for policy_tpl in policies:
_validate_instantiation_levels(policy_tpl, levels)
_validate_sw_image_data_for_artifacts(tosca)
vnf_data = _get_vnf_data(tosca.nodetemplates)

View File

@ -179,7 +179,7 @@ class Conductor(manager.Manager):
deploy_flavour.flavour_id = flavour['flavour_id']
deploy_flavour.flavour_description = flavour['flavour_description']
deploy_flavour.instantiation_levels = \
flavour['instantiation_levels']
flavour.get('instantiation_levels')
deploy_flavour.create()
sw_images = flavour.get('sw_images')

Binary file not shown.

View File

@ -162,3 +162,14 @@ class TestCSARUtils(testtools.TestCase):
csar_utils.delete_csar_data(constants.UUID)
mock_rmtree.assert_called()
mock_remove.assert_called()
@mock.patch('tacker.common.csar_utils._extract_csar_zip_file')
def test_load_csar_data_without_policies(
self, mock_extract_csar_zip_file):
file_path = os.path.join(
self.base_path, "../../etc/samples/"
"csar_without_policies.zip")
vnf_data, flavours = csar_utils.load_csar_data(
self.context, constants.UUID, file_path)
self.assertIsNone(flavours[0].get('instantiation_levels'))
self.assertEqual(vnf_data['descriptor_version'], '1.0')