def test_create_duplicate_custom(self): rc = objects.ResourceClass( self.context, name='CUSTOM_IRON_NFV', ) rc.create() self.assertEqual(objects.ResourceClass.MIN_CUSTOM_RESOURCE_CLASS_ID, rc.id) rc = objects.ResourceClass( self.context, name='CUSTOM_IRON_NFV', ) self.assertRaises(exception.ResourceClassExists, rc.create)
def test_create(self): rc = objects.ResourceClass( self.context, name='CUSTOM_IRON_NFV', ) rc.create() min_id = objects.ResourceClass.MIN_CUSTOM_RESOURCE_CLASS_ID self.assertEqual(min_id, rc.id) rc = objects.ResourceClass( self.context, name='CUSTOM_IRON_ENTERPRISE', ) rc.create() self.assertEqual(min_id + 1, rc.id)
def test_create_fail_not_using_namespace(self): rc = objects.ResourceClass( context=self.context, name='IRON_NFV', ) exc = self.assertRaises(exception.ObjectActionError, rc.create) self.assertIn('name must start with', str(exc))
def test_destroy_fail_with_inventory(self): """Test that we raise an exception when attempting to delete a resource class that is referenced in an inventory record. """ rc = objects.ResourceClass( self.context, name='CUSTOM_IRON_NFV', ) rc.create() rp = objects.ResourceProvider( self.context, name='my rp', uuid=uuidsentinel.rp, ) rp.create() inv = objects.Inventory( resource_provider=rp, resource_class='CUSTOM_IRON_NFV', total=1, ) inv.obj_set_defaults() inv_list = objects.InventoryList(objects=[inv]) rp.set_inventory(inv_list) self.assertRaises(exception.ResourceClassInUse, rc.destroy) rp.set_inventory(objects.InventoryList(objects=[])) rc.destroy() rc_list = objects.ResourceClassList.get_all(self.context) rc_ids = (r.id for r in rc_list) self.assertNotIn(rc.id, rc_ids)
def test_destroy(self): rc = objects.ResourceClass( self.context, name='CUSTOM_IRON_NFV', ) rc.create() rc_list = objects.ResourceClassList.get_all(self.context) rc_ids = (r.id for r in rc_list) self.assertIn(rc.id, rc_ids) rc = objects.ResourceClass.get_by_name( self.context, 'CUSTOM_IRON_NFV', ) rc.destroy() rc_list = objects.ResourceClassList.get_all(self.context) rc_ids = (r.id for r in rc_list) self.assertNotIn(rc.id, rc_ids) # Verify rc cache was purged of the old entry self.assertRaises(exception.ResourceClassNotFound, objects.ResourceClass.get_by_name, self.context, 'CUSTOM_IRON_NFV')
def create_resource_class(req): """POST to create a resource class. On success return a 201 response with an empty body and a location header pointing to the newly created resource class. """ context = req.environ['placement.context'] data = util.extract_json(req.body, POST_RC_SCHEMA_V1_2) try: rc = objects.ResourceClass(context, name=data['name']) rc.create() except exception.ResourceClassExists: raise webob.exc.HTTPConflict( _('Conflicting resource class already exists: %(name)s') % {'name': data['name']}, json_formatter=util.json_error_formatter) except exception.MaxDBRetriesExceeded: raise webob.exc.HTTPConflict( _('Max retries of DB transaction exceeded attempting ' 'to create resource class: %(name)s, please' 'try again.') % {'name': data['name']}, json_formatter=util.json_error_formatter) req.response.location = util.resource_class_url(req.environ, rc) req.response.status = 201 req.response.content_type = None return req.response
def test_get_by_name_custom(self): rc = objects.ResourceClass( self.context, name='CUSTOM_IRON_NFV', ) rc.create() get_rc = objects.ResourceClass.get_by_name( self.context, 'CUSTOM_IRON_NFV', ) self.assertEqual(rc.id, get_rc.id) self.assertEqual(rc.name, get_rc.name)
def test_save(self): rc = objects.ResourceClass( self.context, name='CUSTOM_IRON_NFV', ) rc.create() rc = objects.ResourceClass.get_by_name( self.context, 'CUSTOM_IRON_NFV', ) rc.name = 'CUSTOM_IRON_SILVER' rc.save() # Verify rc cache was purged of the old entry self.assertRaises(exception.NotFound, objects.ResourceClass.get_by_name, self.context, 'CUSTOM_IRON_NFV')
def test_create_duplicate_standard(self): rc = objects.ResourceClass( context=self.context, name=fields.ResourceClass.VCPU, ) self.assertRaises(exception.ResourceClassExists, rc.create)
def setUp(self): super(TestPlacementURLs, self).setUp() self.resource_provider = objects.ResourceProvider( name=uuidsentinel.rp_name, uuid=uuidsentinel.rp_uuid) self.resource_class = objects.ResourceClass( name='CUSTOM_BAREMETAL_GOLD', id=1000)
def test_save_fail_no_id(self): rc = objects.ResourceClass( self.context, name='CUSTOM_IRON_NFV', ) self.assertRaises(exception.ObjectActionError, rc.save)
def test_cannot_create_requires_name(self): rc = objects.ResourceClass(self.context) exc = self.assertRaises(exception.ObjectActionError, rc.create) self.assertIn('name is required', str(exc))
def test_cannot_create_with_id(self): rc = objects.ResourceClass(self.context, id=1, name='CUSTOM_IRON_NFV') exc = self.assertRaises(exception.ObjectActionError, rc.create) self.assertIn('already created', str(exc))