add ips to novaclient server manager

This exposes the ips Resource from the nova server manager which the
infra team believes will help them optimize some of their API load on
various clouds.

Change-Id: I00730dc809ae4e86d728e2ec76bfb38024d7634e
This commit is contained in:
Sean Dague 2015-04-20 19:00:27 -04:00
parent 420dc2884a
commit de4e40a754
3 changed files with 45 additions and 0 deletions

View File

@ -0,0 +1,35 @@
# 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 time
from novaclient.tests.functional import base
class TestServersAPI(base.ClientTestBase):
def test_server_ips(self):
server_name = "test_server"
initial_server = self.client.servers.create(
server_name, self.image, self.flavor)
self.addCleanup(initial_server.delete)
for x in xrange(60):
server = self.client.servers.get(initial_server)
if server.status == "ACTIVE":
break
else:
time.sleep(1)
else:
self.fail("Server %s did not go ACTIVE after 60s" % server)
ips = self.client.servers.ips(server)
self.assertIn('private', ips)

View File

@ -819,6 +819,16 @@ class ServerManager(base.BootingManagerWithFind):
"""
self._action('unshelve', server, None)
def ips(self, server):
"""
Return IP Addresses associated with the server.
Often a cheaper call then getting all the details for a server.
"""
_resp, body = self.api.client.get("/servers/%s/ips" %
base.getid(server))
return body['addresses']
def diagnostics(self, server):
"""Retrieve server diagnostics."""
return self.api.client.get("/servers/%s/diagnostics" %