Exemplo n.º 1
0
    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']
        )
Exemplo n.º 2
0
 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)
Exemplo n.º 3
0
 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)
Exemplo n.º 4
0
 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)
Exemplo n.º 5
0
    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)