ansibleutil.py 1.2 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849
  1. # vim: expandtab:tabstop=4:shiftwidth=4
  2. import subprocess
  3. import sys
  4. import os
  5. import json
  6. import re
  7. class AnsibleUtil(object):
  8. def __init__(self):
  9. self.file_path = os.path.join(os.path.dirname(os.path.realpath(__file__)))
  10. self.multi_ec2_path = os.path.realpath(os.path.join(self.file_path, '..','inventory','multi_ec2.py'))
  11. def get_inventory(self):
  12. cmd = [self.multi_ec2_path]
  13. env = {}
  14. p = subprocess.Popen(cmd, stderr=subprocess.PIPE,
  15. stdout=subprocess.PIPE, env=env)
  16. out,err = p.communicate()
  17. if p.returncode != 0:
  18. raise RuntimeError(err)
  19. return json.loads(out)
  20. def get_environments(self):
  21. pattern = re.compile(r'^tag_environment_(.*)')
  22. envs = []
  23. inv = self.get_inventory()
  24. for key in inv.keys():
  25. m = pattern.match(key)
  26. if m:
  27. envs.append(m.group(1))
  28. return envs
  29. def get_security_groups(self):
  30. pattern = re.compile(r'^security_group_(.*)')
  31. groups = []
  32. inv = self.get_inventory()
  33. for key in inv.keys():
  34. m = pattern.match(key)
  35. if m:
  36. groups.append(m.group(1))
  37. return groups