blob: a16a4dca97b81e72e4702e96eba7e051a55467c4 (
plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
|
# vim: expandtab:tabstop=4:shiftwidth=4
import subprocess
import sys
import os
import json
import re
class AnsibleUtil(object):
def __init__(self):
self.file_path = os.path.join(os.path.dirname(os.path.realpath(__file__)))
self.multi_ec2_path = os.path.realpath(os.path.join(self.file_path, '..','inventory','multi_ec2.py'))
def get_inventory(self):
cmd = [self.multi_ec2_path]
env = {}
p = subprocess.Popen(cmd, stderr=subprocess.PIPE,
stdout=subprocess.PIPE, env=env)
out,err = p.communicate()
if p.returncode != 0:
raise RuntimeError(err)
with open('/tmp/ans.out','w') as fd:
fd.writelines(out)
return json.loads(out.strip())
def get_environments(self):
pattern = re.compile(r'^tag_environment_(.*)')
envs = []
inv = self.get_inventory()
for key in inv.keys():
m = pattern.match(key)
if m:
envs.append(m.group(1))
return envs
def get_security_groups(self):
pattern = re.compile(r'^security_group_(.*)')
groups = []
inv = self.get_inventory()
for key in inv.keys():
m = pattern.match(key)
if m:
groups.append(m.group(1))
return groups
def get_host_address(self):
pattern = re.compile(r'^tag_Name_(.*)')
inv = self.get_inventory()
inst_names = {}
for key in inv.keys():
m = pattern.match(key)
if m: inst_names[m.group(1)] = inv[key]
return inst_names
|