~robert-ayres/charms/trusty/contrail-configuration/trunk

« back to all changes in this revision

Viewing changes to hooks/contrail_configuration_utils.py

  • Committer: Robert Ayres
  • Date: 2014-09-10 14:03:02 UTC
  • Revision ID: robert.ayres@canonical.com-20140910140302-bqu0wb61an4nhgfa
Initial charm

Show diffs side-by-side

added added

removed removed

Lines of Context:
 
1
import os
 
2
 
 
3
import json
 
4
 
 
5
from charmhelpers.core.hookenv import (
 
6
    local_unit,
 
7
    related_units,
 
8
    relation_get,
 
9
    relation_ids
 
10
)
 
11
 
 
12
from charmhelpers.core.templating import render
 
13
 
 
14
def amqp_ctx():
 
15
    ctxs = [ { "rabbit_server": relation_get("hostname", unit, rid),
 
16
               "rabbit_user": "contrail",
 
17
               "rabbit_password": relation_get("password", unit, rid),
 
18
               "rabbit_vhost": "contrail" }
 
19
             for rid in relation_ids("amqp")
 
20
             for unit in related_units(rid) ]
 
21
    return ctxs[0] if ctxs else {}
 
22
 
 
23
def cassandra_ctx():
 
24
    return { "cassandra_servers": [ relation_get("private-address", unit, rid)
 
25
                                    + ":" + port
 
26
                                    for rid in relation_ids("cassandra")
 
27
                                    for unit, port in
 
28
                                    ((unit, relation_get("port", unit, rid)) for unit in related_units(rid))
 
29
                                    if port ] }
 
30
 
 
31
def contrail_ifmap_ctx():
 
32
    creds = []
 
33
    unit = local_unit()
 
34
    for rid in relation_ids("contrail-ifmap"):
 
35
        cs = relation_get("creds", unit, rid)
 
36
        if cs:
 
37
            cs = json.loads(cs)
 
38
            for c in cs.itervalues():
 
39
                creds.append(c)
 
40
    return { "ifmap_creds": creds }
 
41
 
 
42
def fix_permissions():
 
43
    os.chmod("/etc/contrail", 0755)
 
44
    os.chown("/etc/contrail", 0, 0)
 
45
 
 
46
def identity_admin_ctx():
 
47
    ctxs = [ { "auth_host": relation_get("service_hostname", unit, rid),
 
48
               "auth_port": relation_get("service_port", unit, rid),
 
49
               "admin_user": relation_get("service_username", unit, rid),
 
50
               "admin_password": relation_get("service_password", unit, rid),
 
51
               "admin_tenant_name": relation_get("service_tenant_name", unit, rid) }
 
52
             for rid in relation_ids("identity-admin")
 
53
             for unit in related_units(rid) ]
 
54
    return ctxs[0] if ctxs else {}
 
55
 
 
56
def write_contrail_api_config():
 
57
    ctx = {}
 
58
    ctx.update(cassandra_ctx())
 
59
    ctx.update(zookeeper_ctx())
 
60
    ctx.update(amqp_ctx())
 
61
    ctx.update(identity_admin_ctx())
 
62
    render("contrail-api.conf", "/etc/contrail/contrail-api.conf", ctx, "root",
 
63
           "contrail", 0440)
 
64
 
 
65
def write_contrail_schema_config():
 
66
    ctx = {}
 
67
    ctx.update(cassandra_ctx())
 
68
    ctx.update(zookeeper_ctx())
 
69
    ctx.update(identity_admin_ctx())
 
70
    render("contrail-schema.conf", "/etc/contrail/contrail-schema.conf", ctx,
 
71
           "root", "contrail", 0440)
 
72
 
 
73
def write_discovery_config():
 
74
    ctx = {}
 
75
    ctx.update(zookeeper_ctx())
 
76
    ctx.update(cassandra_ctx())
 
77
    render("discovery.conf", "/etc/contrail/discovery.conf", ctx)
 
78
 
 
79
def write_ifmap_config():
 
80
    ctx = contrail_ifmap_ctx()
 
81
    render("basicauthusers.properties",
 
82
           "/etc/ifmap-server/basicauthusers.properties", ctx, "root",
 
83
           "contrail", 0440)
 
84
 
 
85
def write_vnc_api_config():
 
86
    ctx = identity_admin_ctx()
 
87
    render("vnc_api_lib.ini", "/etc/contrail/vnc_api_lib.ini", ctx)
 
88
 
 
89
def zookeeper_ctx():
 
90
    return { "zk_servers": [ relation_get("private-address", unit, rid)
 
91
                             + ":" + port
 
92
                             for rid in relation_ids("zookeeper")
 
93
                             for unit, port in
 
94
                             ((unit, relation_get("port", unit, rid)) for unit in related_units(rid))
 
95
                             if port ] }