Beispiel #1
0
    def test_get_node_list_with_filters(self):
        ch1 = utils.get_test_chassis(id=1, uuid=ironic_utils.generate_uuid())
        ch2 = utils.get_test_chassis(id=2, uuid=ironic_utils.generate_uuid())
        self.dbapi.create_chassis(ch1)
        self.dbapi.create_chassis(ch2)

        n1 = utils.get_test_node(id=1,
                                 driver='driver-one',
                                 instance_uuid=ironic_utils.generate_uuid(),
                                 reservation='fake-host',
                                 uuid=ironic_utils.generate_uuid(),
                                 chassis_id=ch1['id'])
        n2 = utils.get_test_node(id=2,
                                 driver='driver-two',
                                 uuid=ironic_utils.generate_uuid(),
                                 chassis_id=ch2['id'],
                                 maintenance=True)
        self.dbapi.create_node(n1)
        self.dbapi.create_node(n2)

        res = self.dbapi.get_node_list(filters={'chassis_uuid': ch1['uuid']})
        self.assertEqual([1], [r.id for r in res])

        res = self.dbapi.get_node_list(filters={'chassis_uuid': ch2['uuid']})
        self.assertEqual([2], [r.id for r in res])

        res = self.dbapi.get_node_list(filters={'driver': 'driver-one'})
        self.assertEqual([1], [r.id for r in res])

        res = self.dbapi.get_node_list(filters={'driver': 'bad-driver'})
        self.assertEqual([], [r.id for r in res])

        res = self.dbapi.get_node_list(filters={'associated': True})
        self.assertEqual([1], [r.id for r in res])

        res = self.dbapi.get_node_list(filters={'associated': False})
        self.assertEqual([2], [r.id for r in res])

        res = self.dbapi.get_node_list(filters={'reserved': True})
        self.assertEqual([1], [r.id for r in res])

        res = self.dbapi.get_node_list(filters={'reserved': False})
        self.assertEqual([2], [r.id for r in res])

        res = self.dbapi.get_node_list(filters={'maintenance': True})
        self.assertEqual([2], [r.id for r in res])

        res = self.dbapi.get_node_list(filters={'maintenance': False})
        self.assertEqual([1], [r.id for r in res])
Beispiel #2
0
 def test_add_root(self):
     cdict = dbutils.get_test_chassis()
     response = self.patch_json('/chassis/%s' % cdict['uuid'],
                                [{'path': '/description', 'value': 'test',
                                  'op': 'add'}])
     self.assertEqual('application/json', response.content_type)
     self.assertEqual(200, response.status_int)
Beispiel #3
0
 def test_post_nodes_subresource(self):
     cdict = dbutils.get_test_chassis()
     self.post_json('/chassis', cdict)
     ndict = dbutils.get_test_node(chassis_id=cdict['id'])
     response = self.post_json('/chassis/nodes', ndict,
                                expect_errors=True)
     self.assertEqual(response.status_int, 403)
Beispiel #4
0
def post_get_test_node(**kw):
    # NOTE(lucasagomes): When creating a node via API (POST)
    #                    we have to use chassis_uuid
    node = node_post_data(**kw)
    chassis = utils.get_test_chassis()
    node['chassis_uuid'] = kw.get('chassis_uuid', chassis['uuid'])
    return node
Beispiel #5
0
    def test_remove_multi(self):
        extra = {"foo1": "bar1", "foo2": "bar2", "foo3": "bar3"}
        cdict = dbutils.get_test_chassis(extra=extra,
                                         description="foobar",
                                         uuid=utils.generate_uuid(),
                                         id=None)
        self.dbapi.create_chassis(cdict)

        # Removing one item from the collection
        response = self.patch_json('/chassis/%s' % cdict['uuid'],
                                   [{
                                       'path': '/extra/foo2',
                                       'op': 'remove'
                                   }])
        self.assertEqual('application/json', response.content_type)
        self.assertEqual(200, response.status_code)
        result = self.get_json('/chassis/%s' % cdict['uuid'])
        extra.pop("foo2")
        self.assertEqual(extra, result['extra'])

        # Removing the collection
        response = self.patch_json('/chassis/%s' % cdict['uuid'],
                                   [{
                                       'path': '/extra',
                                       'op': 'remove'
                                   }])
        self.assertEqual('application/json', response.content_type)
        self.assertEqual(200, response.status_code)
        result = self.get_json('/chassis/%s' % cdict['uuid'])
        self.assertEqual({}, result['extra'])

        # Assert nothing else was changed
        self.assertEqual(cdict['uuid'], result['uuid'])
        self.assertEqual(cdict['description'], result['description'])
