Example #1
0
 def test_info_error_exception(self):
     mock_task = MagicMock()
     prop_mock_state = PropertyMock(return_value='error')
     prop_mock_error = PropertyMock(side_effect=Exception('error exc'))
     type(mock_task.info).state = prop_mock_state
     type(mock_task.info).error = prop_mock_error
     with self.assertRaises(Exception) as excinfo:
         salt.utils.vmware.wait_for_task(mock_task, 'fake_instance_name',
                                         'task_type')
     self.assertEqual(excinfo.exception.message, 'error exc')
Example #2
0
 def test_info_state_success(self):
     mock_task = MagicMock()
     prop_mock_state = PropertyMock(return_value='success')
     prop_mock_result = PropertyMock()
     type(mock_task.info).state = prop_mock_state
     type(mock_task.info).result = prop_mock_result
     salt.utils.vmware.wait_for_task(mock_task, 'fake_instance_name',
                                     'task_type')
     self.assertEqual(prop_mock_state.call_count, 3)
     self.assertEqual(prop_mock_result.call_count, 1)
Example #3
0
 def test_inner_loop_task_info_raise_runtime_fault(self):
     exc = vmodl.RuntimeFault()
     exc.msg = 'RuntimeFault msg'
     mock_task = MagicMock()
     mock_info1 = MagicMock()
     type(mock_task).info = PropertyMock(side_effect=[mock_info1, exc])
     type(mock_info1).state = PropertyMock(side_effect=['running', 'bad'])
     with self.assertRaises(excs.VMwareRuntimeError) as excinfo:
         salt.utils.vmware.wait_for_task(mock_task, 'fake_instance_name',
                                         'task_type')
     self.assertEqual(excinfo.exception.strerror, 'RuntimeFault msg')
Example #4
0
 def test_info_state_queued(self):
     mock_task = MagicMock()
     # The 'bad' values are invalid in the while loop
     prop_mock_state = PropertyMock(
         side_effect=['bad', 'queued', 'bad', 'bad', 'success'])
     prop_mock_result = PropertyMock()
     type(mock_task.info).state = prop_mock_state
     type(mock_task.info).result = prop_mock_result
     salt.utils.vmware.wait_for_task(mock_task, 'fake_instance_name',
                                     'task_type')
     self.assertEqual(prop_mock_state.call_count, 5)
     self.assertEqual(prop_mock_result.call_count, 1)
Example #5
0
 def test_info_error_system_fault(self):
     exc = vmodl.fault.SystemError()
     exc.msg = 'SystemError msg'
     mock_task = MagicMock()
     prop_mock_state = PropertyMock(return_value='error')
     prop_mock_error = PropertyMock(side_effect=exc)
     type(mock_task.info).state = prop_mock_state
     type(mock_task.info).error = prop_mock_error
     with self.assertRaises(excs.VMwareSystemError) as excinfo:
         salt.utils.vmware.wait_for_task(mock_task, 'fake_instance_name',
                                         'task_type')
     self.assertEqual(excinfo.exception.strerror, 'SystemError msg')
Example #6
0
 def test_info_state_different_no_error_attr(self):
     mock_task = MagicMock()
     # The 'bad' values are invalid in the while loop
     prop_mock_state = PropertyMock(return_value='error')
     prop_mock_error = PropertyMock(side_effect=Exception('error exc'))
     type(mock_task.info).state = prop_mock_state
     type(mock_task.info).error = prop_mock_error
     with self.assertRaises(Exception) as excinfo:
         salt.utils.vmware.wait_for_task(mock_task, 'fake_instance_name',
                                         'task_type')
     self.assertEqual(prop_mock_state.call_count, 3)
     self.assertEqual(prop_mock_error.call_count, 1)
     self.assertEqual('error exc', excinfo.exception.message)
Example #7
0
 def test_info_state_running_continues_loop(self):
     mock_task = MagicMock()
     # The 'fake' values are required to match all the lookups and end the
     # loop
     prop_mock_state = PropertyMock(
         side_effect=['running', 'fake', 'fake', 'success'])
     prop_mock_result = PropertyMock()
     type(mock_task.info).state = prop_mock_state
     type(mock_task.info).result = prop_mock_result
     salt.utils.vmware.wait_for_task(mock_task, 'fake_instance_name',
                                     'task_type')
     self.assertEqual(prop_mock_state.call_count, 4)
     self.assertEqual(prop_mock_result.call_count, 1)
