Browse Source

Fix volume OVO create method

When we create a volume in the DB using the OVO interface we were
missing some fields in the volume present in memory after it has been
created.

This was caused by the create method not passing the expected attributes
to the _from_db_object.

Because of this missing information we have places in the code where we
forcefully a reload of the whole Volume OVO when it shouldn't be
necessary.

This patch fixes the create method of the Volume OVO and removes an
instance of the forceful reload of the volume, reducing our DB calls.

Change-Id: Ia59cbc5a4eb279e56f07ff9f44aa40b582aea829
changes/49/778049/3
Gorka Eguileor 5 months ago
parent
commit
bea4586635
  1. 3
      cinder/objects/volume.py
  2. 3
      cinder/volume/api.py

3
cinder/objects/volume.py

@ -351,7 +351,8 @@ class Volume(cleanable.CinderCleanableObject, base.CinderObject,
volume_types.get_default_volume_type()['id'])
db_volume = db.volume_create(self._context, updates)
self._from_db_object(self._context, self, db_volume)
expected_attrs = self._get_expected_attrs(self._context)
self._from_db_object(self._context, self, db_volume, expected_attrs)
def save(self):
updates = self.cinder_obj_get_changes()

3
cinder/volume/api.py

@ -353,9 +353,6 @@ class API(base.Base):
if flow_engine.storage.fetch('refresh_az'):
self.list_availability_zones(enable_cache=True,
refresh_cache=True)
# Refresh the object here, otherwise things ain't right
vref = objects.Volume.get_by_id(
context, vref['id'])
LOG.info("Create volume request issued successfully.",
resource=vref)
return vref

Loading…
Cancel
Save