3
import distutils.dir_util
13
import charmhelpers.core.hookenv
14
import charmhelpers.fetch
15
import charmhelpers.contrib.charmsupport.nrpe
17
from charmhelpers.core.hookenv import (
24
hooks = charmhelpers.core.hookenv.Hooks()
25
log = charmhelpers.core.hookenv.log
28
###############################################################################
30
###############################################################################
31
site_name = "ci-airlines.canonical.com"
32
site_path = "/srv/{}".format(site_name)
33
log_path = "{}/logs".format(site_path)
34
site_conf_path = "/etc/apache2/sites-available/{}".format(site_name)
36
config_data = config_get()
37
ticket_manager_url = config_data.get('ticket_manager_url', '')
42
#ServerName {site_name}
44
CustomLog {log_path}/access.log combined
45
ErrorLog {log_path}/error.log
47
DocumentRoot {site_path}
50
Options FollowSymLinks
54
<Directory {site_path}>
55
Options Indexes FollowSymLinks MultiViews
62
RewriteRule ^/api/(.*) {ticket_manager_url}/$1 [P]
69
ticket_manager_url=ticket_manager_url,
72
web_uid = pwd.getpwnam('www-data')[2]
73
web_gid = grp.getgrnam('www-data')[2]
76
###############################################################################
77
# Supporting functions
78
###############################################################################
81
log("JAT: {msg}".format(msg=msg))
85
if os.path.exists(site_path):
86
shutil.rmtree(site_path)
88
os.makedirs(site_path)
90
if not os.path.exists(log_path):
93
# XXX: make these config options.
94
os.chown(site_path, web_uid, web_gid)
96
distutils.dir_util.copy_tree('files/webroot/', site_path)
97
for root, dirs, files in os.walk(site_path):
99
lambda file: os.chown(
100
os.path.join(root, file), web_uid, web_gid
105
lambda dir: os.chown(
106
os.path.join(root, dir), web_uid, web_gid
111
regex = re.compile(ur'^test.*\.html')
112
for f in os.listdir(site_path):
114
os.remove(os.path.join(site_path, f))
116
with open(os.path.join(site_path, 'config.json'), 'w') as fp:
117
config_data = config_get()
118
json.dump(config_data, fp)
125
with open(site_conf_path, 'w') as fp:
130
subprocess.call(['a2ensite', site_name])
131
subprocess.call(['a2dissite', "default"])
135
subprocess.call(['a2ensite', "default"])
136
subprocess.call(['a2dissite', site_name])
139
def website_relation_changed():
140
_log("changed relationship") # assumes there's only one for now.
141
relation_data = relation_get()
142
_log("relation_data: {}".format(relation_data))
145
def website_relation_joined():
146
_log("joined relationship") # assumes there's only one for now.
147
relation_data = relation_get()
148
_log("relation_data: {}".format(relation_data))
153
def website_relation_broken():
154
config_data = config_get()
155
_log("config_data: {}".format(config_data))
156
_log("departing relationship") # assumes there's only one for now.
161
_log("stopping webui")
166
_log("starting webui")
170
def config_changed():
178
if __name__ == "__main__":
179
hooks.execute(sys.argv)