summaryrefslogtreecommitdiffstats
path: root/bin/ansibleutil.py
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