diff --git a/openstack/compute/v2/_proxy.py b/openstack/compute/v2/_proxy.py index fc66f3c1..49f92b8b 100644 --- a/openstack/compute/v2/_proxy.py +++ b/openstack/compute/v2/_proxy.py @@ -119,8 +119,9 @@ class Proxy(proxy.BaseProxy): def get_server(self, **data): return server.Server(data).get(self.session) - def list_servers(self): - return server.Server.list(self.session, paginated=True) + def list_servers(self, details=True): + srv = server.ServerDetail if details else server.Server + return srv.list(self.session, paginated=True) def update_server(self, **data): return server.Server(data).update(self.session) diff --git a/openstack/compute/v2/server.py b/openstack/compute/v2/server.py index 5ca7e31f..8d5f072c 100644 --- a/openstack/compute/v2/server.py +++ b/openstack/compute/v2/server.py @@ -193,3 +193,14 @@ class Server(resource.Resource): if address['OS-EXT-IPS:type'] == 'floating': result.append(address['addr']) return result + + +class ServerDetail(Server): + base_path = '/servers/detail' + + # capabilities + allow_create = False + allow_retrieve = False + allow_update = False + allow_delete = False + allow_list = True diff --git a/openstack/tests/compute/v2/test_server.py b/openstack/tests/compute/v2/test_server.py index f5c93a18..2c7f37e0 100644 --- a/openstack/tests/compute/v2/test_server.py +++ b/openstack/tests/compute/v2/test_server.py @@ -83,6 +83,18 @@ class TestServer(testtools.TestCase): self.assertEqual(EXAMPLE['updated'], sot.updated) self.assertEqual(EXAMPLE['user_id'], sot.user_id) + def test_detail(self): + sot = server.ServerDetail() + self.assertEqual('server', sot.resource_key) + self.assertEqual('servers', sot.resources_key) + self.assertEqual('/servers/detail', sot.base_path) + self.assertEqual('compute', sot.service.service_type) + self.assertFalse(sot.allow_create) + self.assertFalse(sot.allow_retrieve) + self.assertFalse(sot.allow_update) + self.assertFalse(sot.allow_delete) + self.assertTrue(sot.allow_list) + def test_change_passowrd(self): sot = server.Server(EXAMPLE)