Beispiel #6
0
 def test_detail(self):
     cdict = dbutils.get_test_chassis()
     chassis = self.dbapi.create_chassis(cdict)
     data = self.get_json('/chassis/detail')
     self.assertEqual(chassis['uuid'], data['chassis'][0]["uuid"])
     self.assertIn('extra', data['chassis'][0])
     self.assertIn('nodes', data['chassis'][0])
Beispiel #7
0
 def test_one(self):
     ndict = dbutils.get_test_chassis()
     chassis = self.dbapi.create_chassis(ndict)
     data = self.get_json('/chassis')
     self.assertEqual(chassis['uuid'], data['chassis'][0]["uuid"])
     self.assertNotIn('extra', data['chassis'][0])
     self.assertNotIn('nodes', data['chassis'][0])
Beispiel #8
0
 def test_post_nodes_subresource(self):
     cdict = dbutils.get_test_chassis()
     self.dbapi.create_chassis(cdict)
     ndict = apiutils.node_post_data(chassis_id=None)
     ndict['chassis_uuid'] = cdict['uuid']
     response = self.post_json('/chassis/nodes', ndict, expect_errors=True)
     self.assertEqual(403, response.status_int)
Beispiel #9
0
 def test_get_one(self):
     cdict = dbutils.get_test_chassis()
     chassis = self.dbapi.create_chassis(cdict)
     data = self.get_json('/chassis/%s' % chassis['uuid'])
     self.assertEqual(chassis['uuid'], data['uuid'])
     self.assertIn('extra', data)
     self.assertIn('nodes', data)
Beispiel #10
0
 def test_post_nodes_subresource(self):
     cdict = dbutils.get_test_chassis()
     self.dbapi.create_chassis(cdict)
     ndict = apiutils.node_post_data(chassis_id=None)
     ndict['chassis_uuid'] = cdict['uuid']
     response = self.post_json('/chassis/nodes', ndict, expect_errors=True)
     self.assertEqual(403, response.status_int)
Beispiel #11
0
    def test_remove_multi(self):
        extra = {"foo1": "bar1", "foo2": "bar2", "foo3": "bar3"}
        cdict = dbutils.get_test_chassis(extra=extra, description="foobar",
                                         uuid=utils.generate_uuid(),
                                         id=None)
        self.dbapi.create_chassis(cdict)

        # Removing one item from the collection
        response = self.patch_json('/chassis/%s' % cdict['uuid'],
                                   [{'path': '/extra/foo2', 'op': 'remove'}])
        self.assertEqual('application/json', response.content_type)
        self.assertEqual(200, response.status_code)
        result = self.get_json('/chassis/%s' % cdict['uuid'])
        extra.pop("foo2")
        self.assertEqual(extra, result['extra'])

        # Removing the collection
        response = self.patch_json('/chassis/%s' % cdict['uuid'],
                                   [{'path': '/extra', 'op': 'remove'}])
        self.assertEqual('application/json', response.content_type)
        self.assertEqual(200, response.status_code)
        result = self.get_json('/chassis/%s' % cdict['uuid'])
        self.assertEqual({}, result['extra'])

        # Assert nothing else was changed
        self.assertEqual(cdict['uuid'], result['uuid'])
        self.assertEqual(cdict['description'], result['description'])
Beispiel #12
0
 def test_add_root(self):
     cdict = dbutils.get_test_chassis()
     response = self.patch_json('/chassis/%s' % cdict['uuid'],
                                [{'path': '/description', 'value': 'test',
                                  'op': 'add'}])
     self.assertEqual('application/json', response.content_type)
     self.assertEqual(200, response.status_int)
