Add tests for rax_clb

This commit is contained in:
Matt Martz
2015-01-15 11:38:20 -06:00
parent 788889225d
commit 7ba7e3bd69
4 changed files with 885 additions and 1 deletions

View File

@@ -1,6 +1,7 @@
#!/usr/bin/env python
import os
import re
import yaml
import argparse
@@ -11,6 +12,19 @@ except ImportError:
HAS_PYRAX = False
def rax_list_iterator(svc, *args, **kwargs):
method = kwargs.pop('method', 'list')
items = getattr(svc, method)(*args, **kwargs)
while items:
retrieved = getattr(svc, method)(*args, marker=items[-1].id, **kwargs)
if items and retrieved and items[-1].id == retrieved[0].id:
del items[-1]
items.extend(retrieved)
if len(retrieved) < 2:
break
return items
def parse_args():
parser = argparse.ArgumentParser()
parser.add_argument('-y', '--yes', action='store_true', dest='assumeyes',
@@ -53,15 +67,27 @@ def prompt_and_delete(item, prompt, assumeyes):
def delete_rax(args):
"""Function for deleting CloudServers"""
search_opts = dict(name='^%s' % args.match_re)
for region in pyrax.identity.services.compute.regions:
cs = pyrax.connect_to_cloudservers(region=region)
servers = cs.servers.list(search_opts=dict(name='^%s' % args.match_re))
servers = rax_list_iterator(cs.servers, search_opts=search_opts)
for server in servers:
prompt_and_delete(server,
'Delete matching %s? [y/n]: ' % server,
args.assumeyes)
def delete_rax_clb(args):
"""Function for deleting Cloud Load Balancers"""
for region in pyrax.identity.services.load_balancer.regions:
clb = pyrax.connect_to_cloud_loadbalancers(region=region)
for lb in rax_list_iterator(clb):
if re.search(args.match_re, lb.name):
prompt_and_delete(lb,
'Delete matching %s? [y/n]: ' % lb,
args.assumeyes)
def main():
if not HAS_PYRAX:
raise SystemExit('The pyrax python module is required for this script')
@@ -69,6 +95,7 @@ def main():
args = parse_args()
authenticate()
delete_rax(args)
delete_rax_clb(args)
if __name__ == '__main__':