def test_node_get_by_cluster(self): cluster1 = shared.create_cluster(self.ctx, self.profile) node0 = shared.create_node(self.ctx, None, self.profile) node1 = shared.create_node(self.ctx, self.cluster, self.profile) node2 = shared.create_node(self.ctx, self.cluster, self.profile) node3 = shared.create_node(self.ctx, cluster1, self.profile) nodes = db_api.node_get_all_by_cluster(self.ctx, self.cluster.id) self.assertEqual(2, len(nodes)) self.assertEqual(set([node1.id, node2.id]), set([nodes[0].id, nodes[1].id])) # retrieve orphan nodes nodes = db_api.node_get_all_by_cluster(self.ctx, '') self.assertEqual(1, len(nodes)) self.assertEqual(node0.id, nodes[0].id) # retrieve all nodes nodes = db_api.node_get_all_by_cluster(self.ctx, None) self.assertEqual(4, len(nodes)) self.assertEqual(node0.id, nodes[0].id) nodes = db_api.node_get_all_by_cluster(self.ctx, cluster1.id) self.assertEqual(1, len(nodes)) self.assertEqual(node3.id, nodes[0].id)
def test_node_delete(self): node = shared.create_node(self.ctx, self.cluster, self.profile) node_id = node.id nodes = db_api.node_get_all_by_cluster(self.ctx, self.cluster.id) self.assertEqual(1, len(nodes)) db_api.node_delete(self.ctx, node_id) res = db_api.node_get(self.ctx, node_id) self.assertIsNone(res) nodes = db_api.node_get_all_by_cluster(self.ctx, self.cluster.id) self.assertEqual(0, len(nodes))
def test_node_get_by_cluster_admin_context(self): shared.create_cluster(self.ctx, self.profile) node1 = shared.create_node(self.ctx, self.cluster, self.profile) node2 = shared.create_node(self.ctx, self.cluster, self.profile) admin_ctx = utils.dummy_context(project='a_different_project', is_admin=True) nodes = db_api.node_get_all_by_cluster(admin_ctx, self.cluster.id) self.assertEqual(0, len(nodes)) nodes = db_api.node_get_all_by_cluster(admin_ctx, self.cluster.id, project_safe=False) self.assertEqual(2, len(nodes)) self.assertEqual(set([node1.id, node2.id]), set([nodes[0].id, nodes[1].id]))
def test_node_get_by_cluster_diff_project(self): shared.create_cluster(self.ctx, self.profile) node1 = shared.create_node(self.ctx, self.cluster, self.profile) node2 = shared.create_node(self.ctx, self.cluster, self.profile) nodes = db_api.node_get_all_by_cluster(self.ctx, self.cluster.id) self.assertEqual(2, len(nodes)) self.assertEqual(set([node1.id, node2.id]), set([nodes[0].id, nodes[1].id])) ctx_new = utils.dummy_context(project='a_different_project') nodes = db_api.node_get_all_by_cluster(ctx_new, self.cluster.id) self.assertEqual(0, len(nodes)) nodes = db_api.node_get_all_by_cluster(ctx_new, self.cluster.id, project_safe=False) self.assertEqual(2, len(nodes))
def test_node_get(self): res = shared.create_node(self.ctx, self.cluster, self.profile) node = db_api.node_get(self.ctx, res.id) self.assertIsNotNone(node) node = db_api.node_get(self.ctx, UUID2) self.assertIsNone(node) nodes = db_api.node_get_all_by_cluster(self.ctx, self.cluster.id) self.assertEqual(1, len(nodes))
def test_node_migrate_to_none(self): node = shared.create_node(self.ctx, self.cluster, self.profile) timestamp = tu.utcnow(True) node_new = db_api.node_migrate(self.ctx, node.id, None, timestamp) self.assertEqual(timestamp, node_new.updated_at) self.assertEqual('', node_new.cluster_id) nodes = db_api.node_get_all_by_cluster(self.ctx, self.cluster.id) self.assertEqual(0, len(nodes))
def test_node_migrate_to_none(self): node = shared.create_node(self.ctx, self.cluster, self.profile) timestamp = tu.utcnow() node_new = db_api.node_migrate(self.ctx, node.id, None, timestamp) self.assertEqual(timestamp, node_new.updated_at) self.assertEqual('', node_new.cluster_id) nodes = db_api.node_get_all_by_cluster(self.ctx, self.cluster.id) self.assertEqual(0, len(nodes))
def test_node_migrate_from_none(self): node_orphan = shared.create_node(self.ctx, None, self.profile) timestamp = tu.utcnow() node = db_api.node_migrate(self.ctx, node_orphan.id, self.cluster.id, timestamp) cluster = db_api.cluster_get(self.ctx, self.cluster.id) self.assertEqual(timestamp, node.updated_time) self.assertEqual(self.cluster.id, node.cluster_id) self.assertEqual(2, cluster.next_index) nodes = db_api.node_get_all_by_cluster(self.ctx, self.cluster.id) self.assertEqual(1, len(nodes))
def test_node_create(self): nodes = db_api.node_get_all_by_cluster(self.ctx, self.cluster.id) self.assertEqual(0, len(nodes)) res = shared.create_node(self.ctx, self.cluster, self.profile) node = db_api.node_get(self.ctx, res.id) self.assertIsNotNone(node) self.assertEqual('test_node_name', node.name) self.assertEqual(UUID1, node.physical_id) self.assertEqual(1, node.index) self.assertIsNone(node.role) self.assertIsNone(node.created_at) self.assertIsNone(node.updated_at) self.assertEqual('ACTIVE', node.status) self.assertEqual('create complete', node.status_reason) self.assertEqual('{"foo": "123"}', jsonutils.dumps(node.meta_data)) self.assertEqual('{"key1": "value1"}', jsonutils.dumps(node.data)) self.assertEqual(self.cluster.id, node.cluster_id) self.assertEqual(self.profile.id, node.profile_id) nodes = db_api.node_get_all_by_cluster(self.ctx, self.cluster.id) self.assertEqual(1, len(nodes))
def test_get_all_by_cluster_with_filters(self): cluster1 = shared.create_cluster(self.ctx, self.profile) shared.create_node(self.ctx, None, self.profile, role="slave") node1 = shared.create_node(self.ctx, self.cluster, self.profile, role="slave") shared.create_node(self.ctx, self.cluster, self.profile, role="master") shared.create_node(self.ctx, cluster1, self.profile, role="unknown") nodes = db_api.node_get_all_by_cluster(self.ctx, self.cluster.id, filters={"role": ["slave"]}) self.assertEqual(1, len(nodes)) self.assertEqual(node1.id, nodes[0].id) nodes = db_api.node_get_all_by_cluster(self.ctx, cluster1.id, filters={"role": "master"}) self.assertEqual(0, len(nodes))
def test_node_get_by_cluster_admin_context(self): shared.create_cluster(self.ctx, self.profile) node1 = shared.create_node(self.ctx, self.cluster, self.profile) node2 = shared.create_node(self.ctx, self.cluster, self.profile) admin_ctx = utils.dummy_context(project='a_different_project', is_admin=True) nodes = db_api.node_get_all_by_cluster(admin_ctx, self.cluster.id) self.assertEqual(2, len(nodes)) self.assertEqual(set([node1.id, node2.id]), set([nodes[0].id, nodes[1].id]))
def test_node_get_by_cluster_show_deleted(self): node0 = shared.create_node(self.ctx, self.cluster, self.profile) node1 = shared.create_node(self.ctx, self.cluster, self.profile) nodes = db_api.node_get_all_by_cluster(self.ctx, self.cluster.id) self.assertEqual(2, len(nodes)) self.assertEqual(set([node0.id, node1.id]), set([nodes[0].id, nodes[1].id])) db_api.node_delete(self.ctx, node1.id) nodes = db_api.node_get_all_by_cluster(self.ctx, self.cluster.id) self.assertEqual(1, len(nodes)) self.assertEqual(node0.id, nodes[0].id) nodes = db_api.node_get_all_by_cluster(self.ctx, self.cluster.id, show_deleted=True) self.assertEqual(2, len(nodes)) self.assertEqual(set([node0.id, node1.id]), set([nodes[0].id, nodes[1].id]))
def test_node_migrate_between_clusters(self): cluster1 = shared.create_cluster(self.ctx, self.profile) cluster2 = shared.create_cluster(self.ctx, self.profile) node = shared.create_node(self.ctx, cluster1, self.profile) nodes = db_api.node_get_all_by_cluster(self.ctx, cluster1.id) self.assertEqual(1, len(nodes)) nodes = db_api.node_get_all_by_cluster(self.ctx, cluster2.id) self.assertEqual(0, len(nodes)) # Refresh cluster1 and cluster2 cluster1 = db_api.cluster_get(self.ctx, cluster1.id) cluster2 = db_api.cluster_get(self.ctx, cluster2.id) self.assertEqual(2, cluster1.next_index) self.assertEqual(1, cluster2.next_index) timestamp = tu.utcnow() node_new = db_api.node_migrate(self.ctx, node.id, cluster2.id, timestamp) cluster1 = db_api.cluster_get(self.ctx, cluster1.id) cluster2 = db_api.cluster_get(self.ctx, cluster2.id) self.assertEqual(timestamp, node_new.updated_at) self.assertEqual(cluster2.id, node_new.cluster_id) self.assertIsNone(node_new.role) nodes = db_api.node_get_all_by_cluster(self.ctx, cluster1.id) self.assertEqual(0, len(nodes)) nodes = db_api.node_get_all_by_cluster(self.ctx, cluster2.id) self.assertEqual(1, len(nodes)) self.assertEqual(2, cluster1.next_index) self.assertEqual(2, cluster2.next_index) # Migrate it back! timestamp = tu.utcnow() node_new = db_api.node_migrate(self.ctx, node.id, cluster1.id, timestamp, 'FAKE-ROLE') cluster1 = db_api.cluster_get(self.ctx, cluster1.id) cluster2 = db_api.cluster_get(self.ctx, cluster2.id) self.assertEqual(timestamp, node_new.updated_at) self.assertEqual(cluster1.id, node_new.cluster_id) self.assertEqual('FAKE-ROLE', node_new.role) nodes = db_api.node_get_all_by_cluster(self.ctx, cluster1.id) self.assertEqual(1, len(nodes)) nodes = db_api.node_get_all_by_cluster(self.ctx, cluster2.id) self.assertEqual(0, len(nodes)) self.assertEqual(3, cluster1.next_index) self.assertEqual(2, cluster2.next_index)
def test_node_migrate_between_clusters(self): cluster1 = shared.create_cluster(self.ctx, self.profile) cluster2 = shared.create_cluster(self.ctx, self.profile) node = shared.create_node(self.ctx, cluster1, self.profile) nodes = db_api.node_get_all_by_cluster(self.ctx, cluster1.id) self.assertEqual(1, len(nodes)) nodes = db_api.node_get_all_by_cluster(self.ctx, cluster2.id) self.assertEqual(0, len(nodes)) # Refresh cluster1 and cluster2 cluster1 = db_api.cluster_get(self.ctx, cluster1.id) cluster2 = db_api.cluster_get(self.ctx, cluster2.id) self.assertEqual(2, cluster1.next_index) self.assertEqual(1, cluster2.next_index) timestamp = tu.utcnow(True) node_new = db_api.node_migrate(self.ctx, node.id, cluster2.id, timestamp) cluster1 = db_api.cluster_get(self.ctx, cluster1.id) cluster2 = db_api.cluster_get(self.ctx, cluster2.id) self.assertEqual(timestamp, node_new.updated_at) self.assertEqual(cluster2.id, node_new.cluster_id) self.assertIsNone(node_new.role) nodes = db_api.node_get_all_by_cluster(self.ctx, cluster1.id) self.assertEqual(0, len(nodes)) nodes = db_api.node_get_all_by_cluster(self.ctx, cluster2.id) self.assertEqual(1, len(nodes)) self.assertEqual(2, cluster1.next_index) self.assertEqual(2, cluster2.next_index) # Migrate it back! timestamp = tu.utcnow(True) node_new = db_api.node_migrate(self.ctx, node.id, cluster1.id, timestamp, 'FAKE-ROLE') cluster1 = db_api.cluster_get(self.ctx, cluster1.id) cluster2 = db_api.cluster_get(self.ctx, cluster2.id) self.assertEqual(timestamp, node_new.updated_at) self.assertEqual(cluster1.id, node_new.cluster_id) self.assertEqual('FAKE-ROLE', node_new.role) nodes = db_api.node_get_all_by_cluster(self.ctx, cluster1.id) self.assertEqual(1, len(nodes)) nodes = db_api.node_get_all_by_cluster(self.ctx, cluster2.id) self.assertEqual(0, len(nodes)) self.assertEqual(3, cluster1.next_index) self.assertEqual(2, cluster2.next_index)
def test_node_migrate_between_clusters(self): cluster1 = shared.create_cluster(self.ctx, self.profile) cluster2 = shared.create_cluster(self.ctx, self.profile) node = shared.create_node(self.ctx, cluster1, self.profile) nodes = db_api.node_get_all_by_cluster(self.ctx, cluster1.id) self.assertEqual(1, len(nodes)) nodes = db_api.node_get_all_by_cluster(self.ctx, cluster2.id) self.assertEqual(0, len(nodes)) self.assertEqual(2, cluster1.next_index) self.assertEqual(1, cluster2.next_index) timestamp = tu.utcnow() node_new = db_api.node_migrate(self.ctx, node.id, cluster2.id, timestamp) cluster1 = db_api.cluster_get(self.ctx, cluster1.id) cluster2 = db_api.cluster_get(self.ctx, cluster2.id) self.assertEqual(timestamp, node_new.updated_time) self.assertEqual(cluster2.id, node_new.cluster_id) nodes = db_api.node_get_all_by_cluster(self.ctx, cluster1.id) self.assertEqual(0, len(nodes)) nodes = db_api.node_get_all_by_cluster(self.ctx, cluster2.id) self.assertEqual(1, len(nodes)) self.assertEqual(2, cluster1.next_index) self.assertEqual(2, cluster2.next_index) # Migrate it back! timestamp = tu.utcnow() node_new = db_api.node_migrate(self.ctx, node.id, cluster1.id, timestamp) cluster1 = db_api.cluster_get(self.ctx, cluster1.id) cluster2 = db_api.cluster_get(self.ctx, cluster2.id) self.assertEqual(timestamp, node_new.updated_time) self.assertEqual(cluster1.id, node_new.cluster_id) nodes = db_api.node_get_all_by_cluster(self.ctx, cluster1.id) self.assertEqual(1, len(nodes)) nodes = db_api.node_get_all_by_cluster(self.ctx, cluster2.id) self.assertEqual(0, len(nodes)) self.assertEqual(3, cluster1.next_index) self.assertEqual(2, cluster2.next_index)