Advertisement
Guest User

Untitled

a guest
Feb 22nd, 2016
108
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 1.64 KB | None | 0 0
  1. #!/bin/env python
  2. import re
  3. import sys
  4. from novaclient import client
  5. from tabulate import tabulate
  6.  
  7. VERSION = "2.0"
  8. USERNAME = ""
  9. PASSWORD = ""
  10. PROJECT_ID = ""
  11. AUTH_URL = ""
  12.  
  13. def create_regex(string):
  14. regex = string.replace('.', '\.')
  15. regex = regex.replace('*', '.*')
  16. regex = "^" + regex + "$"
  17. return regex
  18.  
  19. def get_server_list():
  20. nova = client.Client(VERSION, USERNAME, PASSWORD, PROJECT_ID, AUTH_URL)
  21. search_opts = {
  22. 'all_tenants': 1,
  23. 'detailed': 1
  24. }
  25. servers = nova.servers.list(search_opts=search_opts)
  26. return servers
  27.  
  28. def match_result(servers, regex):
  29. temp = []
  30. for server in servers:
  31. name = floating_ip = fixed_ip = ""
  32. name = server.name
  33. network_interfaces = next (iter (server.addresses.values()))
  34. for network_interface in network_interfaces:
  35. _type = network_interface.get('OS-EXT-IPS:type')
  36. if _type == "fixed":
  37. fixed_ip = network_interface.get('addr')
  38. if _type == "floating":
  39. floating_ip = network_interface.get('addr')
  40. if re.match(regex, name) or re.match(regex, fixed_ip) or re.match(regex, floating_ip):
  41. server_tuple = (name, fixed_ip, floating_ip)
  42. temp.append(server_tuple)
  43. return temp
  44.  
  45. def main(argv):
  46. regex = create_regex(argv[1])
  47. servers = get_server_list()
  48. matched_servers = match_result(servers, regex)
  49. header = ('Server Name', 'Fixed IP', 'Floating IP')
  50. results = tabulate(matched_servers, header, tablefmt="simple")
  51. print(results)
  52.  
  53. if __name__ == "__main__":
  54. if len(sys.argv) < 2:
  55. sys.exit("Provide some argument")
  56. main(sys.argv)
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement