diff --git a/tobiko/openstack/manila/__init__.py b/tobiko/openstack/manila/__init__.py index 85d0788c3..3b4e159b1 100644 --- a/tobiko/openstack/manila/__init__.py +++ b/tobiko/openstack/manila/__init__.py @@ -27,6 +27,7 @@ get_shares_by_name = _client.get_shares_by_name delete_share = _client.delete_share extend_share = _client.extend_share list_shares = _client.list_shares +ensure_default_share_type_exists = _client.ensure_default_share_type_exists # Waiters wait_for_share_status = _waiters.wait_for_share_status diff --git a/tobiko/openstack/manila/_client.py b/tobiko/openstack/manila/_client.py index 656094b45..7b621e747 100644 --- a/tobiko/openstack/manila/_client.py +++ b/tobiko/openstack/manila/_client.py @@ -105,3 +105,22 @@ def get_shares_by_name(share_name, client=None): s for s in share_list if s['name'] == share_name ] return shares + + +def list_share_types(client=None): + return manila_client(client).share_types.list() + + +def create_share_type(name, spec_driver_handles_share_servers, + client=None): + return manila_client(client).share_types.create( + name, spec_driver_handles_share_servers) + + +def ensure_default_share_type_exists(client=None): + name = CONF.tobiko.manila.default_share_type_name + dhss = CONF.tobiko.manila.spec_driver_handles_share_servers + for share_type in list_share_types(client=client): + if share_type.name == name: + return + create_share_type(name, dhss, client=client) diff --git a/tobiko/openstack/manila/config.py b/tobiko/openstack/manila/config.py index a34b68421..f636a2eb0 100644 --- a/tobiko/openstack/manila/config.py +++ b/tobiko/openstack/manila/config.py @@ -25,6 +25,13 @@ OPTIONS = [ cfg.IntOpt('size', default=1, help="Default size in GB for shares created by share tests."), + cfg.StrOpt('default_share_type_name', + default='default', + help="Default share type's name"), + cfg.BoolOpt('spec_driver_handles_share_servers', + default=False, + help="Specifies whether the driver handles the share servers " + "or not"), ] diff --git a/tobiko/tests/scenario/manila/test_manila.py b/tobiko/tests/scenario/manila/test_manila.py index 7567f0adf..66bcc989e 100644 --- a/tobiko/tests/scenario/manila/test_manila.py +++ b/tobiko/tests/scenario/manila/test_manila.py @@ -41,6 +41,7 @@ class ManilaApiTestCase(testtools.TestCase): LOG.debug('skipping creation of manila resources') cls.share = manila.get_shares_by_name(manila.SHARE_NAME)[0] else: + manila.ensure_default_share_type_exists() cls.share = manila.create_share(name=manila.SHARE_NAME) manila.wait_for_share_status(cls.share['id'])