days=days)
+@click.command()
+@click.argument('server')
+@click.option(
+ '--minutes', type=int, default=0,
+ help='Delete server if older than x minutes.')
+@click.pass_context
+def remove(ctx, server, minutes):
+ """Remove servers."""
+ os_server.remove(
+ ctx.obj['os_cloud'],
+ server_name=server,
+ minutes=minutes)
+
+
server.add_command(cleanup)
server.add_command(list)
+server.add_command(remove)
from datetime import datetime
from datetime import timedelta
+import sys
import shade
servers = cloud.list_servers()
filtered_servers = _filter_servers(servers, days)
_remove_servers_from_cloud(filtered_servers, cloud)
+
+
+def remove(os_cloud, server_name, minutes=0):
+ """Remove a server from cloud.
+
+ :arg str os_cloud: Cloud name as defined in OpenStack clouds.yaml.
+ :arg int minutes: Only delete server if it is older than number of minutes.
+ """
+ cloud = shade.openstack_cloud(cloud=os_cloud)
+ server = cloud.get_server(server_name)
+
+ if not server:
+ print("ERROR: Server not found.")
+ sys.exit(1)
+
+ if (datetime.strptime(server.created, '%Y-%m-%dT%H:%M:%SZ')
+ >= datetime.utcnow() - timedelta(minutes=minutes)):
+ print('WARN: Server "{}" is not older than {} minutes.'.format(
+ server.name, minutes))
+ else:
+ cloud.delete_server(server.name)