def test_deletion_task_called(self, mdeletion_execute): cluster = self.env.create_cluster() cluster_id = cluster['id'] node_db = self.env.create_node( api=False, cluster_id=cluster['id'], pending_addition=False, pending_deletion=True, status=NODE_STATUSES.ready, roles=['controller']) manager_ = manager.ApplyChangesTaskManager(cluster_id) manager_.execute() self.assertEqual(mdeletion_execute.call_count, 1) nodes = mdeletion_execute.call_args[0][1] # unfortunately assertItemsEqual does not recurse into dicts self.assertItemsEqual( nodes['nodes_to_delete'], task.DeletionTask.prepare_nodes_for_task( [node_db])['nodes_to_delete'] ) self.assertItemsEqual( nodes['nodes_to_restore'], task.DeletionTask.prepare_nodes_for_task( [node_db])['nodes_to_restore'] )
def test_no_changes_no_cry(self): self.env.create( nodes_kwargs=[ {"status": "ready"} ] ) cluster_db = self.env.clusters[0] objects.Cluster.clear_pending_changes(cluster_db) manager_ = manager.ApplyChangesTaskManager(cluster_db.id) self.assertRaises(errors.WrongNodeStatus, manager_.execute)
def test_no_node_no_cry(self): cluster = self.env.create_cluster(api=True) cluster_id = cluster['id'] manager_ = manager.ApplyChangesTaskManager(cluster_id) task = models.Task(name='provision', cluster_id=cluster_id) self.db.add(task) self.db.commit() rpc.receiver.NailgunReceiver.deploy_resp(nodes=[ {'uid': 666, 'id': 666, 'status': 'discover'} ], task_uuid=task.uuid) self.assertRaises(errors.WrongNodeStatus, manager_.execute)
def test_apply_changes_exception_caught(self, mdeletion_execute): self.env.create( nodes_kwargs=[ {"pending_deletion": True, "status": NODE_STATUSES.ready}, ] ) cluster_db = self.env.clusters[0] objects.Cluster.clear_pending_changes(cluster_db) manager_ = manager.ApplyChangesTaskManager(cluster_db.id) mdeletion_execute.side_effect = Exception('exception') task = manager_.execute() self.assertEqual(task.status, TASK_STATUSES.error)
def test_deletion_task_w_check_ceph(self, mdeletion_execute): cluster = self.env.create_cluster() cluster_id = cluster['id'] self.env.create_node(api=False, cluster_id=cluster['id'], pending_addition=False, pending_deletion=True, status=NODE_STATUSES.ready, roles=['controller']) manager_ = manager.ApplyChangesTaskManager(cluster_id) manager_.execute() self.assertEqual(mdeletion_execute.call_count, 1) kwargs = mdeletion_execute.call_args[1] self.assertEqual(kwargs['check_ceph'], True)