Add helper methods to attach/detach shares

Manila is the OpenStack Shared Filesystems service.
These series of patches implement changes required in Nova to allow the shares
provided by Manila to be associated with and attached to instances using
virtiofs.

Implements: blueprint libvirt-virtiofs-attach-manila-shares
Change-Id: Ieef67e5a090e2d4b5eb3dd53381c26d277ccfcbe
This commit is contained in:
René Ribaud 2023-06-08 16:08:47 +02:00
parent 5e508a09b3
commit bef088040d
2 changed files with 36 additions and 0 deletions

View File

@ -395,6 +395,24 @@ class TestOpenStackClient(object):
return self.api_delete('/servers/%s/os-volume_attachments/%s' %
(server_id, volume_id))
def get_server_shares(self, server_id):
return self.api_get('/servers/%s/shares' %
(server_id)).body['share']
def get_server_share(self, server_id, share_id):
return self.api_get('/servers/%s/shares/%s' %
(server_id, share_id)
).body['share']
def post_server_share(self, server_id, share_attachment):
return self.api_post('/servers/%s/shares' %
(server_id), share_attachment
).body['share']
def delete_server_share(self, server_id, share_id):
return self.api_delete('/servers/%s/shares/%s' %
(server_id, share_id))
def post_server_metadata(self, server_id, metadata):
post_body = {'metadata': {}}
post_body['metadata'].update(metadata)

View File

@ -550,6 +550,24 @@ class InstanceHelperMixin:
self.notifier.wait_for_versioned_notifications(
'instance.interface_detach.end')
def _get_share(self, server, share_id):
return (self.api.get_server_share(server['id'], share_id))
def _attach_share(self, server, share_id, tag=None):
if not tag:
self.api.post_server_share(
server['id'], {"share": {"share_id": share_id}})
else:
self.api.post_server_share(
server['id'], {"share": {"share_id": share_id, "tag": tag}})
self.notifier.wait_for_versioned_notifications(
'instance.share_attach.end')
def _detach_share(self, server, share_id):
self.api.delete_server_share(server['id'], share_id)
self.notifier.wait_for_versioned_notifications(
'instance.share_detach.end')
def _rebuild_server(self, server, image_uuid, expected_state='ACTIVE'):
"""Rebuild a server."""
self.api.post_server_action(