8
from charmhelpers.contrib.openstack.utils import configure_installation_source
10
from charmhelpers.core.hookenv import (
13
UnregisteredHookError,
22
from charmhelpers.core.host import (
28
from charmhelpers.fetch import (
34
from contrail_configuration_utils import (
36
write_contrail_api_config,
37
write_contrail_schema_config,
38
write_discovery_config,
43
PACKAGES = [ "ifmap-server", "contrail-config", "contrail-config-openstack",
48
@hooks.hook("amqp-relation-changed")
50
if not relation_get("password"):
51
log("Relation not ready")
55
@hooks.hook("amqp-relation-departed")
56
@hooks.hook("amqp-relation-broken")
57
@restart_on_change({"/etc/contrail/contrail-api.conf": ["contrail-api"]})
59
write_contrail_api_config()
61
@hooks.hook("amqp-relation-joined")
63
relation_set(username="contrail", vhost="contrail")
65
@hooks.hook("cassandra-relation-changed")
66
def cassandra_changed():
67
if not relation_get("port"):
68
log("Relation not ready")
72
@hooks.hook("cassandra-relation-departed")
73
@hooks.hook("cassandra-relation-broken")
74
@restart_on_change({"/etc/contrail/contrail-api.conf": ["contrail-api"],
75
"/etc/contrail/contrail-schema.conf": ["contrail-schema"],
76
"/etc/contrail/discovery.conf": ["contrail-discovery"]})
77
def cassandra_relation():
78
write_contrail_api_config()
79
write_contrail_schema_config()
80
write_discovery_config()
82
@hooks.hook("config-changed")
86
@hooks.hook("contrail-api-relation-joined")
87
def contrail_api_joined():
88
relation_set(port=8082)
90
@hooks.hook("contrail-ifmap-relation-broken")
91
@restart_on_change({"/etc/ifmap-server/basicauthusers.properties": ["ifmap-server"]})
92
def contrail_ifmap_broken():
95
@hooks.hook("contrail-ifmap-relation-departed")
96
def contrail_ifmap_departed():
97
creds = relation_get("creds", local_unit())
98
creds = json.loads(creds) if creds else {}
100
if unit not in creds:
103
relation_set(creds=json.dumps(creds))
105
service_restart("ifmap-server")
107
@hooks.hook("contrail-ifmap-relation-joined")
108
def contrail_ifmap_joined():
109
creds = relation_get("creds", local_unit())
110
creds = json.loads(creds) if creds else {}
114
creds[unit] = { "username": unit, "password": pwgen() }
115
relation_set(creds=json.dumps(creds))
117
service_restart("ifmap-server")
119
@hooks.hook("identity-admin-relation-changed")
120
def identity_admin_changed():
121
if not relation_get("service_hostname"):
122
log("Relation not ready")
124
identity_admin_relation()
126
@hooks.hook("identity-admin-relation-departed")
127
@hooks.hook("identity-admin-relation-broken")
128
@restart_on_change({"/etc/contrail/contrail-api.conf": ["contrail-api"],
129
"/etc/contrail/contrail-schema.conf": ["contrail-schema"],
130
"/etc/contrail/vnc_api_lib.ini": []})
131
def identity_admin_relation():
132
write_contrail_api_config()
133
write_contrail_schema_config()
134
write_vnc_api_config()
138
if platform.linux_distribution()[2] != "precise":
139
log("Charm only supports Precise currently", CRITICAL)
141
configure_installation_source(config("openstack-origin"))
142
configure_sources(True, "install-sources")
143
apt_upgrade(fatal=True, dist=True)
144
apt_install(PACKAGES, fatal=True)
149
hooks.execute(sys.argv)
150
except UnregisteredHookError as e:
151
log("Unknown hook {} - skipping.".format(e))
153
@hooks.hook("upgrade-charm")
156
write_contrail_api_config()
157
write_contrail_schema_config()
158
write_discovery_config()
159
for service in [ "ifmap-server", "contrail-api", "contrail-schema",
160
"contrail-discovery" ]:
161
service_restart(service)
163
@hooks.hook("zookeeper-relation-changed")
164
def zookeeper_changed():
165
if not relation_get("port"):
166
log("Relation not ready")
170
@hooks.hook("zookeeper-relation-departed")
171
@hooks.hook("zookeeper-relation-broken")
172
@restart_on_change({"/etc/contrail/contrail-api.conf": ["contrail-api"],
173
"/etc/contrail/contrail-schema.conf": ["contrail-schema"],
174
"/etc/contrail/discovery.conf": ["contrail-discovery"]})
175
def zookeeper_relation():
176
write_contrail_api_config()
177
write_contrail_schema_config()
178
write_discovery_config()
180
if __name__ == "__main__":