Merge "Prevent caller from specifying id during ComputeNode.create()"
This commit is contained in:
@@ -13,6 +13,7 @@
|
||||
# under the License.
|
||||
|
||||
from nova import db
|
||||
from nova import exception
|
||||
from nova.objects import base
|
||||
from nova.objects import fields
|
||||
from nova.openstack.common import jsonutils
|
||||
@@ -83,7 +84,11 @@ class ComputeNode(base.NovaPersistentObject, base.NovaObject):
|
||||
|
||||
@base.remotable
|
||||
def create(self, context):
|
||||
if self.obj_attr_is_set('id'):
|
||||
raise exception.ObjectActionError(action='create',
|
||||
reason='already created')
|
||||
updates = self.obj_get_changes()
|
||||
updates.pop('id', None)
|
||||
db_compute = db.compute_node_create(context, updates)
|
||||
self._from_db_object(context, self, db_compute)
|
||||
|
||||
|
||||
@@ -13,6 +13,7 @@
|
||||
# under the License.
|
||||
|
||||
from nova import db
|
||||
from nova import exception
|
||||
from nova.objects import compute_node
|
||||
from nova.objects import service
|
||||
from nova.openstack.common import timeutils
|
||||
@@ -75,6 +76,17 @@ class _TestComputeNodeObject(object):
|
||||
self.compare_obj(compute, fake_compute_node,
|
||||
comparators={'stats': self.json_comparator})
|
||||
|
||||
def test_recreate_fails(self):
|
||||
self.mox.StubOutWithMock(db, 'compute_node_create')
|
||||
db.compute_node_create(self.context, {'service_id': 456}).AndReturn(
|
||||
fake_compute_node)
|
||||
self.mox.ReplayAll()
|
||||
compute = compute_node.ComputeNode()
|
||||
compute.service_id = 456
|
||||
compute.create(self.context)
|
||||
self.assertRaises(exception.ObjectActionError, compute.create,
|
||||
self.context)
|
||||
|
||||
def test_save(self):
|
||||
self.mox.StubOutWithMock(db, 'compute_node_update')
|
||||
db.compute_node_update(self.context, 123, {'vcpus_used': 3}).\
|
||||
|
||||
Reference in New Issue
Block a user