Example #8
0
 def test_info_error_invalid_argument_no_fault_message(self):
     exc = vmodl.fault.InvalidArgument()
     exc.faultMessage = None
     exc.msg = 'InvalidArgumentFault msg'
     mock_task = MagicMock()
     prop_mock_state = PropertyMock(return_value='error')
     prop_mock_error = PropertyMock(side_effect=exc)
     type(mock_task.info).state = prop_mock_state
     type(mock_task.info).error = prop_mock_error
     with self.assertRaises(excs.VMwareApiError) as excinfo:
         salt.utils.vmware.wait_for_task(mock_task, 'fake_instance_name',
                                         'task_type')
     self.assertEqual(excinfo.exception.strerror,
                      'InvalidArgumentFault msg')
Example #9
0
 def test_raise_runtime_fault(self):
     exc = vmodl.RuntimeFault()
     exc.msg = 'RuntimeFault msg'
     type(self.mock_content).rootFolder = PropertyMock(side_effect=exc)
     with self.assertRaises(excs.VMwareRuntimeError) as excinfo:
         salt.utils.vmware.get_root_folder(self.mock_si)
     self.assertEqual(excinfo.exception.strerror, 'RuntimeFault msg')
Example #10
0
 def test_api_type_raise_runtime_fault(self):
     exc = vmodl.RuntimeFault()
     exc.msg = 'RuntimeFault msg'
     mock_si = MagicMock()
     type(mock_si.content.about).apiType = PropertyMock(side_effect=exc)
     with self.assertRaises(excs.VMwareRuntimeError) as excinfo:
         salt.utils.vmware.is_connection_to_a_vcenter(mock_si)
     self.assertEqual(excinfo.exception.strerror, 'RuntimeFault msg')
Example #11
0
 def test_first_task_info_raise_vim_fault(self):
     exc = vim.fault.VimFault()
     exc.msg = 'VimFault msg'
     mock_task = MagicMock()
     type(mock_task).info = PropertyMock(side_effect=exc)
     with self.assertRaises(excs.VMwareApiError) as excinfo:
         salt.utils.vmware.wait_for_task(mock_task, 'fake_instance_name',
                                         'task_type')
     self.assertEqual(excinfo.exception.strerror, 'VimFault msg')
Example #12
0
    def test_one_elem_one_property(self):
        obj_mock = MagicMock()

        # property mock
        prop_set_obj_mock = MagicMock()
        prop_set_obj_name_prop = PropertyMock(return_value='prop_name')
        prop_set_obj_val_prop = PropertyMock(return_value='prop_value')
        type(prop_set_obj_mock).name = prop_set_obj_name_prop
        type(prop_set_obj_mock).val = prop_set_obj_val_prop

        # obj.propSet
        propSet_prop = PropertyMock(return_value=[prop_set_obj_mock])
        type(obj_mock).propSet = propSet_prop

        # obj.obj
        inner_obj_mock = MagicMock()
        obj_prop = PropertyMock(return_value=inner_obj_mock)
        type(obj_mock).obj = obj_prop

        get_content = MagicMock(return_value=[obj_mock])
        with patch('salt.utils.vmware.get_content', get_content):
            ret = salt.utils.vmware.get_mors_with_properties(
                self.si,
                self.obj_type,
                self.prop_list,
                self.container_ref,
                self.traversal_spec,
                local_properties=False)
        get_content.assert_called_once_with(self.si,
                                            self.obj_type,
                                            property_list=self.prop_list,
                                            container_ref=self.container_ref,
                                            traversal_spec=self.traversal_spec,
                                            local_properties=False)
        self.assertEqual(propSet_prop.call_count, 1)
        self.assertEqual(prop_set_obj_name_prop.call_count, 1)
        self.assertEqual(prop_set_obj_val_prop.call_count, 1)
        self.assertEqual(obj_prop.call_count, 1)
        self.assertEqual(len(ret), 1)
        self.assertDictEqual(ret[0], {
            'prop_name': 'prop_value',
            'object': inner_obj_mock
        })
