diff --git a/novaclient/tests/functional/api/__init__.py b/novaclient/tests/functional/api/__init__.py new file mode 100644 index 000000000..e69de29bb diff --git a/novaclient/tests/functional/api/test_servers.py b/novaclient/tests/functional/api/test_servers.py new file mode 100644 index 000000000..5615eb849 --- /dev/null +++ b/novaclient/tests/functional/api/test_servers.py @@ -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) diff --git a/novaclient/v2/servers.py b/novaclient/v2/servers.py index 624651b05..11f1a56eb 100644 --- a/novaclient/v2/servers.py +++ b/novaclient/v2/servers.py @@ -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" %