Beispiel #13
0
 def test_one(self):
     ndict = dbutils.get_test_chassis()
     chassis = self.dbapi.create_chassis(ndict)
     data = self.get_json('/chassis')
     self.assertEqual(chassis['uuid'], data['chassis'][0]["uuid"])
     self.assertNotIn('extra', data['chassis'][0])
     self.assertNotIn('nodes', data['chassis'][0])
Beispiel #14
0
 def test_get_one(self):
     cdict = dbutils.get_test_chassis()
     chassis = self.dbapi.create_chassis(cdict)
     data = self.get_json('/chassis/%s' % chassis['uuid'])
     self.assertEqual(chassis['uuid'], data['uuid'])
     self.assertIn('extra', data)
     self.assertIn('nodes', data)
Beispiel #15
0
 def test_detail(self):
     cdict = dbutils.get_test_chassis()
     chassis = self.dbapi.create_chassis(cdict)
     data = self.get_json('/chassis/detail')
     self.assertEqual(chassis['uuid'], data['chassis'][0]["uuid"])
     self.assertIn('extra', data['chassis'][0])
     self.assertIn('nodes', data['chassis'][0])
Beispiel #16
0
    def test_get_node_list_with_filters(self):
        ch1 = utils.get_test_chassis(id=1, uuid=ironic_utils.generate_uuid())
        ch2 = utils.get_test_chassis(id=2, uuid=ironic_utils.generate_uuid())
        self.dbapi.create_chassis(ch1)
        self.dbapi.create_chassis(ch2)

        n1 = utils.get_test_node(id=1, driver='driver-one',
                                 instance_uuid=ironic_utils.generate_uuid(),
                                 reservation='fake-host',
                                 uuid=ironic_utils.generate_uuid(),
                                 chassis_id=ch1['id'])
        n2 = utils.get_test_node(id=2, driver='driver-two',
                                 uuid=ironic_utils.generate_uuid(),
                                 chassis_id=ch2['id'],
                                 maintenance=True)
        self.dbapi.create_node(n1)
        self.dbapi.create_node(n2)

        res = self.dbapi.get_node_list(filters={'chassis_uuid': ch1['uuid']})
        self.assertEqual([1], [r.id for r in res])

        res = self.dbapi.get_node_list(filters={'chassis_uuid': ch2['uuid']})
        self.assertEqual([2], [r.id for r in res])

        res = self.dbapi.get_node_list(filters={'driver': 'driver-one'})
        self.assertEqual([1], [r.id for r in res])

        res = self.dbapi.get_node_list(filters={'driver': 'bad-driver'})
        self.assertEqual([], [r.id for r in res])

        res = self.dbapi.get_node_list(filters={'associated': True})
        self.assertEqual([1], [r.id for r in res])

        res = self.dbapi.get_node_list(filters={'associated': False})
        self.assertEqual([2], [r.id for r in res])

        res = self.dbapi.get_node_list(filters={'reserved': True})
        self.assertEqual([1], [r.id for r in res])

        res = self.dbapi.get_node_list(filters={'reserved': False})
        self.assertEqual([2], [r.id for r in res])

        res = self.dbapi.get_node_list(filters={'maintenance': True})
        self.assertEqual([2], [r.id for r in res])

        res = self.dbapi.get_node_list(filters={'maintenance': False})
        self.assertEqual([1], [r.id for r in res])
Beispiel #17
0
def post_get_test_node(**kw):
    # NOTE(lucasagomes): When creating a node via API (POST)
    #                    we have to use chassis_uuid
    node = node_post_data(**kw)
    chassis = utils.get_test_chassis()
    node['chassis_id'] = None
    node['chassis_uuid'] = kw.get('chassis_uuid', chassis['uuid'])
    return node
Beispiel #18
0
 def setUp(self):
     super(TestDelete, self).setUp()
     cdict = dbutils.get_test_chassis()
     self.chassis = self.dbapi.create_chassis(cdict)
     p = mock.patch.object(rpcapi.ConductorAPI, 'get_topic_for')
     self.mock_gtf = p.start()
     self.mock_gtf.return_value = 'test-topic'
     self.addCleanup(p.stop)