Example #13
0
    def test_local_properties_set(self):
        obj_mock = MagicMock()
        # obj.propSet
        propSet_prop = PropertyMock(return_value=[])
        type(obj_mock).propSet = propSet_prop
        # obj.obj
        inner_obj_mock = MagicMock()
        obj_prop = PropertyMock(return_value=inner_obj_mock)
        type(obj_mock).obj = obj_prop

        get_content = MagicMock(return_value=[obj_mock])
        with patch('salt.utils.vmware.get_content', get_content):
            ret = salt.utils.vmware.get_mors_with_properties(
                self.si, self.obj_type, self.prop_list,
                self.container_ref, self.traversal_spec,
                local_properties=True)
        get_content.assert_called_once_with(
            self.si, self.obj_type,
            property_list=self.prop_list,
            container_ref=self.container_ref,
            traversal_spec=self.traversal_spec,
            local_properties=True)
Example #14
0
    def test_multiple_element_content(self):
        # obj1
        obj1_mock = MagicMock()
        # obj1.propSet
        obj1_propSet_prop = PropertyMock(return_value=[])
        type(obj1_mock).propSet = obj1_propSet_prop
        # obj1.obj
        obj1_inner_obj_mock = MagicMock()
        obj1_obj_prop = PropertyMock(return_value=obj1_inner_obj_mock)
        type(obj1_mock).obj = obj1_obj_prop
        # obj2
        obj2_mock = MagicMock()
        # obj2.propSet
        obj2_propSet_prop = PropertyMock(return_value=[])
        type(obj2_mock).propSet = obj2_propSet_prop
        # obj2.obj
        obj2_inner_obj_mock = MagicMock()
        obj2_obj_prop = PropertyMock(return_value=obj2_inner_obj_mock)
        type(obj2_mock).obj = obj2_obj_prop

        get_content = MagicMock(return_value=[obj1_mock, obj2_mock])
        with patch('salt.utils.vmware.get_content', get_content):
            ret = salt.utils.vmware.get_mors_with_properties(
                self.si, self.obj_type, self.prop_list, self.container_ref,
                self.traversal_spec)
        get_content.assert_called_once_with(self.si,
                                            self.obj_type,
                                            property_list=self.prop_list,
                                            container_ref=self.container_ref,
                                            traversal_spec=self.traversal_spec,
                                            local_properties=False)
        self.assertEqual(obj1_propSet_prop.call_count, 1)
        self.assertEqual(obj2_propSet_prop.call_count, 1)
        self.assertEqual(obj1_obj_prop.call_count, 1)
        self.assertEqual(obj2_obj_prop.call_count, 1)
        self.assertEqual(len(ret), 2)
        self.assertDictEqual(ret[0], {'object': obj1_inner_obj_mock})
        self.assertDictEqual(ret[1], {'object': obj2_inner_obj_mock})
Example #15
0
    def setUp(self):
        # setup the service instance
        self.si_mock = MagicMock()
        # RootFolder
        self.root_folder_mock = MagicMock()
        self.root_folder_prop = PropertyMock(
            return_value=self.root_folder_mock)
        type(self.si_mock.content).rootFolder = self.root_folder_prop
        # CreateContainerView()
        self.container_view_mock = MagicMock()
        self.create_container_view_mock = \
                MagicMock(return_value=self.container_view_mock)
        self.si_mock.content.viewManager.CreateContainerView = \
                self.create_container_view_mock
        # RetrieveContents()
        self.result_mock = MagicMock()
        self.retrieve_contents_mock = MagicMock(return_value=self.result_mock)
        self.si_mock.content.propertyCollector.RetrieveContents = \
                self.retrieve_contents_mock
        # Destroy()
        self.destroy_mock = MagicMock()
        self.container_view_mock.Destroy = self.destroy_mock

        # override mocks
        self.obj_type_mock = MagicMock()
        self.traversal_spec_ret_mock = MagicMock()
        self.traversal_spec_mock = \
                MagicMock(return_value=self.traversal_spec_ret_mock)
        self.property_spec_ret_mock = MagicMock()
        self.property_spec_mock = \
                MagicMock(return_value=self.property_spec_ret_mock)
        self.obj_spec_ret_mock = MagicMock()
        self.obj_spec_mock = \
                MagicMock(return_value=self.obj_spec_ret_mock)
        self.filter_spec_ret_mock = MagicMock()
        self.filter_spec_mock = \
                MagicMock(return_value=self.filter_spec_ret_mock)
Example #16
0
 def setUp(self):
     self.mock_si = MagicMock()
     self.mock_stub = PropertyMock()
     self.mock_mo_ref = MagicMock(_stub=self.mock_stub)