|
|
@@ -17,6 +17,7 @@ class ProviderList(object):
|
|
|
AZURE = 'azure'
|
|
|
GCE = 'gce'
|
|
|
OPENSTACK = 'openstack'
|
|
|
+ MOCK = 'mock'
|
|
|
|
|
|
|
|
|
class CloudProviderFactory(object):
|
|
|
@@ -48,19 +49,11 @@ class CloudProviderFactory(object):
|
|
|
if isinstance(cls, type) and issubclass(cls, CloudProvider):
|
|
|
if hasattr(cls, "PROVIDER_ID"):
|
|
|
provider_id = getattr(cls, "PROVIDER_ID")
|
|
|
- if issubclass(cls, TestMockHelperMixin):
|
|
|
- if self.provider_list.get(provider_id, {}).get(
|
|
|
- 'mock_class'):
|
|
|
- log.warning("Mock provider with id: %s is already "
|
|
|
- "registered. Overriding with class: %s",
|
|
|
- provider_id, cls)
|
|
|
- self.provider_list[provider_id]['mock_class'] = cls
|
|
|
- else:
|
|
|
- if self.provider_list.get(provider_id, {}).get('class'):
|
|
|
- log.warning("Provider with id: %s is already "
|
|
|
- "registered. Overriding with class: %s",
|
|
|
- provider_id, cls)
|
|
|
- self.provider_list[provider_id]['class'] = cls
|
|
|
+ if self.provider_list.get(provider_id, {}).get('class'):
|
|
|
+ log.warning("Provider with id: %s is already "
|
|
|
+ "registered. Overriding with class: %s",
|
|
|
+ provider_id, cls)
|
|
|
+ self.provider_list[provider_id]['class'] = cls
|
|
|
else:
|
|
|
log.warning("Provider class: %s implements CloudProvider but"
|
|
|
" does not define PROVIDER_ID. Ignoring...", cls)
|
|
|
@@ -102,8 +95,7 @@ class CloudProviderFactory(object):
|
|
|
:rtype: dict
|
|
|
:return: A dict of available providers and their implementations in the
|
|
|
following format::
|
|
|
- {'aws': {'class': aws.provider.AWSCloudProvider,
|
|
|
- 'mock_class': aws.provider.MockAWSCloudProvider},
|
|
|
+ {'aws': {'class': aws.provider.AWSCloudProvider},
|
|
|
'openstack': {'class': openstack.provider.OpenStackCloudProvi
|
|
|
der}
|
|
|
}
|
|
|
@@ -143,14 +135,10 @@ class CloudProviderFactory(object):
|
|
|
log.debug("Created '%s' provider", name)
|
|
|
return provider_class(config)
|
|
|
|
|
|
- def get_provider_class(self, name, get_mock=False):
|
|
|
+ def get_provider_class(self, name):
|
|
|
"""
|
|
|
Return a class for the requested provider.
|
|
|
|
|
|
- :type get_mock: ``bool``
|
|
|
- :param get_mock: If True, returns a mock version of the provider
|
|
|
- if available, or the real version if not.
|
|
|
-
|
|
|
:rtype: provider class or ``None``
|
|
|
:return: A class corresponding to the requested provider or ``None``
|
|
|
if the provider was not found.
|
|
|
@@ -158,24 +146,19 @@ class CloudProviderFactory(object):
|
|
|
log.debug("Returning a class for the %s provider", name)
|
|
|
impl = self.list_providers().get(name)
|
|
|
if impl:
|
|
|
- if get_mock and impl.get("mock_class"):
|
|
|
- log.debug("param get_mock set to True, returning "
|
|
|
- "a mock version of the provider %s", name)
|
|
|
- return impl["mock_class"]
|
|
|
- else:
|
|
|
- log.debug("Returning the real version of %s", name)
|
|
|
- return impl["class"]
|
|
|
+ log.debug("Returning provider class for %s", name)
|
|
|
+ return impl["class"]
|
|
|
else:
|
|
|
log.debug("Provider with the name: %s not found", name)
|
|
|
return None
|
|
|
|
|
|
- def get_all_provider_classes(self, get_mock=False):
|
|
|
+ def get_all_provider_classes(self, ignore_mocks=False):
|
|
|
"""
|
|
|
Returns a list of classes for all available provider implementations
|
|
|
|
|
|
- :type get_mock: ``bool``
|
|
|
- :param get_mock: If True, returns a mock version of the provider
|
|
|
- if available, or the real version if not.
|
|
|
+ :type ignore_mocks: ``bool``
|
|
|
+ :param ignore_mocks: If True, does not return mock providers. Mock
|
|
|
+ providers are providers which implement the TestMockHelperMixin.
|
|
|
|
|
|
:rtype: type ``class`` or ``None``
|
|
|
:return: A list of all available provider classes or an empty list
|
|
|
@@ -183,10 +166,9 @@ class CloudProviderFactory(object):
|
|
|
"""
|
|
|
all_providers = []
|
|
|
for impl in self.list_providers().values():
|
|
|
- if get_mock and impl.get("mock_class"):
|
|
|
- log.debug("param get_mock set to True, appending "
|
|
|
- "a mock version of the provider %s", impl)
|
|
|
- all_providers.append(impl["mock_class"])
|
|
|
+ if ignore_mocks:
|
|
|
+ if not issubclass(impl["class"], TestMockHelperMixin):
|
|
|
+ all_providers.append(impl["class"])
|
|
|
else:
|
|
|
all_providers.append(impl["class"])
|
|
|
log.info("List of provider classes: %s", all_providers)
|