This repository has been archived by the owner on Sep 23, 2020. It is now read-only.
/
common.py
91 lines (73 loc) · 2.82 KB
/
common.py
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
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
import os
import sys
import errno
import pprint
def safe_print(p_str):
try:
print(p_str)
except IOError, e:
if e.errno == errno.EPIPE:
sys.exit(0)
else:
raise
def safe_pprint(p_str):
try:
pprint.pprint(p_str)
except IOError, e:
if e.errno == errno.EPIPE:
sys.exit(0)
else:
raise
def load_cloudinitd_db(run_name):
# doing imports within function because they are not needed elsewhere
# and they are surprisingly expensive.
# (and this is generally only called once)
from cloudinitd.user_api import CloudInitD
from cloudinitd.exceptions import APIUsageException, ConfigException
vars = {}
home = os.environ['HOME']
try:
cid = CloudInitD(home + '/.cloudinitd', db_name=run_name, terminate=False, boot=False, ready=False)
except APIUsageException, e:
print "Problem loading records from cloudinit.d: %s" % str(e)
raise
svc_list = cid.get_all_services()
services = dict((svc.name, svc) for svc in svc_list)
rabbitmq = services.get('rabbitmq')
basenode = services.get('basenode')
if not rabbitmq and not basenode:
raise Exception("cloudinit.d plan has neither rabbitmq or basenode services")
if rabbitmq:
vars['rabbitmq_host'] = rabbitmq.get_attr_from_bag("rabbitmq_host")
vars['rabbitmq_username'] = rabbitmq.get_attr_from_bag("rabbitmq_username")
vars['rabbitmq_password'] = rabbitmq.get_attr_from_bag("rabbitmq_password")
try:
vars['rabbitmq_exchange'] = rabbitmq.get_attr_from_bag("rabbitmq_exchange")
except ConfigException:
vars['rabbitmq_exchange'] = None
else:
vars['rabbitmq_host'] = basenode.get_attr_from_bag("hostname")
vars['rabbitmq_username'] = basenode.get_attr_from_bag("rabbitmq_username")
vars['rabbitmq_password'] = basenode.get_attr_from_bag("rabbitmq_password")
try:
vars['rabbitmq_exchange'] = basenode.get_attr_from_bag("rabbitmq_exchange")
except ConfigException:
vars['rabbitmq_exchange'] = None
if basenode:
try:
vars['coi_services_system_name'] = basenode.get_attr_from_bag("coi_services_system_name")
except ConfigException:
vars['coi_services_system_name'] = None
try:
vars['gateway_port'] = basenode.get_attr_from_bag("gateway_port")
except ConfigException:
vars['gateway_port'] = None
try:
vars['gateway_host'] = basenode.get_attr_from_bag("hostname")
except ConfigException:
vars['gateway_host'] = None
try:
vars['dashi_sysname'] = basenode.get_attr_from_bag("dashi_sysname")
except ConfigException:
vars['dashi_sysname'] = None
return vars