~vds/charms/trusty/contrail-configuration/TLS_support_for_RabbitMQ_connection

« back to all changes in this revision

Viewing changes to hooks/contrail_configuration_hooks.py

  • Committer: Robert Ayres
  • Date: 2016-07-29 05:22:31 UTC
  • Revision ID: robert.ayres@canonical.com-20160729052231-93zwlaocd1457uoe
Add control-network option, fixes lp #1597791

Show diffs side-by-side

added added

removed removed

Lines of Context:
5
5
 
6
6
from apt_pkg import version_compare
7
7
import json
8
 
import urllib2
9
8
import yaml
10
9
 
11
10
from charmhelpers.contrib.openstack.utils import configure_installation_source
44
43
    CONTRAIL_VERSION,
45
44
    api_port,
46
45
    cassandra_units,
47
 
    check_url,
48
46
    contrail_floating_ip_create,
49
47
    contrail_floating_ip_deactivate,
50
48
    contrail_floating_ip_delete,
51
49
    contrail_floating_ip_use,
 
50
    control_network_ip,
52
51
    discovery_port,
53
52
    dpkg_version,
54
53
    fix_services,
57
56
    units,
58
57
    unprovision_configuration,
59
58
    unprovision_metadata,
 
59
    wait_for_contrail_api,
60
60
    write_barbican_auth_config,
61
61
    write_contrail_api_config,
62
62
    write_contrail_schema_config,
83
83
       and config_get("cassandra-ready") \
84
84
       and config_get("identity-admin-ready") \
85
85
       and config_get("zookeeper-ready"):
86
 
        api_p = api_port()
87
 
        port = str(api_p)
88
 
        try:
89
 
            # wait until api is up
90
 
            check_url("http://localhost:" + port)
91
 
        except urllib2.URLError:
92
 
            log("contrail-api service has failed to start correctly on port {}".format(port),
93
 
                "CRITICAL")
94
 
            log("This is typically due to a runtime error in related services",
95
 
                "CRITICAL")
96
 
            raise
 
86
        # wait until api is up
 
87
        wait_for_contrail_api()
 
88
 
97
89
        # provision configuration on 3.0.2.0+
98
90
        if version_compare(CONTRAIL_VERSION, "3.0.2.0-34") >= 0:
99
91
            provision_configuration()
100
92
        config["contrail-api-configured"] = True
101
93
 
102
94
        # inform relations
 
95
        settings = { "private-address": control_network_ip(),
 
96
                     "port": api_port(),
 
97
                     "vip": config.get("vip") }
103
98
        for rid in relation_ids("contrail-api"):
104
 
            relation_set(relation_id=rid, port=api_p, vip=config.get("vip"))
 
99
            relation_set(relation_id=rid, relation_settings=settings)
105
100
 
106
101
        configure_floating_ip_pools()
107
102
 
189
184
 
190
185
@hooks.hook("config-changed")
191
186
def config_changed():
192
 
    if config_get("contrail-api-configured"):
 
187
    write_config()
 
188
 
 
189
    if config.get("contrail-api-configured"):
 
190
        wait_for_contrail_api()
 
191
        configure_control_network()
193
192
        configure_floating_ip_pools()
194
 
    vip = config.get("vip")
 
193
 
 
194
    addr = control_network_ip()
 
195
    settings = { "private-address": addr, "vip": config.get("vip") }
195
196
    for rid in relation_ids("contrail-api"):
196
 
        relation_set(relation_id=rid, vip=vip)
 
197
        relation_set(relation_id=rid, relation_settings=settings)
197
198
    for rid in relation_ids("contrail-discovery"):
198
 
        relation_set(relation_id=rid, vip=vip)
 
199
        relation_set(relation_id=rid, relation_settings=settings)
 
200
    settings = { "private-address": addr }
 
201
    for rid in relation_ids("http-services"):
 
202
        relation_set(relation_id=rid, relation_settings=settings)
199
203
 
200
204
def config_get(key):
201
205
    try:
203
207
    except KeyError:
204
208
        return None
205
209
 
 
210
def configure_control_network():
 
211
    # unprovision/provision configuration on 3.0.2.0+
 
212
    if version_compare(CONTRAIL_VERSION, "3.0.2.0-34") >= 0:
 
213
        if control_network_ip() != config["provisioned-host-ip"]:
 
214
            unprovision_configuration()
 
215
            provision_configuration()
 
216
 
206
217
def configure_floating_ip_pools():
207
218
    if is_leader():
208
219
        floating_pools = config.get("floating-ip-pools")
248
259
@hooks.hook("contrail-api-relation-joined")
249
260
def contrail_api_joined():
250
261
    if config_get("contrail-api-configured"):
251
 
        relation_set(port=api_port(), vip=config.get("vip"))
 
262
        settings = { "private-address": control_network_ip(),
 
263
                     "port": api_port(),
 
264
                     "vip": config.get("vip") }
 
265
        relation_set(relation_settings=settings)
252
266
 
253
267
@hooks.hook("contrail-discovery-relation-joined")
254
268
def contrail_discovery_joined():
255
 
    relation_set(port=discovery_port(), vip=config.get("vip"))
 
269
    settings = { "private-address": control_network_ip(), 
 
270
                 "port": discovery_port(),
 
271
                 "vip": config.get("vip") }
 
272
    relation_set(relation_settings=settings)
256
273
 
257
274
@hooks.hook("contrail-ifmap-relation-joined")
258
275
def contrail_ifmap_joined():
320
337
@hooks.hook("http-services-relation-joined")
321
338
def http_services_joined():
322
339
    name = local_unit().replace("/", "-")
323
 
    addr = gethostbyname(unit_get("private-address"))
 
340
    addr = control_network_ip()
324
341
    services = [ { "service_name": "contrail-api",
325
342
                   "service_host": "0.0.0.0",
326
343
                   "service_port": 8082,
442
459
    write_nodemgr_config()
443
460
    service_restart("supervisor-config")
444
461
 
 
462
@restart_on_change({"/etc/contrail/contrail-api.conf": ["supervisor-config"],
 
463
                    "/etc/contrail/contrail-config-nodemgr.conf": ["supervisor-config"]})
 
464
def write_config():
 
465
    write_contrail_api_config()
 
466
    write_nodemgr_config()
 
467
 
445
468
@hooks.hook("zookeeper-relation-changed")
446
469
def zookeeper_changed():
447
470
    if not relation_get("port"):