Merge "Fix openstack region handling"
This commit is contained in:
@@ -147,6 +147,7 @@ class FakeOpenstackConnection:
|
||||
self.config = FakeOpenstackConfig()
|
||||
self.config.config = {}
|
||||
self.config.config['image_format'] = 'qcow2'
|
||||
self.config.config['region_name'] = 'region1'
|
||||
|
||||
def _needs_floating_ip(self, server, nat_destination):
|
||||
return self.cloud._fake_needs_floating_ip
|
||||
|
||||
@@ -43,3 +43,4 @@ secret_access_key=fake
|
||||
|
||||
[connection openstack]
|
||||
driver=openstack
|
||||
cloud=fakecloud
|
||||
|
||||
@@ -77,6 +77,11 @@ class BaseOpenstackDriverTest(ZuulTestCase):
|
||||
|
||||
|
||||
class TestOpenstackDriver(BaseOpenstackDriverTest, BaseCloudDriverTest):
|
||||
def _assertProviderNodeAttributes(self, pnode):
|
||||
super()._assertProviderNodeAttributes(pnode)
|
||||
self.assertEqual('fakecloud', pnode.cloud)
|
||||
self.assertEqual('region1', pnode.region)
|
||||
|
||||
@simple_layout('layouts/openstack/nodepool.yaml', enable_nodepool=True)
|
||||
def test_openstack_node_lifecycle(self):
|
||||
self._test_node_lifecycle('debian-normal')
|
||||
|
||||
@@ -32,8 +32,10 @@ class OpenstackConnection(BaseConnection):
|
||||
'client_config_file',
|
||||
os.getenv('OS_CLIENT_CONFIG_FILE', None))
|
||||
|
||||
if 'cloud' not in self.connection_config:
|
||||
raise Exception('The "cloud" parameter is required for '
|
||||
f'OpenStack connections in {self.connection_name}')
|
||||
self.cloud_name = self.connection_config.get('cloud')
|
||||
self.region_name = self.connection_config.get('region')
|
||||
|
||||
# Rate limit: requests/second
|
||||
self.rate = self.connection_config.get('rate', 2)
|
||||
|
||||
@@ -564,7 +564,7 @@ class OpenstackProviderEndpoint(BaseProviderEndpoint):
|
||||
def _getInstance(self, server, quota):
|
||||
return OpenstackInstance(
|
||||
self.connection.cloud_name,
|
||||
self.connection.region_name,
|
||||
self.getRegionName(),
|
||||
server, quota)
|
||||
|
||||
def _getClient(self):
|
||||
@@ -574,7 +574,7 @@ class OpenstackProviderEndpoint(BaseProviderEndpoint):
|
||||
app_name='zuul',
|
||||
)
|
||||
region = config.get_one(cloud=self.connection.cloud_name,
|
||||
region_name=self.connection.region_name)
|
||||
region_name=self.region)
|
||||
return openstack.connection.Connection(
|
||||
config=region,
|
||||
use_direct_get=False,
|
||||
@@ -584,6 +584,12 @@ class OpenstackProviderEndpoint(BaseProviderEndpoint):
|
||||
def getImageFormat(self):
|
||||
return self._client.config.config['image_format']
|
||||
|
||||
def getRegionName(self):
|
||||
# With OpenStackSDK, users can omit the region and the SDK may
|
||||
# supply a default region. This helper method will return the
|
||||
# actual region in use regardless of what the user supplied.
|
||||
return self._client.config.config['region_name']
|
||||
|
||||
def _submitApi(self, api, *args, **kw):
|
||||
return self.api_executor.submit(
|
||||
api, *args, **kw)
|
||||
|
||||
Reference in New Issue
Block a user