Beispiel #19
0
 def test_nodes_subresource_noid(self):
     cdict = dbutils.get_test_chassis()
     self.dbapi.create_chassis(cdict)
     ndict = dbutils.get_test_node(chassis_id=cdict['id'])
     self.dbapi.create_node(ndict)
     # No chassis id specified
     response = self.get_json('/chassis/nodes', expect_errors=True)
     self.assertEqual(response.status_int, 400)
Beispiel #20
0
 def test_remove_non_existent_property_fail(self):
     cdict = dbutils.get_test_chassis()
     response = self.patch_json('/chassis/%s' % cdict['uuid'],
                          [{'path': '/extra/non-existent', 'op': 'remove'}],
                          expect_errors=True)
     self.assertEqual('application/json', response.content_type)
     self.assertEqual(400, response.status_code)
     self.assertTrue(response.json['error_message'])
Beispiel #21
0
 def test_create_chassis_generate_uuid(self):
     cdict = dbutils.get_test_chassis()
     del cdict['uuid']
     self.post_json('/chassis', cdict)
     result = self.get_json('/chassis')
     self.assertEqual(cdict['description'],
                      result['items'][0]['description'])
     self.assertTrue(uuidutils.is_uuid_like(result['items'][0]['uuid']))
Beispiel #22
0
 def test_links(self):
     uuid = uuidutils.generate_uuid()
     ndict = dbutils.get_test_chassis(id=1, uuid=uuid)
     self.dbapi.create_chassis(ndict)
     data = self.get_json('/chassis/1')
     self.assertIn('links', data.keys())
     self.assertEqual(len(data['links']), 2)
     self.assertIn(uuid, data['links'][0]['href'])
Beispiel #23
0
 def setUp(self):
     super(TestDelete, self).setUp()
     cdict = dbutils.get_test_chassis()
     self.chassis = self.dbapi.create_chassis(cdict)
     p = mock.patch.object(rpcapi.ConductorAPI, 'get_topic_for')
     self.mock_gtf = p.start()
     self.mock_gtf.return_value = 'test-topic'
     self.addCleanup(p.stop)
Beispiel #24
0
 def test_create_chassis_generate_uuid(self):
     cdict = dbutils.get_test_chassis()
     del cdict['uuid']
     self.post_json('/chassis', cdict)
     result = self.get_json('/chassis')
     self.assertEqual(cdict['description'],
                      result['items'][0]['description'])
     self.assertTrue(uuidutils.is_uuid_like(result['items'][0]['uuid']))
Beispiel #25
0
 def test_remove_uuid(self):
     cdict = dbutils.get_test_chassis()
     response = self.patch_json('/chassis/%s' % cdict['uuid'],
                                [{'path': '/uuid', 'op': 'remove'}],
                                expect_errors=True)
     self.assertEqual(400, response.status_int)
     self.assertEqual('application/json', response.content_type)
     self.assertTrue(response.json['error_message'])
Beispiel #26
0
 def test_remove_non_existent_property_fail(self):
     cdict = dbutils.get_test_chassis()
     response = self.patch_json('/chassis/%s' % cdict['uuid'],
                          [{'path': '/extra/non-existent', 'op': 'remove'}],
                          expect_errors=True)
     self.assertEqual('application/json', response.content_type)
     self.assertEqual(400, response.status_code)
     self.assertTrue(response.json['error_message'])
Beispiel #27
0
 def test_remove_uuid(self):
     cdict = dbutils.get_test_chassis()
     response = self.patch_json('/chassis/%s' % cdict['uuid'],
                                [{'path': '/uuid', 'op': 'remove'}],
                                expect_errors=True)
     self.assertEqual(400, response.status_int)
     self.assertEqual('application/json', response.content_type)
     self.assertTrue(response.json['error_message'])
Beispiel #28
0
 def test_links(self):
     uuid = uuidutils.generate_uuid()
     ndict = dbutils.get_test_chassis(id=1, uuid=uuid)
     self.dbapi.create_chassis(ndict)
     data = self.get_json('/chassis/1')
     self.assertIn('links', data.keys())
     self.assertEqual(len(data['links']), 2)
     self.assertIn(uuid, data['links'][0]['href'])
Beispiel #29
0
 def test_get_chassis_list(self):
     uuids = []
     for i in range(1, 6):
         n = utils.get_test_chassis(id=i, uuid=ironic_utils.generate_uuid())
         self.dbapi.create_chassis(n)
         uuids.append(six.text_type(n['uuid']))
     res = self.dbapi.get_chassis_list()
     res_uuids = [r.uuid for r in res]
     self.assertEqual(uuids.sort(), res_uuids.sort())
Beispiel #30
0
 def test_add_root_non_existent(self):
     cdict = dbutils.get_test_chassis()
     response = self.patch_json('/chassis/%s' % cdict['uuid'],
                                [{'path': '/foo', 'value': 'bar',
                                  'op': 'add'}],
                                expect_errors=True)
     self.assertEqual('application/json', response.content_type)
     self.assertEqual(400, response.status_int)
     self.assertTrue(response.json['error_message'])
Beispiel #31
0
 def test_add_root_non_existent(self):
     cdict = dbutils.get_test_chassis()
     response = self.patch_json('/chassis/%s' % cdict['uuid'],
                                [{'path': '/foo', 'value': 'bar',
                                  'op': 'add'}],
                                expect_errors=True)
     self.assertEqual('application/json', response.content_type)
     self.assertEqual(400, response.status_int)
     self.assertTrue(response.json['error_message'])
Beispiel #32
0
 def test_delete_chassis(self):
     cdict = dbutils.get_test_chassis()
     self.post_json('/chassis', cdict)
     self.delete('/chassis/%s' % cdict['uuid'])
     response = self.get_json('/chassis/%s' % cdict['uuid'],
                              expect_errors=True)
     self.assertEqual(response.status_int, 404)
     self.assertEqual(response.content_type, 'application/json')
     self.assertTrue(response.json['error_message'])
Beispiel #33
0
 def test_delete_chassis_with_node(self):
     cdict = dbutils.get_test_chassis()
     self.dbapi.create_chassis(cdict)
     obj_utils.create_test_node(self.context, chassis_id=cdict['id'])
     response = self.delete('/chassis/%s' % cdict['uuid'],
                            expect_errors=True)
     self.assertEqual(400, response.status_int)
     self.assertEqual('application/json', response.content_type)
     self.assertTrue(response.json['error_message'])
 def setUp(self):
     super(TestPut, self).setUp()
     cdict = dbutils.get_test_chassis()
     self.chassis = self.dbapi.create_chassis(cdict)
     ndict = dbutils.get_test_node()
     self.node = self.dbapi.create_node(ndict)
     self.mox.StubOutWithMock(rpcapi.ConductorAPI, 'update_node')
     self.mox.StubOutWithMock(rpcapi.ConductorAPI,
                              'change_node_power_state')
Beispiel #35
0
 def setUp(self):
     super(TestPut, self).setUp()
     cdict = dbutils.get_test_chassis()
     self.chassis = self.dbapi.create_chassis(cdict)
     ndict = dbutils.get_test_node()
     self.node = self.dbapi.create_node(ndict)
     p = mock.patch.object(rpcapi.ConductorAPI, 'change_node_power_state')
     self.mock_cnps = p.start()
     self.addCleanup(p.stop)
Beispiel #36
0
 def test_delete_chassis_with_node(self):
     cdict = dbutils.get_test_chassis()
     self.dbapi.create_chassis(cdict)
     obj_utils.create_test_node(self.context, chassis_id=cdict['id'])
     response = self.delete('/chassis/%s' % cdict['uuid'],
                            expect_errors=True)
     self.assertEqual(400, response.status_int)
     self.assertEqual('application/json', response.content_type)
     self.assertTrue(response.json['error_message'])
