Advertisement
Guest User

Untitled

a guest
May 27th, 2015
236
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 1.47 KB | None | 0 0
  1. #!/usr/bin/env python
  2.  
  3. import os
  4. import sys
  5. import keystoneclient.v2_0.client as ksclient
  6. import neutronclient.v2_0.client as nclient
  7.  
  8. def usage():
  9. print "listorphans.py <object> where object is one or more of",
  10. print "'networks', 'routers', 'subnets', 'floatingips' or 'all'"
  11.  
  12. def get_credentials():
  13. d = {}
  14. d['username'] = os.environ['OS_USERNAME']
  15. d['password'] = os.environ['OS_PASSWORD']
  16. d['auth_url'] = os.environ['OS_AUTH_URL']
  17. d['tenant_name'] = os.environ['OS_TENANT_NAME']
  18. return d
  19.  
  20. credentials = get_credentials()
  21. neutron = nclient.Client(**credentials)
  22. keystone = ksclient.Client(**credentials)
  23.  
  24. def get_orphaned_neutron_objects(object):
  25. objects = getattr(neutron, 'list_' + object)()
  26. orphans = []
  27. for object in objects.get(object):
  28. try:
  29. keystone.tenants.get(object['tenant_id'])
  30. # If the tenant ID doesn't exist, then this object is orphaned
  31. except ksclient.exceptions.NotFound:
  32. orphans.append(object['id'])
  33. return orphans
  34.  
  35. def main():
  36. if len(sys.argv) > 1:
  37. if sys.argv[1] == 'all':
  38. objects = [ 'networks', 'routers', 'subnets', 'floatingips' ]
  39. else:
  40. objects = sys.argv[1:]
  41. for object in objects:
  42. orphans = get_orphaned_neutron_objects(object)
  43. print len(orphans), 'orphan(s) found of type', object, '[%s]' % ', '.join(map(str, orphans))
  44.  
  45. else:
  46. usage()
  47. sys.exit(1)
  48.  
  49. if __name__ == '__main__':
  50. main()
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement