Merge "Make manage_images a property of ProviderConfig"

This commit is contained in:
Zuul
2018-05-09 18:09:53 +00:00
committed by Gerrit Code Review
6 changed files with 25 additions and 7 deletions

View File

@@ -440,7 +440,7 @@ class CleanupWorker(BaseWorker):
# (since this should be done regardless of the build # (since this should be done regardless of the build
# state). # state).
for provider in known_providers: for provider in known_providers:
if not provider.driver.manage_images: if not provider.manage_images:
# This provider doesn't manage images # This provider doesn't manage images
continue continue
try: try:
@@ -469,7 +469,7 @@ class CleanupWorker(BaseWorker):
continue continue
for provider in known_providers: for provider in known_providers:
if not provider.driver.manage_images: if not provider.manage_images:
# This provider doesn't manage images # This provider doesn't manage images
continue continue
try: try:
@@ -975,7 +975,7 @@ class UploadWorker(BaseWorker):
to providers, do the upload if they are available on the local disk. to providers, do the upload if they are available on the local disk.
''' '''
for provider in self._config.providers.values(): for provider in self._config.providers.values():
if not provider.driver.manage_images: if not provider.manage_images:
continue continue
for image in provider.diskimages.values(): for image in provider.diskimages.values():
uploaded = False uploaded = False

View File

@@ -207,7 +207,7 @@ class NodeRequestHandler(object, metaclass=abc.ABCMeta):
:returns: True if it is available, False otherwise. :returns: True if it is available, False otherwise.
''' '''
if self.provider.driver.manage_images: if self.provider.manage_images:
for label in self.request.node_types: for label in self.request.node_types:
if self.pool.labels[label].cloud_image: if self.pool.labels[label].cloud_image:
if not self.manager.labelReady(self.pool.labels[label]): if not self.manager.labelReady(self.pool.labels[label]):
@@ -715,7 +715,6 @@ class ProviderConfig(ConfigValue, metaclass=abc.ABCMeta):
self.driver = Driver() self.driver = Driver()
self.driver.name = provider.get('driver', 'openstack') self.driver.name = provider.get('driver', 'openstack')
self.max_concurrency = provider.get('max-concurrency', -1) self.max_concurrency = provider.get('max-concurrency', -1)
self.driver.manage_images = False
def __repr__(self): def __repr__(self):
return "<Provider %s>" % self.name return "<Provider %s>" % self.name
@@ -728,6 +727,14 @@ class ProviderConfig(ConfigValue, metaclass=abc.ABCMeta):
''' '''
pass pass
@property
@abc.abstractmethod
def manage_images(self):
'''
Return True if provider manages external images, False otherwise.
'''
pass
@abc.abstractmethod @abc.abstractmethod
def __eq__(self, other): def __eq__(self, other):
pass pass

View File

@@ -107,6 +107,10 @@ class OpenStackProviderConfig(ProviderConfig):
def pools(self): def pools(self):
return self.__pools return self.__pools
@property
def manage_images(self):
return True
@staticmethod @staticmethod
def reset(): def reset():
OpenStackProviderConfig.os_client_config = None OpenStackProviderConfig.os_client_config = None
@@ -119,7 +123,6 @@ class OpenStackProviderConfig(ProviderConfig):
self.cloud_config = self.os_client_config.get_one_cloud(**cloud_kwargs) self.cloud_config = self.os_client_config.get_one_cloud(**cloud_kwargs)
self.image_type = self.cloud_config.config['image_format'] self.image_type = self.cloud_config.config['image_format']
self.driver.manage_images = True
self.region_name = self.provider.get('region-name') self.region_name = self.provider.get('region-name')
self.rate = float(self.provider.get('rate', 1.0)) self.rate = float(self.provider.get('rate', 1.0))
self.boot_timeout = self.provider.get('boot-timeout', 60) self.boot_timeout = self.provider.get('boot-timeout', 60)

View File

@@ -50,6 +50,10 @@ class StaticProviderConfig(ProviderConfig):
def pools(self): def pools(self):
return self.__pools return self.__pools
@property
def manage_images(self):
return False
def load(self, config): def load(self, config):
for pool in self.provider.get('pools', []): for pool in self.provider.get('pools', []):
pp = StaticPool() pp = StaticPool()

View File

@@ -882,7 +882,7 @@ class NodePool(threading.Thread):
ready in at least one provider. False otherwise. ready in at least one provider. False otherwise.
''' '''
for pool in label.pools: for pool in label.pools:
if not pool.provider.driver.manage_images: if not pool.provider.manage_images:
# Provider doesn't manage images, assuming label is ready # Provider doesn't manage images, assuming label is ready
return True return True
for pool_label in pool.labels.values(): for pool_label in pool.labels.values():

View File

@@ -39,6 +39,10 @@ class TestConfig(ProviderConfig):
def pools(self): def pools(self):
return self.__pools return self.__pools
@property
def manage_images(self):
return False
def load(self, newconfig): def load(self, newconfig):
self.labels = set() self.labels = set()
for pool in self.provider.get('pools', []): for pool in self.provider.get('pools', []):