Beispiel #37
0
 def test_links(self):
     uuid = utils.generate_uuid()
     ndict = dbutils.get_test_chassis(id=1, uuid=uuid)
     self.dbapi.create_chassis(ndict)
     data = self.get_json('/chassis/%s' % uuid)
     self.assertIn('links', data.keys())
     self.assertEqual(2, len(data['links']))
     self.assertIn(uuid, data['links'][0]['href'])
     self.assertTrue(self.validate_link(data['links'][0]['href']))
     self.assertTrue(self.validate_link(data['links'][1]['href']))
Beispiel #38
0
 def test_many(self):
     ch_list = []
     for id in range(5):
         ndict = dbutils.get_test_chassis(id=id, uuid=utils.generate_uuid())
         chassis = self.dbapi.create_chassis(ndict)
         ch_list.append(chassis['uuid'])
     data = self.get_json('/chassis')
     self.assertEqual(len(ch_list), len(data['chassis']))
     uuids = [n['uuid'] for n in data['chassis']]
     self.assertEqual(ch_list.sort(), uuids.sort())
Beispiel #39
0
 def test_many(self):
     ch_list = []
     for id in range(5):
         ndict = dbutils.get_test_chassis(id=id, uuid=utils.generate_uuid())
         chassis = self.dbapi.create_chassis(ndict)
         ch_list.append(chassis['uuid'])
     data = self.get_json('/chassis')
     self.assertEqual(len(ch_list), len(data['chassis']))
     uuids = [n['uuid'] for n in data['chassis']]
     self.assertEqual(ch_list.sort(), uuids.sort())
Beispiel #40
0
 def test_get_chassis_list(self):
     uuids = []
     for i in xrange(1, 6):
         n = utils.get_test_chassis(id=i, uuid=uuidutils.generate_uuid())
         self.dbapi.create_chassis(n)
         uuids.append(unicode(n['uuid']))
     res = self.dbapi.get_chassis_list()
     uuids.sort()
     res.sort()
     self.assertEqual(uuids, res)
Beispiel #41
0
 def test_patch_nodes_subresource(self):
     cdict = dbutils.get_test_chassis()
     response = self.patch_json(
         '/chassis/%s/nodes' % cdict['uuid'], [{
             'path': '/extra/foo',
             'value': 'bar',
             'op': 'add'
         }],
         expect_errors=True)
     self.assertEqual(403, response.status_int)
Beispiel #42
0
 def test_update_chassis(self):
     cdict = dbutils.get_test_chassis()
     self.post_json('/chassis', cdict)
     description = 'chassis-new-description'
     response = self.patch_json('/chassis/%s' % cdict['uuid'],
                                {'description': description})
     self.assertEqual(response.content_type, 'application/json')
     self.assertEqual(response.status_code, 200)
     result = self.get_json('/chassis/%s' % cdict['uuid'])
     self.assertEqual(result['description'], description)
Beispiel #43
0
 def test_patch_nodes_subresource(self):
     cdict = dbutils.get_test_chassis()
     response = self.patch_json('/chassis/%s/nodes' % cdict['uuid'],
                                [{
                                    'path': '/extra/foo',
                                    'value': 'bar',
                                    'op': 'add'
                                }],
                                expect_errors=True)
     self.assertEqual(403, response.status_int)
Beispiel #44
0
 def test_update_chassis(self):
     cdict = dbutils.get_test_chassis()
     self.post_json('/chassis', cdict)
     description = 'chassis-new-description'
     response = self.patch_json('/chassis/%s' % cdict['uuid'],
                                {'description': description})
     self.assertEqual(response.content_type, 'application/json')
     self.assertEqual(response.status_code, 200)
     result = self.get_json('/chassis/%s' % cdict['uuid'])
     self.assertEqual(result['description'], description)
Beispiel #45
0
 def test_links(self):
     uuid = utils.generate_uuid()
     ndict = dbutils.get_test_chassis(id=1, uuid=uuid)
     self.dbapi.create_chassis(ndict)
     data = self.get_json('/chassis/%s' % uuid)
     self.assertIn('links', data.keys())
     self.assertEqual(2, len(data['links']))
     self.assertIn(uuid, data['links'][0]['href'])
     self.assertTrue(self.validate_link(data['links'][0]['href']))
     self.assertTrue(self.validate_link(data['links'][1]['href']))
