Merge "VMware:Fix error creating vCenter inventory folder"

This commit is contained in:
Jenkins 2015-01-23 09:38:16 +00:00 committed by Gerrit Code Review
commit ea64e3584a
2 changed files with 31 additions and 11 deletions

View File

@ -378,6 +378,24 @@ class VolumeOpsTestCase(test.TestCase):
mock.sentinel.dc,
'vmFolder')
def test_create_folder_with_empty_vmfolder(self):
"""Test create_folder when the datacenter vmFolder is empty"""
child_folder = mock.sentinel.child_folder
self.session.invoke_api.side_effect = [None, child_folder]
parent_folder = mock.sentinel.parent_folder
child_name = 'child_folder'
ret = self.vops.create_folder(parent_folder, child_name)
self.assertEqual(child_folder, ret)
expected_calls = [mock.call(vim_util, 'get_object_property',
self.session.vim, parent_folder,
'childEntity'),
mock.call(self.session.vim, 'CreateFolder',
parent_folder, name=child_name)]
self.assertEqual(expected_calls,
self.session.invoke_api.call_args_list)
def test_create_folder_not_present(self):
"""Test create_folder when child not present."""
parent_folder = mock.sentinel.parent_folder

View File

@ -523,18 +523,20 @@ class VMwareVolumeOps(object):
prop_val = self._session.invoke_api(vim_util, 'get_object_property',
self._session.vim, parent_folder,
'childEntity')
child_entities = prop_val.ManagedObjectReference
# Return if the child folder with input name is already present
for child_entity in child_entities:
if child_entity._type != 'Folder':
continue
child_entity_name = self.get_entity_name(child_entity)
if child_entity_name and (urllib.unquote(child_entity_name) ==
child_folder_name):
LOG.debug("Child folder: %s already present.",
child_folder_name)
return child_entity
if prop_val and hasattr(prop_val, 'ManagedObjectReference'):
child_entities = prop_val.ManagedObjectReference
# Return if the child folder with input name is already present
for child_entity in child_entities:
if child_entity._type != 'Folder':
continue
child_entity_name = self.get_entity_name(child_entity)
if child_entity_name and (urllib.unquote(child_entity_name) ==
child_folder_name):
LOG.debug("Child folder: %s already present.",
child_folder_name)
return child_entity
# Need to create the child folder
child_folder = self._session.invoke_api(self._session.vim,