def test_load_pending_tasks_error(self):
        mock_pm = MagicMock(powermanager)
        mock_pm._db = MagicMock(DB_mysql)
        mock_pm._db.sql_query.return_value = False, None, {}

        self.assertEquals(powermanager._load_pending_tasks(mock_pm), [])
        self.assertIn(
            "Error trying to load INDIGO orchestrator tasks data", self.log.getvalue())
    def test_load_mvs_seen(self):
        mock_pm = MagicMock(powermanager)
        mock_pm._db = MagicMock(DB_mysql)
        mock_pm._db.sql_query.return_value = True, None, [
            {'vnode1', 'ee6a8510-974c-411c-b8ff-71bb133148eb'}]
        powermanager._load_mvs_seen(mock_pm)

        self.assertEquals(mock_pm.VM_Node.call_count, 1)
        self.assertEquals(
            mock_pm.VM_Node.call_args_list, [call('ee6a8510-974c-411c-b8ff-71bb133148eb')])
    def test_load_pending_tasks(self):
        mock_pm = MagicMock(powermanager)
        mock_pm._db = MagicMock(DB_mysql)
        mock_pm._db.sql_query.return_value = True, None, [
            {'task1', 'POWER_ON'}, {'task2', 'POWER_OFF'}]
        powermanager._load_pending_tasks(mock_pm)

        self.assertEquals(mock_pm.Task.call_count, 2)
        self.assertEquals(mock_pm.Task.call_args_list, [
                          call('task1', 'POWER_ON'), call('POWER_OFF', 'task2')])
    def test_create_db(self):
        mock_pm = MagicMock(powermanager)
        mock_pm._db = MagicMock()
        mock_pm._db.sql_query.return_value = (True, "", "")
        powermanager._create_db(mock_pm)

        call1 = call(
            'CREATE TABLE IF NOT EXISTS orchestrator_vms(node_name varchar(128) PRIMARY KEY, uuid varchar(128))', True)
        call2 = call(
            'CREATE TABLE IF NOT EXISTS orchestrator_tasks(node_name varchar(128), operation int)', True)
        self.assertEquals(mock_pm._db.sql_query.call_args_list, [call1, call2])
    def test_delete_mvs_seen(self):
        mock_pm = MagicMock(powermanager)
        mock_pm._mvs_seen = {
            'test_name_0': '0', 'test_name_1': '1', 'test_name_2': '2'}
        mock_pm._db = MagicMock()
        mock_pm._db.sql_query.return_value = (True, "", "")
        powermanager._delete_mvs_seen(mock_pm, 'test_name_1')

        self.assertEquals(
            mock_pm._mvs_seen, {'test_name_0': '0', 'test_name_2': '2'})
        self.assertEquals(mock_pm._db.sql_query.call_args_list,
                          [call("DELETE FROM orchestrator_vms WHERE node_name = 'test_name_1'", True)])
    def test_add_mvs_seen(self):
        mock_pm = MagicMock(powermanager)
        mock_pm._mvs_seen = {'test_name_0': '0'}
        mock_pm._db = MagicMock()
        mock_pm._db.sql_query.return_value = (True, "", "")
        mock_vm = MagicMock()
        mock_vm.vm_id = 1
        powermanager._add_mvs_seen(mock_pm, 'test_name_1', mock_vm)

        self.assertEquals(
            mock_pm._mvs_seen, {'test_name_0': '0', 'test_name_1': mock_vm})
        self.assertEquals(mock_pm._db.sql_query.call_args_list,
                          [call("INSERT INTO orchestrator_vms VALUES ('test_name_1', '1')", True)])
 def test_create_db_error(self):
     mock_pm = MagicMock(powermanager)
     mock_pm._db = MagicMock()
     powermanager._create_db(mock_pm)
     self.assertIn(
         "Error creating INDIGO orchestrator plugin DB", self.log.getvalue())