Merge "Fix old attach method"

This commit is contained in:
Zuul 2021-03-23 15:47:07 +00:00 committed by Gerrit Code Review
commit ee1799670c
2 changed files with 13 additions and 4 deletions

View File

@ -180,6 +180,13 @@ class Volume(cleanable.CinderCleanableObject, base.CinderObject,
md = {d['key']: d['value'] for d in value}
self.admin_metadata = md
def admin_metadata_update(self, metadata, delete, add=True, update=True):
new_metadata = db.volume_admin_metadata_update(self._context, self.id,
metadata, delete, add,
update)
self.admin_metadata = new_metadata
self._reset_metadata_tracking(fields=('admin_metadata',))
@property
def volume_glance_metadata(self):
md = [MetadataObject(k, v) for k, v in self.glance_metadata.items()]

View File

@ -1195,15 +1195,17 @@ class API(base.Base):
context.authorize(vol_meta_policy.UPDATE_ADMIN_METADATA_POLICY,
target_obj=volume)
utils.check_metadata_properties(metadata)
db_meta = self.db.volume_admin_metadata_update(context, volume.id,
metadata, delete, add,
update)
# Policy could allow non admin users to update admin metadata, but
# underlying DB methods require admin privileges, so we elevate the
# context.
with volume.obj_as_admin():
volume.admin_metadata_update(metadata, delete, add, update)
# TODO(jdg): Implement an RPC call for drivers that may use this info
LOG.info("Update volume admin metadata completed successfully.",
resource=volume)
return db_meta
return volume.admin_metadata
def get_snapshot_metadata(self, context, snapshot):
"""Get all metadata associated with a snapshot."""