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
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,