Merge "Pull in improvements from nodepool"

This commit is contained in:
Jenkins 2015-01-26 15:38:36 +00:00 committed by Gerrit Code Review
commit c6350613bc
2 changed files with 21 additions and 17 deletions

View File

@ -556,24 +556,26 @@ class OpenStackCloud(object):
return self.get_volume(
name_or_id, cache=False, error=False) is not None
def get_server_by_id(self, server_id):
for server in self.nova_client.servers.list():
if server.id == server_id:
return server
return None
def get_server_by_name(self, server_name):
for server in self.nova_client.servers.list():
if server.name == server_name:
return server
return None
def get_server_id(self, server_name):
server = self.get_server_by_name(server_name)
def get_server_id(self, name_or_id):
server = self.get_server(name_or_id)
if server:
return server.id
return None
def _get_server_ip(self, server, **kwargs):
addrs = meta.find_nova_addresses(server.addresses, *kwargs)
if not addrs:
return None
return addrs[0]
def get_server_private_ip(self, server):
return self._get_server_ip(
server, ext_tag='fixed', key_name='private')
def get_server_public_ip(self, server):
return self._get_server_ip(
server, ext_tag='floating', key_name='public')
def get_server(self, name_or_id):
for server in self.list_servers():
if name_or_id in (server.name, server.id):

View File

@ -13,16 +13,18 @@
# limitations under the License.
def find_nova_addresses(addresses, ext_tag, key_name=None):
def find_nova_addresses(addresses, ext_tag=None, key_name=None, version=4):
ret = []
for (k, v) in addresses.iteritems():
if key_name and k == key_name:
ret.extend([addrs['addr'] for addrs in v])
ret.extend([addrs['addr'] for addrs in v
if addrs['version'] == version])
else:
for interface_spec in v:
if ('OS-EXT-IPS:type' in interface_spec
and interface_spec['OS-EXT-IPS:type'] == ext_tag):
and interface_spec['OS-EXT-IPS:type'] == ext_tag
and interface_spec['version'] == version):
ret.append(interface_spec['addr'])
return ret