Fix get_server to work with use_direct_get

servers are different and are avoinding the underlying infrastructure.
Update the server methods to work right.

Change-Id: I1d783093084ad2bf05527980a61de95ec5a9ae31
This commit is contained in:
Monty Taylor 2018-01-31 13:59:50 -06:00
parent 76a8217117
commit 18dd726f54
No known key found for this signature in database
GPG Key ID: 7BAE94BC7141A594
1 changed files with 30 additions and 6 deletions

View File

@ -3144,9 +3144,12 @@ class OpenStackCloud(
found.
"""
searchfunc = functools.partial(self.search_servers,
detailed=detailed, bare=True,
all_projects=all_projects)
if self.use_direct_get:
searchfunc = functools.partial(self.get_server_by_id, bare=True)
else:
searchfunc = functools.partial(self.search_servers,
detailed=detailed, bare=True,
all_projects=all_projects)
server = _utils._get_entity(self, searchfunc, name_or_id, filters)
return self._expand_server(server, detailed, bare)
@ -3158,10 +3161,31 @@ class OpenStackCloud(
else:
return meta.add_server_interfaces(self, server)
def get_server_by_id(self, id):
data = self._compute_client.get('/servers/{id}'.format(id=id))
def get_server_by_id(
self, id=None, detailed=False, bare=False, all_projects=False):
"""Get a server by ID.
:param id: ID of the server.
:param detailed: Whether or not to add detailed additional information.
Defaults to False.
:param bare: Whether to skip adding any additional information to the
server record. Defaults to False, meaning the addresses
dict will be populated as needed from neutron. Setting
to True implies detailed = False.
:param all_projects: Whether to get server from all projects or just
the current auth scoped project.
:returns: A server ``munch.Munch`` or None if no matching server is
found.
"""
params = {}
if all_projects:
params['all_tenants'] = True
data = self._compute_client.get(
'/servers/{id}'.format(id=id), params=params)
server = self._get_and_munchify('server', data)
return meta.add_server_interfaces(self, self._normalize_server(server))
return self._expand_server(
self._normalize_server(server), detailed=detailed, bare=bare)
def get_server_group(self, name_or_id=None, filters=None):
"""Get a server group by name or ID.