1
2
from os import environ
4
5
from charmhelpers.core.templating import render
6
from charmhelpers.core.hookenv import config
11
"feature:install": ["cosc-cvpn-ovs-rest",
12
"odl-netconf-connector-all"],
14
"TRACE": ["cosc-cvpn-ovs-rest",
15
"odl-netconf-connector-all"],
20
"feature:install": ["odl-base-all", "odl-aaa-authn",
21
"odl-restconf", "odl-nsf-all",
22
"odl-adsal-northbound",
24
"odl-ovsdb-openstack",
25
"odl-ovsdb-northbound",
30
PROFILES["default"] = PROFILES["openvswitch-odl"]
9
36
ctx.update(mvn_proxy_ctx("https"))
12
40
def mvn_proxy_ctx(protocol):
42
proxy = config("{}-proxy".format(protocol))
14
43
key = protocol + "_proxy"
45
url = urlparse.urlparse(proxy)
16
47
url = urlparse.urlparse(environ[key])
17
52
hostname = url.hostname
32
67
ctx[protocol + "_noproxy"] = no_proxy
35
71
def write_mvn_config():
37
73
render("settings.xml", "/home/opendaylight/.m2/settings.xml", ctx,
38
74
"opendaylight", "opendaylight", 0400)
77
def run_odl(cmds, host="localhost", port=8101, retries=20):
78
run_cmd = ["/opt/opendaylight-karaf/bin/client", "-r", str(retries),
79
"-h", host, "-a", str(port)]
81
output = subprocess.check_output(run_cmd)
85
def installed_features():
87
out = run_odl(["feature:list"])
88
for line in out.split("\n"):
89
columns = line.split("|")
91
install_flag = columns[2].replace(" ", "")
92
if install_flag == "x":
93
installed.append(columns[0].replace(" ", ""))
97
def filter_installed(features):
98
installed = installed_features()
99
whitelist = [feature for feature in features if feature not in installed]
103
def process_odl_cmds(odl_cmds):
104
features = filter_installed(odl_cmds.get("feature:install", []))
106
run_odl(["feature:install"] + features)
107
logging = odl_cmds.get("log:set")
109
for log_level in logging.keys():
110
for target in logging[log_level]:
111
run_odl(["log:set", log_level, target])