Beispiel #46
0
 def test_replace_singular(self):
     cdict = dbutils.get_test_chassis()
     description = 'chassis-new-description'
     response = self.patch_json('/chassis/%s' % cdict['uuid'],
                                [{'path': '/description',
                                  'value': description, 'op': 'replace'}])
     self.assertEqual(response.content_type, 'application/json')
     self.assertEqual(response.status_code, 200)
     result = self.get_json('/chassis/%s' % cdict['uuid'])
     self.assertEqual(result['description'], description)
Beispiel #47
0
 def test_delete_chassis(self):
     cdict = dbutils.get_test_chassis()
     self.post_json('/chassis', cdict)
     self.delete('/chassis/%s' % cdict['uuid'])
     response = self.get_json('/chassis/%s' % cdict['uuid'],
                              expect_errors=True)
     # TODO(yuriyz): change to 404 (bug 1200517)
     self.assertEqual(response.status_int, 500)
     self.assertEqual(response.content_type, 'application/json')
     self.assertTrue(response.json['error_message'])
Beispiel #48
0
 def test_links(self):
     uuid = utils.generate_uuid()
     ndict = dbutils.get_test_chassis(id=1, uuid=uuid)
     self.dbapi.create_chassis(ndict)
     data = self.get_json('/chassis/%s' % uuid)
     self.assertIn('links', data.keys())
     self.assertEqual(2, len(data['links']))
     self.assertIn(uuid, data['links'][0]['href'])
     for l in data['links']:
         bookmark = l['rel'] == 'bookmark'
         self.assertTrue(self.validate_link(l['href'], bookmark=bookmark))
Beispiel #49
0
def get_test_chassis(ctxt, **kw):
    """Return a Chassis object with appropriate attributes.

    NOTE: The object leaves the attributes marked as changed, such
    that a create() could be used to commit it to the DB.
    """
    db_chassis = db_utils.get_test_chassis(**kw)
    chassis = objects.Chassis(ctxt)
    for key in db_chassis:
        setattr(chassis, key, db_chassis[key])
    return chassis
Beispiel #50
0
 def test_links(self):
     uuid = utils.generate_uuid()
     ndict = dbutils.get_test_chassis(id=1, uuid=uuid)
     self.dbapi.create_chassis(ndict)
     data = self.get_json('/chassis/%s' % uuid)
     self.assertIn('links', data.keys())
     self.assertEqual(2, len(data['links']))
     self.assertIn(uuid, data['links'][0]['href'])
     for l in data['links']:
         bookmark = l['rel'] == 'bookmark'
         self.assertTrue(self.validate_link(l['href'], bookmark=bookmark))
Beispiel #51
0
    def test_collection_links(self):
        chassis = []
        for id in range(5):
            ndict = dbutils.get_test_chassis(id=id, uuid=utils.generate_uuid())
            ch = self.dbapi.create_chassis(ndict)
            chassis.append(ch['uuid'])
        data = self.get_json('/chassis/?limit=3')
        self.assertEqual(3, len(data['chassis']))

        next_marker = data['chassis'][-1]['uuid']
        self.assertIn(next_marker, data['next'])
Beispiel #52
0
def get_test_chassis(ctxt, **kw):
    """Return a Chassis object with appropriate attributes.

    NOTE: The object leaves the attributes marked as changed, such
    that a create() could be used to commit it to the DB.
    """
    db_chassis = db_utils.get_test_chassis(**kw)
    chassis = objects.Chassis(ctxt)
    for key in db_chassis:
        setattr(chassis, key, db_chassis[key])
    return chassis
Beispiel #53
0
    def test_collection_links(self):
        chassis = []
        for id in range(5):
            ndict = dbutils.get_test_chassis(id=id, uuid=utils.generate_uuid())
            ch = self.dbapi.create_chassis(ndict)
            chassis.append(ch['uuid'])
        data = self.get_json('/chassis/?limit=3')
        self.assertEqual(3, len(data['chassis']))

        next_marker = data['chassis'][-1]['uuid']
        self.assertIn(next_marker, data['next'])
