From ddb1118af2145f386cf769944bc7738c9e6c88ab Mon Sep 17 00:00:00 2001 From: Monty Taylor Date: Sun, 12 Oct 2014 15:13:19 -0700 Subject: [PATCH] Add delete and get server name --- shade/__init__.py | 27 +++++++++++++++++++++++++-- 1 file changed, 25 insertions(+), 2 deletions(-) diff --git a/shade/__init__.py b/shade/__init__.py index 155599aa3..1cd541b79 100644 --- a/shade/__init__.py +++ b/shade/__init__.py @@ -13,6 +13,7 @@ # limitations under the License. import logging +import time from cinderclient import exceptions as cinder_exceptions from cinderclient.v1 import client as cinder_client @@ -398,10 +399,16 @@ class OpenStackCloud(object): return v.id return None - def get_server_id(self, server_name): + def get_server_by_name(self, server_name): for server in self.nova_client.servers.list(): if server.name == server_name: - return server.id + return server + return None + + def get_server_id(self, server_name): + server = get_server_by_name(server_name) + if server: + return server.id return None def get_server_meta(self, server): @@ -409,6 +416,22 @@ class OpenStackCloud(object): groups = meta.get_groups_from_server(self, server, server_vars) return dict(server_vars=server_vars, groups=groups) + def delete_server(self, name, wait=False, timeout=180): + server_list = self.nova_client.servers.list(True, {'name': name}) + if server_list: + server = [x for x in server_list if x.name == module.params['name']] + self.nova_client.servers.delete(server.pop()) + if not wait: + return + expire = time.time() + timeout + while time.time() < expire: + server = nova.servers.list(True, {'name': name}) + if not server: + return + time.sleep(5) + raise OpenStackCloudException( + "Timed out waiting for server to get deleted.") + def list_ironic_nodes(self): return self.ironic_client.node.list()