import abc
+from oslo_db import exception as obj_exc
from oslo_versionedobjects import base as obj_base
import six
message = _("Unable to update the following object fields: %(fields)s")
+class NeutronObjectDuplicateEntry(exceptions.Conflict):
+ message = _("Failed to create a duplicate object")
+
+
def get_updatable_fields(cls, fields):
fields = fields.copy()
for field in cls.fields_no_update:
def create(self):
fields = self._get_changed_persistent_fields()
- db_obj = db_api.create_object(self._context, self.db_model, fields)
+ try:
+ db_obj = db_api.create_object(self._context, self.db_model, fields)
+ except obj_exc.DBDuplicateEntry:
+ raise NeutronObjectDuplicateEntry()
self.from_db_object(db_obj)
def update(self):
max_kbps=200,
max_burst_kbps=1337)
- self.assertRaises(exceptions.ServerFault,
+ self.assertRaises(exceptions.Conflict,
self.create_qos_bandwidth_limit_rule,
policy_id=policy['id'],
max_kbps=201, max_burst_kbps=1338)
import string
import mock
+from oslo_db import exception as obj_exc
from oslo_versionedobjects import base as obj_base
from oslo_versionedobjects import fields as obj_fields
obj.create()
self._check_equal(obj, self.db_obj)
+ def test_create_duplicates(self):
+ with mock.patch.object(db_api, 'create_object',
+ side_effect=obj_exc.DBDuplicateEntry):
+ obj = self._test_class(self.context, **self.db_obj)
+ self.assertRaises(base.NeutronObjectDuplicateEntry, obj.create)
+
@mock.patch.object(db_api, 'update_object')
def test_update_no_changes(self, update_mock):
with mock.patch.object(base.NeutronDbObject,