Beispiel #54
0
 def test_add_multi(self):
     cdict = dbutils.get_test_chassis()
     response = self.patch_json('/chassis/%s' % cdict['uuid'],
                                [{'path': '/extra/foo1', 'value': 'bar1',
                                  'op': 'add'},
                                 {'path': '/extra/foo2', 'value': 'bar2',
                                  'op': 'add'}])
     self.assertEqual('application/json', response.content_type)
     self.assertEqual(200, response.status_code)
     result = self.get_json('/chassis/%s' % cdict['uuid'])
     expected = {"foo1": "bar1", "foo2": "bar2"}
     self.assertEqual(expected, result['extra'])
Beispiel #55
0
    def test_collection_links_default_limit(self):
        cfg.CONF.set_override('max_limit', 3, 'api')
        chassis = []
        for id in range(5):
            ndict = dbutils.get_test_chassis(id=id, uuid=utils.generate_uuid())
            ch = self.dbapi.create_chassis(ndict)
            chassis.append(ch['uuid'])
        data = self.get_json('/chassis')
        self.assertEqual(3, len(data['chassis']))

        next_marker = data['chassis'][-1]['uuid']
        self.assertIn(next_marker, data['next'])
Beispiel #56
0
def get_test_chassis(ctxt, **kw):
    """Return a Chassis object with appropriate attributes.

    NOTE: The object leaves the attributes marked as changed, such
    that a create() could be used to commit it to the DB.
    """
    db_chassis = db_utils.get_test_chassis(**kw)
    # Let DB generate ID if it isn't specified explicitly
    if 'id' not in kw:
        del db_chassis['id']
    chassis = objects.Chassis(ctxt)
    for key in db_chassis:
        setattr(chassis, key, db_chassis[key])
    return chassis
Beispiel #57
0
    def test_collection_links(self):
        chassis = []
        for id in xrange(5):
            ndict = dbutils.get_test_chassis(id=id,
                                             uuid=uuidutils.generate_uuid())
            ch = self.dbapi.create_chassis(ndict)
            chassis.append(ch['uuid'])
        data = self.get_json('/chassis/?limit=3')
        self.assertEqual(data['type'], 'chassis')
        self.assertEqual(len(data['items']), 3)

        next_marker = data['items'][-1]['uuid']
        next_link = [l['href'] for l in data['links'] if l['rel'] == 'next'][0]
        self.assertIn(next_marker, next_link)
Beispiel #58
0
    def test_remove_singular(self):
        cdict = dbutils.get_test_chassis(extra={'a': 'b'},
                                         uuid=utils.generate_uuid(),
                                         id=None)
        self.dbapi.create_chassis(cdict)
        response = self.patch_json('/chassis/%s' % cdict['uuid'],
                                   [{'path': '/description', 'op': 'remove'}])
        self.assertEqual('application/json', response.content_type)
        self.assertEqual(200, response.status_code)
        result = self.get_json('/chassis/%s' % cdict['uuid'])
        self.assertIsNone(result['description'])

        # Assert nothing else was changed
        self.assertEqual(cdict['uuid'], result['uuid'])
        self.assertEqual(cdict['extra'], result['extra'])
Beispiel #59
0
    def test_replace_multi(self):
        extra = {"foo1": "bar1", "foo2": "bar2", "foo3": "bar3"}
        cdict = dbutils.get_test_chassis(extra=extra,
                                         uuid=utils.generate_uuid(),
                                         id=None)
        self.dbapi.create_chassis(cdict)
        new_value = 'new value'
        response = self.patch_json('/chassis/%s' % cdict['uuid'],
                                   [{'path': '/extra/foo2',
                                     'value': new_value, 'op': 'replace'}])
        self.assertEqual('application/json', response.content_type)
        self.assertEqual(200, response.status_code)
        result = self.get_json('/chassis/%s' % cdict['uuid'])

        extra["foo2"] = new_value
        self.assertEqual(extra, result['extra'])