diff --git a/nodepool/config.py b/nodepool/config.py index 1303027a1..b89a9e35c 100755 --- a/nodepool/config.py +++ b/nodepool/config.py @@ -21,7 +21,6 @@ from six.moves import configparser as ConfigParser import time import yaml -from nodepool import fakeprovider from nodepool import zk @@ -204,19 +203,23 @@ def loadConfig(config_path): l.pools = [] for provider in config.get('providers', []): + provider.setdefault('driver', 'openstack') + # Ensure legacy configuration still works when using fake name + if provider.get('name', '').startswith('fake'): + provider['driver'] = 'fake' p = Provider() p.name = provider['name'] p.driver = Driver() - p.driver.name = provider.get('driver', 'openstack') + p.driver.name = provider['driver'] p.driver.manage_images = False newconfig.providers[p.name] = p cloud_kwargs = _cloudKwargsFromProvider(provider) p.cloud_config = None p.image_type = None - if p.driver.name == 'openstack': + if p.driver.name in ('openstack', 'fake'): p.driver.manage_images = True - p.cloud_config = _get_one_cloud(cloud_config, cloud_kwargs) + p.cloud_config = cloud_config.get_one_cloud(**cloud_kwargs) p.image_type = p.cloud_config.config['image_format'] p.region_name = provider.get('region-name') p.max_concurrency = provider.get('max-concurrency', -1) @@ -311,12 +314,6 @@ def _cloudKwargsFromProvider(provider): for arg in ['region-name', 'cloud']: if arg in provider: cloud_kwargs[arg] = provider[arg] - + if provider['driver'] == 'fake': + cloud_kwargs['validate'] = False return cloud_kwargs - - -def _get_one_cloud(cloud_config, cloud_kwargs): - '''This is a function to allow for overriding it in tests.''' - if cloud_kwargs.get('cloud', '').startswith('fake'): - return fakeprovider.fake_get_one_cloud(cloud_config, cloud_kwargs) - return cloud_config.get_one_cloud(**cloud_kwargs) diff --git a/nodepool/driver/fake/handler.py b/nodepool/driver/fake/handler.py new file mode 100644 index 000000000..09b14e6cd --- /dev/null +++ b/nodepool/driver/fake/handler.py @@ -0,0 +1,19 @@ +# Copyright 2017 Red Hat +# +# Licensed under the Apache License, Version 2.0 (the "License"); you may +# not use this file except in compliance with the License. You may obtain +# a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, WITHOUT +# WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the +# License for the specific language governing permissions and limitations +# under the License. + +from nodepool.driver.openstack.handler import OpenStackNodeRequestHandler + + +class FakeNodeRequestHandler(OpenStackNodeRequestHandler): + pass diff --git a/nodepool/driver/fake/provider.py b/nodepool/driver/fake/provider.py index 0a11b41fb..7e0ef6d6a 100644 --- a/nodepool/driver/fake/provider.py +++ b/nodepool/driver/fake/provider.py @@ -14,14 +14,247 @@ # See the License for the specific language governing permissions and # limitations under the License. -from nodepool import fakeprovider +import logging +import threading +import time +import uuid + +import shade + +from nodepool import exceptions from nodepool.driver.openstack.provider import OpenStackProvider +class Dummy(object): + IMAGE = 'Image' + INSTANCE = 'Instance' + FLAVOR = 'Flavor' + LOCATION = 'Server.Location' + + def __init__(self, kind, **kw): + self.__kind = kind + self.__kw = kw + for k, v in kw.items(): + setattr(self, k, v) + try: + if self.should_fail: + raise shade.OpenStackCloudException('This image has ' + 'SHOULD_FAIL set to True.') + except AttributeError: + pass + + def __repr__(self): + args = [] + for k in self.__kw.keys(): + args.append('%s=%s' % (k, getattr(self, k))) + args = ' '.join(args) + return '<%s %s %s>' % (self.__kind, id(self), args) + + def __getitem__(self, key, default=None): + return getattr(self, key, default) + + def __setitem__(self, key, value): + setattr(self, key, value) + + def get(self, key, default=None): + return getattr(self, key, default) + + def set(self, key, value): + setattr(self, key, value) + + +class FakeOpenStackCloud(object): + log = logging.getLogger("nodepool.FakeOpenStackCloud") + + def __init__(self, images=None, networks=None): + self.pause_creates = False + self._image_list = images + if self._image_list is None: + self._image_list = [ + Dummy( + Dummy.IMAGE, + id='fake-image-id', + status='READY', + name='Fake Precise', + metadata={}) + ] + if networks is None: + networks = [dict(id='fake-public-network-uuid', + name='fake-public-network-name'), + dict(id='fake-private-network-uuid', + name='fake-private-network-name'), + dict(id='fake-ipv6-network-uuid', + name='fake-ipv6-network-name')] + self.networks = networks + self._flavor_list = [ + Dummy(Dummy.FLAVOR, id='f1', ram=8192, name='Fake Flavor'), + Dummy(Dummy.FLAVOR, id='f2', ram=8192, name='Unreal Flavor'), + ] + self._server_list = [] + + def _get(self, name_or_id, instance_list): + self.log.debug("Get %s in %s" % (name_or_id, repr(instance_list))) + for instance in instance_list: + if instance.name == name_or_id or instance.id == name_or_id: + return instance + return None + + def get_network(self, name_or_id, filters=None): + for net in self.networks: + if net['id'] == name_or_id or net['name'] == name_or_id: + return net + return self.networks[0] + + def _create( + self, instance_list, instance_type=Dummy.INSTANCE, + done_status='ACTIVE', **kw): + should_fail = kw.get('SHOULD_FAIL', '').lower() == 'true' + nics = kw.get('nics', []) + addresses = None + # if keyword 'ipv6-uuid' is found in provider config, + # ipv6 address will be available in public addr dict. + for nic in nics: + if nic['net-id'] != 'fake-ipv6-network-uuid': + continue + addresses = dict( + public=[dict(version=4, addr='fake'), + dict(version=6, addr='fake_v6')], + private=[dict(version=4, addr='fake')] + ) + public_v6 = 'fake_v6' + public_v4 = 'fake' + private_v4 = 'fake' + interface_ip = 'fake_v6' + break + if not addresses: + addresses = dict( + public=[dict(version=4, addr='fake')], + private=[dict(version=4, addr='fake')] + ) + public_v6 = '' + public_v4 = 'fake' + private_v4 = 'fake' + interface_ip = 'fake' + + s = Dummy(instance_type, + id=uuid.uuid4().hex, + name=kw['name'], + status='BUILD', + adminPass='fake', + addresses=addresses, + public_v4=public_v4, + public_v6=public_v6, + private_v4=private_v4, + interface_ip=interface_ip, + location=Dummy(Dummy.LOCATION, zone=kw.get('az')), + metadata=kw.get('meta', {}), + manager=self, + key_name=kw.get('key_name', None), + should_fail=should_fail, + event=threading.Event()) + instance_list.append(s) + t = threading.Thread(target=self._finish, + name='FakeProvider create', + args=(s, 0.1, done_status)) + t.start() + return s + + def _delete(self, name_or_id, instance_list): + self.log.debug("Delete from %s" % (repr(instance_list),)) + instance = None + for maybe in instance_list: + if maybe.name == name_or_id or maybe.id == name_or_id: + instance = maybe + if instance: + instance_list.remove(instance) + self.log.debug("Deleted from %s" % (repr(instance_list),)) + + def _finish(self, obj, delay, status): + self.log.debug("Pause creates %s", self.pause_creates) + if self.pause_creates: + self.log.debug("Pausing") + obj.event.wait() + self.log.debug("Continuing") + else: + time.sleep(delay) + obj.status = status + + def create_image(self, **kwargs): + return self._create( + self._image_list, instance_type=Dummy.IMAGE, + done_status='READY', **kwargs) + + def get_image(self, name_or_id): + return self._get(name_or_id, self._image_list) + + def list_images(self): + return self._image_list + + def delete_image(self, name_or_id): + if not name_or_id: + raise Exception('name_or_id is Empty') + self._delete(name_or_id, self._image_list) + + def create_image_snapshot(self, name, server, **metadata): + # XXX : validate metadata? + return self._create( + self._image_list, instance_type=Dummy.IMAGE, + name=name, **metadata) + + def list_flavors(self, get_extra=False): + return self._flavor_list + + def get_openstack_vars(self, server): + server.public_v4 = 'fake' + server.public_v6 = 'fake' + server.private_v4 = 'fake' + server.interface_ip = 'fake' + return server + + def create_server(self, **kw): + return self._create(self._server_list, **kw) + + def get_server(self, name_or_id): + result = self._get(name_or_id, self._server_list) + return result + + def wait_for_server(self, server, **kwargs): + while server.status == 'BUILD': + time.sleep(0.1) + return server + + def list_servers(self): + return self._server_list + + def delete_server(self, name_or_id, delete_ips=True): + self._delete(name_or_id, self._server_list) + + def list_availability_zone_names(self): + return ['fake-az1', 'fake-az2'] + + +class FakeUploadFailCloud(FakeOpenStackCloud): + log = logging.getLogger("nodepool.FakeUploadFailCloud") + + def __init__(self, times_to_fail=None): + super(FakeUploadFailCloud, self).__init__() + self.times_to_fail = times_to_fail + self.times_failed = 0 + + def create_image(self, **kwargs): + if self.times_to_fail is None: + raise exceptions.BuilderError("Test fail image upload.") + self.times_failed += 1 + if self.times_failed <= self.times_to_fail: + raise exceptions.BuilderError("Test fail image upload.") + else: + return super(FakeUploadFailCloud, self).create_image(**kwargs) + + class FakeProvider(OpenStackProvider): def __init__(self, provider, use_taskmanager): self.createServer_fails = 0 - self.__client = fakeprovider.FakeOpenStackCloud() + self.__client = FakeOpenStackCloud() super(FakeProvider, self).__init__(provider, use_taskmanager) def _getClient(self): diff --git a/nodepool/fakeprovider.py b/nodepool/fakeprovider.py deleted file mode 100644 index fa55f6953..000000000 --- a/nodepool/fakeprovider.py +++ /dev/null @@ -1,255 +0,0 @@ -#!/usr/bin/env python -# -# Copyright 2013 OpenStack Foundation -# -# Licensed under the Apache License, Version 2.0 (the "License"); you may -# not use this file except in compliance with the License. You may obtain -# a copy of the License at -# -# http://www.apache.org/licenses/LICENSE-2.0 -# -# Unless required by applicable law or agreed to in writing, software -# distributed under the License is distributed on an "AS IS" BASIS, WITHOUT -# WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the -# License for the specific language governing permissions and limitations -# under the License. - -import logging -import threading -import time -import uuid - -import shade - -from nodepool import exceptions - - -class Dummy(object): - IMAGE = 'Image' - INSTANCE = 'Instance' - FLAVOR = 'Flavor' - LOCATION = 'Server.Location' - - def __init__(self, kind, **kw): - self.__kind = kind - self.__kw = kw - for k, v in kw.items(): - setattr(self, k, v) - try: - if self.should_fail: - raise shade.OpenStackCloudException('This image has ' - 'SHOULD_FAIL set to True.') - except AttributeError: - pass - - def __repr__(self): - args = [] - for k in self.__kw.keys(): - args.append('%s=%s' % (k, getattr(self, k))) - args = ' '.join(args) - return '<%s %s %s>' % (self.__kind, id(self), args) - - def __getitem__(self, key, default=None): - return getattr(self, key, default) - - def __setitem__(self, key, value): - setattr(self, key, value) - - def get(self, key, default=None): - return getattr(self, key, default) - - def set(self, key, value): - setattr(self, key, value) - - -def fake_get_one_cloud(cloud_config, cloud_kwargs): - cloud_kwargs['validate'] = False - return cloud_config.get_one_cloud(**cloud_kwargs) - - -class FakeOpenStackCloud(object): - log = logging.getLogger("nodepool.FakeOpenStackCloud") - - def __init__(self, images=None, networks=None): - self.pause_creates = False - self._image_list = images - if self._image_list is None: - self._image_list = [ - Dummy( - Dummy.IMAGE, - id='fake-image-id', - status='READY', - name='Fake Precise', - metadata={}) - ] - if networks is None: - networks = [dict(id='fake-public-network-uuid', - name='fake-public-network-name'), - dict(id='fake-private-network-uuid', - name='fake-private-network-name'), - dict(id='fake-ipv6-network-uuid', - name='fake-ipv6-network-name')] - self.networks = networks - self._flavor_list = [ - Dummy(Dummy.FLAVOR, id='f1', ram=8192, name='Fake Flavor'), - Dummy(Dummy.FLAVOR, id='f2', ram=8192, name='Unreal Flavor'), - ] - self._server_list = [] - - def _get(self, name_or_id, instance_list): - self.log.debug("Get %s in %s" % (name_or_id, repr(instance_list))) - for instance in instance_list: - if instance.name == name_or_id or instance.id == name_or_id: - return instance - return None - - def get_network(self, name_or_id, filters=None): - for net in self.networks: - if net['id'] == name_or_id or net['name'] == name_or_id: - return net - return self.networks[0] - - def _create( - self, instance_list, instance_type=Dummy.INSTANCE, - done_status='ACTIVE', **kw): - should_fail = kw.get('SHOULD_FAIL', '').lower() == 'true' - nics = kw.get('nics', []) - addresses = None - # if keyword 'ipv6-uuid' is found in provider config, - # ipv6 address will be available in public addr dict. - for nic in nics: - if nic['net-id'] != 'fake-ipv6-network-uuid': - continue - addresses = dict( - public=[dict(version=4, addr='fake'), - dict(version=6, addr='fake_v6')], - private=[dict(version=4, addr='fake')] - ) - public_v6 = 'fake_v6' - public_v4 = 'fake' - private_v4 = 'fake' - interface_ip = 'fake_v6' - break - if not addresses: - addresses = dict( - public=[dict(version=4, addr='fake')], - private=[dict(version=4, addr='fake')] - ) - public_v6 = '' - public_v4 = 'fake' - private_v4 = 'fake' - interface_ip = 'fake' - - s = Dummy(instance_type, - id=uuid.uuid4().hex, - name=kw['name'], - status='BUILD', - adminPass='fake', - addresses=addresses, - public_v4=public_v4, - public_v6=public_v6, - private_v4=private_v4, - interface_ip=interface_ip, - location=Dummy(Dummy.LOCATION, zone=kw.get('az')), - metadata=kw.get('meta', {}), - manager=self, - key_name=kw.get('key_name', None), - should_fail=should_fail, - event=threading.Event()) - instance_list.append(s) - t = threading.Thread(target=self._finish, - name='FakeProvider create', - args=(s, 0.1, done_status)) - t.start() - return s - - def _delete(self, name_or_id, instance_list): - self.log.debug("Delete from %s" % (repr(instance_list),)) - instance = None - for maybe in instance_list: - if maybe.name == name_or_id or maybe.id == name_or_id: - instance = maybe - if instance: - instance_list.remove(instance) - self.log.debug("Deleted from %s" % (repr(instance_list),)) - - def _finish(self, obj, delay, status): - self.log.debug("Pause creates %s", self.pause_creates) - if self.pause_creates: - self.log.debug("Pausing") - obj.event.wait() - self.log.debug("Continuing") - else: - time.sleep(delay) - obj.status = status - - def create_image(self, **kwargs): - return self._create( - self._image_list, instance_type=Dummy.IMAGE, - done_status='READY', **kwargs) - - def get_image(self, name_or_id): - return self._get(name_or_id, self._image_list) - - def list_images(self): - return self._image_list - - def delete_image(self, name_or_id): - if not name_or_id: - raise Exception('name_or_id is Empty') - self._delete(name_or_id, self._image_list) - - def create_image_snapshot(self, name, server, **metadata): - # XXX : validate metadata? - return self._create( - self._image_list, instance_type=Dummy.IMAGE, - name=name, **metadata) - - def list_flavors(self, get_extra=False): - return self._flavor_list - - def get_openstack_vars(self, server): - server.public_v4 = 'fake' - server.public_v6 = 'fake' - server.private_v4 = 'fake' - server.interface_ip = 'fake' - return server - - def create_server(self, **kw): - return self._create(self._server_list, **kw) - - def get_server(self, name_or_id): - result = self._get(name_or_id, self._server_list) - return result - - def wait_for_server(self, server, **kwargs): - while server.status == 'BUILD': - time.sleep(0.1) - return server - - def list_servers(self): - return self._server_list - - def delete_server(self, name_or_id, delete_ips=True): - self._delete(name_or_id, self._server_list) - - def list_availability_zone_names(self): - return ['fake-az1', 'fake-az2'] - - -class FakeUploadFailCloud(FakeOpenStackCloud): - log = logging.getLogger("nodepool.FakeUploadFailCloud") - - def __init__(self, times_to_fail=None): - super(FakeUploadFailCloud, self).__init__() - self.times_to_fail = times_to_fail - self.times_failed = 0 - - def create_image(self, **kwargs): - if self.times_to_fail is None: - raise exceptions.BuilderError("Test fail image upload.") - self.times_failed += 1 - if self.times_failed <= self.times_to_fail: - raise exceptions.BuilderError("Test fail image upload.") - else: - return super(FakeUploadFailCloud, self).create_image(**kwargs) diff --git a/nodepool/launcher.py b/nodepool/launcher.py index 74266a95a..27674f40a 100755 --- a/nodepool/launcher.py +++ b/nodepool/launcher.py @@ -28,6 +28,7 @@ from nodepool import provider_manager from nodepool import stats from nodepool import config as nodepool_config from nodepool import zk +from nodepool.driver.fake.handler import FakeNodeRequestHandler from nodepool.driver.openstack.handler import OpenStackNodeRequestHandler @@ -141,7 +142,9 @@ class PoolWorker(threading.Thread): #---------------------------------------------------------------- def _get_node_request_handler(self, provider, request): - if provider.driver.name == 'openstack': + if provider.driver.name == 'fake': + return FakeNodeRequestHandler(self, request) + elif provider.driver.name == 'openstack': return OpenStackNodeRequestHandler(self, request) else: raise RuntimeError("Unknown provider driver %s" % provider.driver) diff --git a/nodepool/provider_manager.py b/nodepool/provider_manager.py index 1c592ee68..f51496b53 100755 --- a/nodepool/provider_manager.py +++ b/nodepool/provider_manager.py @@ -23,7 +23,7 @@ from nodepool.driver.openstack.provider import OpenStackProvider def get_provider(provider, use_taskmanager): - if provider.name.startswith('fake'): + if provider.driver.name == 'fake': return FakeProvider(provider, use_taskmanager) elif provider.driver.name == 'openstack': return OpenStackProvider(provider, use_taskmanager) diff --git a/nodepool/tests/__init__.py b/nodepool/tests/__init__.py index 1f27317cd..3ff0db716 100644 --- a/nodepool/tests/__init__.py +++ b/nodepool/tests/__init__.py @@ -32,7 +32,6 @@ import kazoo.client import testtools from nodepool import builder -from nodepool import fakeprovider from nodepool import launcher from nodepool import webapp from nodepool import zk @@ -190,9 +189,6 @@ class BaseTestCase(testtools.TestCase): self.setUpFakes() def setUpFakes(self): - self.useFixture(fixtures.MonkeyPatch( - 'nodepool.launcher._get_one_cloud', - fakeprovider.fake_get_one_cloud)) clouds_path = os.path.join(os.path.dirname(__file__), 'fixtures', 'clouds.yaml') self.useFixture(fixtures.MonkeyPatch( diff --git a/nodepool/tests/fixtures/leaked_node.yaml b/nodepool/tests/fixtures/leaked_node.yaml index 40d166b85..902554748 100644 --- a/nodepool/tests/fixtures/leaked_node.yaml +++ b/nodepool/tests/fixtures/leaked_node.yaml @@ -13,6 +13,7 @@ labels: providers: - name: fake-provider cloud: fake + driver: fake region-name: fake-region rate: 0.0001 diskimages: diff --git a/nodepool/tests/fixtures/leaked_node_nodepool_id.yaml b/nodepool/tests/fixtures/leaked_node_nodepool_id.yaml index faf2c6058..5d95ddffb 100644 --- a/nodepool/tests/fixtures/leaked_node_nodepool_id.yaml +++ b/nodepool/tests/fixtures/leaked_node_nodepool_id.yaml @@ -13,6 +13,7 @@ labels: providers: - name: fake-provider cloud: fake + driver: fake region-name: fake-region rate: 0.0001 nodepool-id: foo diff --git a/nodepool/tests/fixtures/multiple_pools.yaml b/nodepool/tests/fixtures/multiple_pools.yaml index 49f667320..72ae76cb8 100644 --- a/nodepool/tests/fixtures/multiple_pools.yaml +++ b/nodepool/tests/fixtures/multiple_pools.yaml @@ -15,6 +15,7 @@ labels: providers: - name: fake-provider cloud: fake + driver: fake region-name: fake-region rate: 0.0001 diskimages: diff --git a/nodepool/tests/fixtures/node.yaml b/nodepool/tests/fixtures/node.yaml index eb2cb2b07..e794160ea 100644 --- a/nodepool/tests/fixtures/node.yaml +++ b/nodepool/tests/fixtures/node.yaml @@ -13,6 +13,7 @@ labels: providers: - name: fake-provider cloud: fake + driver: fake region-name: fake-region rate: 0.0001 diskimages: diff --git a/nodepool/tests/fixtures/node_az.yaml b/nodepool/tests/fixtures/node_az.yaml index f234cab1b..0ffa64290 100644 --- a/nodepool/tests/fixtures/node_az.yaml +++ b/nodepool/tests/fixtures/node_az.yaml @@ -13,6 +13,7 @@ labels: providers: - name: fake-provider cloud: fake + driver: fake region-name: fake-region rate: 0.0001 diskimages: diff --git a/nodepool/tests/fixtures/node_boot_from_volume.yaml b/nodepool/tests/fixtures/node_boot_from_volume.yaml index 55c950f5d..7b96d1208 100644 --- a/nodepool/tests/fixtures/node_boot_from_volume.yaml +++ b/nodepool/tests/fixtures/node_boot_from_volume.yaml @@ -13,6 +13,7 @@ labels: providers: - name: fake-provider cloud: fake + driver: fake region-name: fake-region rate: 0.0001 diskimages: diff --git a/nodepool/tests/fixtures/node_cmd.yaml b/nodepool/tests/fixtures/node_cmd.yaml index 08e1120cd..1f7658e32 100644 --- a/nodepool/tests/fixtures/node_cmd.yaml +++ b/nodepool/tests/fixtures/node_cmd.yaml @@ -14,6 +14,7 @@ labels: providers: - name: fake-provider1 cloud: fake + driver: fake rate: 0.0001 diskimages: - name: fake-image1 @@ -31,6 +32,7 @@ providers: - name: fake-provider2 cloud: fake + driver: fake rate: 0.0001 diskimages: - name: fake-image2 diff --git a/nodepool/tests/fixtures/node_disabled_label.yaml b/nodepool/tests/fixtures/node_disabled_label.yaml index e6e20dd3d..b3bd76faf 100644 --- a/nodepool/tests/fixtures/node_disabled_label.yaml +++ b/nodepool/tests/fixtures/node_disabled_label.yaml @@ -13,6 +13,7 @@ labels: providers: - name: fake-provider cloud: fake + driver: fake region-name: fake-region rate: 0.0001 diskimages: diff --git a/nodepool/tests/fixtures/node_diskimage_fail.yaml b/nodepool/tests/fixtures/node_diskimage_fail.yaml index f05be81b8..ad8fbc02c 100644 --- a/nodepool/tests/fixtures/node_diskimage_fail.yaml +++ b/nodepool/tests/fixtures/node_diskimage_fail.yaml @@ -13,6 +13,7 @@ labels: providers: - name: fake-provider cloud: fake + driver: fake region-name: fake-region rate: 0.0001 diskimages: diff --git a/nodepool/tests/fixtures/node_diskimage_pause.yaml b/nodepool/tests/fixtures/node_diskimage_pause.yaml index 1b07eee5a..6c206f6f9 100644 --- a/nodepool/tests/fixtures/node_diskimage_pause.yaml +++ b/nodepool/tests/fixtures/node_diskimage_pause.yaml @@ -15,6 +15,7 @@ labels: providers: - name: fake-provider cloud: fake + driver: fake region-name: fake-region rate: 0.0001 diskimages: diff --git a/nodepool/tests/fixtures/node_flavor_name.yaml b/nodepool/tests/fixtures/node_flavor_name.yaml index 10909dd5e..bae2adbd4 100644 --- a/nodepool/tests/fixtures/node_flavor_name.yaml +++ b/nodepool/tests/fixtures/node_flavor_name.yaml @@ -13,6 +13,7 @@ labels: providers: - name: fake-provider cloud: fake + driver: fake region-name: fake-region rate: 0.0001 diskimages: diff --git a/nodepool/tests/fixtures/node_image_upload_pause.yaml b/nodepool/tests/fixtures/node_image_upload_pause.yaml index eb97fe833..ce8ee5c31 100644 --- a/nodepool/tests/fixtures/node_image_upload_pause.yaml +++ b/nodepool/tests/fixtures/node_image_upload_pause.yaml @@ -15,6 +15,7 @@ labels: providers: - name: fake-provider cloud: fake + driver: fake region-name: fake-region rate: 0.0001 diskimages: diff --git a/nodepool/tests/fixtures/node_ipv6.yaml b/nodepool/tests/fixtures/node_ipv6.yaml index 7cc13b0e2..06e908559 100644 --- a/nodepool/tests/fixtures/node_ipv6.yaml +++ b/nodepool/tests/fixtures/node_ipv6.yaml @@ -16,6 +16,7 @@ labels: providers: - name: fake-provider1 cloud: fake + driver: fake region-name: fake-region rate: 0.0001 diskimages: @@ -34,6 +35,7 @@ providers: - name: fake-provider2 cloud: fake + driver: fake region-name: fake-region rate: 0.0001 diskimages: diff --git a/nodepool/tests/fixtures/node_label_provider.yaml b/nodepool/tests/fixtures/node_label_provider.yaml index 0bf4db88d..9a600056c 100644 --- a/nodepool/tests/fixtures/node_label_provider.yaml +++ b/nodepool/tests/fixtures/node_label_provider.yaml @@ -13,6 +13,7 @@ labels: providers: - name: fake-provider cloud: fake + driver: fake region-name: fake-region rate: 0.0001 diskimages: @@ -22,6 +23,7 @@ providers: max-servers: 96 - name: fake-provider2 cloud: fake + driver: fake region-name: fake-region rate: 0.0001 diskimages: diff --git a/nodepool/tests/fixtures/node_launch_retry.yaml b/nodepool/tests/fixtures/node_launch_retry.yaml index 5ada506c4..ecf41011b 100644 --- a/nodepool/tests/fixtures/node_launch_retry.yaml +++ b/nodepool/tests/fixtures/node_launch_retry.yaml @@ -13,6 +13,7 @@ labels: providers: - name: fake-provider cloud: fake + driver: fake region-name: fake-region launch-retries: 2 rate: 0.0001 diff --git a/nodepool/tests/fixtures/node_lost_requests.yaml b/nodepool/tests/fixtures/node_lost_requests.yaml index 8bb874143..0b1a82961 100644 --- a/nodepool/tests/fixtures/node_lost_requests.yaml +++ b/nodepool/tests/fixtures/node_lost_requests.yaml @@ -13,6 +13,7 @@ labels: providers: - name: fake-provider cloud: fake + driver: fake region-name: fake-region rate: 0.0001 diskimages: diff --git a/nodepool/tests/fixtures/node_max_ready_age.yaml b/nodepool/tests/fixtures/node_max_ready_age.yaml index b144e60a6..15789aa45 100644 --- a/nodepool/tests/fixtures/node_max_ready_age.yaml +++ b/nodepool/tests/fixtures/node_max_ready_age.yaml @@ -14,6 +14,7 @@ labels: providers: - name: fake-provider cloud: fake + driver: fake region-name: fake-region rate: 0.0001 diskimages: diff --git a/nodepool/tests/fixtures/node_net_name.yaml b/nodepool/tests/fixtures/node_net_name.yaml index 9b832ea19..a983fdbfa 100644 --- a/nodepool/tests/fixtures/node_net_name.yaml +++ b/nodepool/tests/fixtures/node_net_name.yaml @@ -13,6 +13,7 @@ labels: providers: - name: fake-provider cloud: fake + driver: fake region-name: fake-region rate: 0.0001 diskimages: diff --git a/nodepool/tests/fixtures/node_no_min_ready.yaml b/nodepool/tests/fixtures/node_no_min_ready.yaml index dafbc1e93..4ea152558 100644 --- a/nodepool/tests/fixtures/node_no_min_ready.yaml +++ b/nodepool/tests/fixtures/node_no_min_ready.yaml @@ -13,6 +13,7 @@ labels: providers: - name: fake-provider cloud: fake + driver: fake region-name: fake-region rate: 0.0001 diskimages: diff --git a/nodepool/tests/fixtures/node_quota.yaml b/nodepool/tests/fixtures/node_quota.yaml index 8968695d4..08013c6fb 100644 --- a/nodepool/tests/fixtures/node_quota.yaml +++ b/nodepool/tests/fixtures/node_quota.yaml @@ -13,6 +13,7 @@ labels: providers: - name: fake-provider cloud: fake + driver: fake region-name: fake-region rate: 0.0001 diskimages: diff --git a/nodepool/tests/fixtures/node_two_image.yaml b/nodepool/tests/fixtures/node_two_image.yaml index 43ef5265c..862cd9177 100644 --- a/nodepool/tests/fixtures/node_two_image.yaml +++ b/nodepool/tests/fixtures/node_two_image.yaml @@ -15,6 +15,7 @@ labels: providers: - name: fake-provider cloud: fake + driver: fake region-name: fake-region rate: 0.0001 diskimages: diff --git a/nodepool/tests/fixtures/node_two_image_remove.yaml b/nodepool/tests/fixtures/node_two_image_remove.yaml index 40d166b85..902554748 100644 --- a/nodepool/tests/fixtures/node_two_image_remove.yaml +++ b/nodepool/tests/fixtures/node_two_image_remove.yaml @@ -13,6 +13,7 @@ labels: providers: - name: fake-provider cloud: fake + driver: fake region-name: fake-region rate: 0.0001 diskimages: diff --git a/nodepool/tests/fixtures/node_two_provider.yaml b/nodepool/tests/fixtures/node_two_provider.yaml index 0225cf12d..748e4b6d5 100644 --- a/nodepool/tests/fixtures/node_two_provider.yaml +++ b/nodepool/tests/fixtures/node_two_provider.yaml @@ -13,6 +13,7 @@ labels: providers: - name: fake-provider cloud: fake + driver: fake region-name: fake-region rate: 0.0001 diskimages: @@ -26,6 +27,7 @@ providers: min-ram: 8192 - name: fake-provider2 cloud: fake + driver: fake region-name: fake-region rate: 0.0001 diskimages: diff --git a/nodepool/tests/fixtures/node_two_provider_remove.yaml b/nodepool/tests/fixtures/node_two_provider_remove.yaml index 5d5728dd4..f4887abc2 100644 --- a/nodepool/tests/fixtures/node_two_provider_remove.yaml +++ b/nodepool/tests/fixtures/node_two_provider_remove.yaml @@ -13,6 +13,7 @@ labels: providers: - name: fake-provider cloud: fake + driver: fake region-name: fake-region rate: 0.0001 diskimages: @@ -27,6 +28,7 @@ providers: - name: fake-provider2 cloud: fake + driver: fake region-name: fake-region rate: 0.0001 diff --git a/nodepool/tests/fixtures/node_unmanaged_image.yaml b/nodepool/tests/fixtures/node_unmanaged_image.yaml index 0fe55c25b..ec2bd3209 100644 --- a/nodepool/tests/fixtures/node_unmanaged_image.yaml +++ b/nodepool/tests/fixtures/node_unmanaged_image.yaml @@ -13,6 +13,7 @@ labels: providers: - name: fake-provider cloud: fake + driver: fake region-name: fake-region rate: 0.0001 cloud-images: diff --git a/nodepool/tests/fixtures/node_upload_fail.yaml b/nodepool/tests/fixtures/node_upload_fail.yaml index b29a34910..766fa6c87 100644 --- a/nodepool/tests/fixtures/node_upload_fail.yaml +++ b/nodepool/tests/fixtures/node_upload_fail.yaml @@ -13,6 +13,7 @@ labels: providers: - name: fake-provider1 cloud: fake + driver: fake region-name: fake-region rate: 0.0001 diskimages: @@ -29,6 +30,7 @@ providers: - name: fake-provider2 cloud: fake + driver: fake region-name: fake-region rate: 0.0001 diskimages: diff --git a/nodepool/tests/fixtures/node_vhd.yaml b/nodepool/tests/fixtures/node_vhd.yaml index dd75c5f46..6f71d702a 100644 --- a/nodepool/tests/fixtures/node_vhd.yaml +++ b/nodepool/tests/fixtures/node_vhd.yaml @@ -13,6 +13,7 @@ labels: providers: - name: fake-provider cloud: fake-vhd + driver: fake region-name: fake-region rate: 0.0001 diskimages: diff --git a/nodepool/tests/fixtures/node_vhd_and_qcow2.yaml b/nodepool/tests/fixtures/node_vhd_and_qcow2.yaml index 044e8ca1f..39f368ffa 100644 --- a/nodepool/tests/fixtures/node_vhd_and_qcow2.yaml +++ b/nodepool/tests/fixtures/node_vhd_and_qcow2.yaml @@ -13,6 +13,7 @@ labels: providers: - name: fake-provider1 cloud: fake-vhd + driver: fake region-name: fake-region rate: 0.0001 diskimages: @@ -27,6 +28,7 @@ providers: - name: fake-provider2 cloud: fake + driver: fake region-name: fake-region rate: 0.0001 diskimages: diff --git a/nodepool/tests/test_builder.py b/nodepool/tests/test_builder.py index c59d1c715..6547d7b0d 100644 --- a/nodepool/tests/test_builder.py +++ b/nodepool/tests/test_builder.py @@ -17,7 +17,8 @@ import os import uuid import fixtures -from nodepool import builder, exceptions, fakeprovider, tests +from nodepool import builder, exceptions, tests +from nodepool.driver.fake import provider as fakeprovider from nodepool import zk @@ -120,9 +121,6 @@ class TestNodePoolBuilder(tests.DBTestCase): self.useFixture(fixtures.MonkeyPatch( 'nodepool.driver.fake.provider.FakeProvider._getClient', get_fake_client)) - self.useFixture(fixtures.MonkeyPatch( - 'nodepool.launcher._get_one_cloud', - fakeprovider.fake_get_one_cloud)) configfile = self.setup_config('node.yaml') pool = self.useNodepool(configfile, watermark_sleep=1) diff --git a/nodepool/tests/test_commands.py b/nodepool/tests/test_commands.py index b565eb8fa..22b5c3553 100644 --- a/nodepool/tests/test_commands.py +++ b/nodepool/tests/test_commands.py @@ -91,7 +91,7 @@ class TestNodepoolCMD(tests.DBTestCase): def fail_list(self): raise RuntimeError('Fake list error') self.useFixture(fixtures.MonkeyPatch( - 'nodepool.fakeprovider.FakeOpenStackCloud.list_servers', + 'nodepool.driver.fake.provider.FakeOpenStackCloud.list_servers', fail_list)) configfile = self.setup_config("node_cmd.yaml") @@ -110,7 +110,7 @@ class TestNodepoolCMD(tests.DBTestCase): def fail_list(self): raise RuntimeError('Fake list error') self.useFixture(fixtures.MonkeyPatch( - 'nodepool.fakeprovider.FakeOpenStackCloud.list_servers', + 'nodepool.driver.fake.provider.FakeOpenStackCloud.list_servers', fail_list)) configfile = self.setup_config("node_cmd.yaml") diff --git a/nodepool/tests/test_launcher.py b/nodepool/tests/test_launcher.py index 95047f882..dd500bdc9 100644 --- a/nodepool/tests/test_launcher.py +++ b/nodepool/tests/test_launcher.py @@ -19,7 +19,6 @@ import fixtures from nodepool import tests from nodepool import zk -import nodepool.fakeprovider import nodepool.launcher diff --git a/tools/fake-dib.yaml b/tools/fake-dib.yaml index 8d95162c2..47e119551 100644 --- a/tools/fake-dib.yaml +++ b/tools/fake-dib.yaml @@ -21,6 +21,7 @@ labels: providers: - name: fake-provider + driver: fake region-name: 'fake-region' max-servers: 96 images: diff --git a/tools/fake.yaml b/tools/fake.yaml index 8a9a2786b..89d304c47 100644 --- a/tools/fake.yaml +++ b/tools/fake.yaml @@ -23,6 +23,7 @@ labels: providers: - name: fake-provider + driver: fake region-name: 'fake-region' diskimages: - name: fake-nodepool diff --git a/tools/zuul-nodepool-integration/nodepool.yaml b/tools/zuul-nodepool-integration/nodepool.yaml index ecca5653f..bac5aa568 100644 --- a/tools/zuul-nodepool-integration/nodepool.yaml +++ b/tools/zuul-nodepool-integration/nodepool.yaml @@ -22,6 +22,7 @@ labels: providers: - name: fake-provider cloud: fake + driver: fake diskimages: - name: fake-nodepool pools: