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))
Exemple #4
0
    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)
Exemple #5
0
    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')
Exemple #6
0
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)
Exemple #8
0
    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)
Exemple #10
0
 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)
Exemple #11
0
 def test_save_fail_no_id(self):
     rc = objects.ResourceClass(
         self.context,
         name='CUSTOM_IRON_NFV',
     )
     self.assertRaises(exception.ObjectActionError, rc.save)
Exemple #12
0
 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))
Exemple #13
0
 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))