diff options
Diffstat (limited to 'juju')
-rwxr-xr-x | juju/juju_connect.sh | 87 | ||||
-rwxr-xr-x | juju/juju_launch.sh | 1 | ||||
-rwxr-xr-x | juju/juju_setup.sh | 3 | ||||
-rw-r--r-- | juju/openo_connect.py | 108 |
4 files changed, 197 insertions, 2 deletions
diff --git a/juju/juju_connect.sh b/juju/juju_connect.sh new file mode 100755 index 0000000..0bc4ef9 --- /dev/null +++ b/juju/juju_connect.sh @@ -0,0 +1,87 @@ +#!/bin/bash +############################################################################## +# Copyright (c) 2016-2017 HUAWEI TECHNOLOGIES CO.,LTD and others. +# +# All rights reserved. This program and the accompanying materials +# are made available under the terms of the Apache License, Version 2.0 +# which accompanies this distribution, and is available at +# http://www.apache.org/licenses/LICENSE-2.0 +############################################################################## + +function connect_prepare() +{ + local cmd1="yum install -y rsync" + exec_cmd_on_openo $cmd1 + + local cmd2="if [[ ! -f /root/.ssh/id_rsa.pub ]]; then \ + sudo ssh-keygen -q -t rsa -f /root/.ssh/id_rsa -N ''; \ + fi" + exec_cmd_on_openo $cmd2 + + local openo_key=`exec_cmd_on_openo cat /root/.ssh/id_rsa.pub` + local cmd3="echo $openo_key >> /home/ubuntu/.ssh/authorized_keys" + exec_cmd_on_client $cmd3 + + local cmd4="sudo apt-get install -y default-jdk; \ + wget https://archive.apache.org/dist/tomcat/tomcat-8/v8.5.9/bin/apache-tomcat-8.5.9.tar.gz; \ + tar -zxvf apache-tomcat-8.5.9.tar.gz; \ + rm -rf tomcat8; \ + mv apache-tomcat-8.5.9 tomcat8; \ + rm -rf tomcat8/webapps/*; \ + mkdir csar" + exec_cmd_on_client $cmd4 +} + +function sync_juju_driver_file() +{ + connect_prepare + + local cmd1="docker cp nfvo-driver-vnfm-juju:/service/webapps/ROOT /home/; \ + docker cp nfvo-driver-vnfm-juju:/service/etc /home/;" + exec_cmd_on_openo $cmd1 + + scp_to_openo ${UTIL_DIR}/modify_file.sh /home + local cmd2="sed -i s/REPLACE_JUJU_DRIVER_IP/$NFVO_DRIVER_VNFM_JUJU_IP/ /home/modify_file.sh; \ + chmod +x /home/modify_file.sh; \ + /home/modify_file.sh" + exec_cmd_on_openo $cmd2 + + local cmd3="rsync -e 'ssh -o StrictHostKeyChecking=no' --rsync-path='sudo rsync' \ + -av /home/etc ubuntu@$floating_ip_client:/home/ubuntu/tomcat8/; \ + rsync -e 'ssh -o StrictHostKeyChecking=no' --rsync-path='sudo rsync' \ + -av /home/ROOT ubuntu@$floating_ip_client:/home/ubuntu/tomcat8/webapps" + exec_cmd_on_openo $cmd3 + + local cmd4="docker cp /home/etc nfvo-driver-vnfm-juju:/service/; \ + docker cp /home/ROOT nfvo-driver-vnfm-juju:/service/webapps/" + exec_cmd_on_openo $cmd4 +} + +function start_tomcat() +{ + local cmd1="mysql -uroot -p'rootpass' << EOF + GRANT ALL PRIVILEGES ON *.* TO 'root'@'%' IDENTIFIED BY 'rootpass' WITH GRANT OPTION; + FLUSH PRIVILEGES; + EOF" + + local cmd2="sed -i s/port=\"8080\"/port=\"8483\"/ /home/ubuntu/tomcat8/conf/server.xml; \ + ps aux | grep java | awk '{print \"$2\"}' | xargs kill -9; \ + /home/ubuntu/tomcat8/bin/catalina.sh start" + exec_cmd_on_client $cmd2 +} + +function add_vim_and_vnfm() +{ + python ${JUJU_DIR}/openo_connect.py $COMMON_SERVICES_MSB_IP $NFVO_DRIVER_VNFM_JUJU_IP + + local cmd3="docker stop nfvo-driver-vnfm-juju; \ + docker start nfvo-driver-vnfm-juju" + exec_cmd_on_openo $cmd3 +} + +function connect_juju_and_openo() +{ + sync_juju_driver_file + start_tomcat + add_vim_and_vnfm +} diff --git a/juju/juju_launch.sh b/juju/juju_launch.sh index 558fa5d..3653660 100755 --- a/juju/juju_launch.sh +++ b/juju/juju_launch.sh @@ -158,7 +158,6 @@ function bootstrap_juju_controller() --constraints 'mem=4G root-disk=40G' \ --verbose --debug" exec_cmd_on_client $cmd - } function launch_juju() diff --git a/juju/juju_setup.sh b/juju/juju_setup.sh index 30df1b2..d52b47f 100755 --- a/juju/juju_setup.sh +++ b/juju/juju_setup.sh @@ -89,7 +89,8 @@ function juju_prepare() ssh-keygen -q -t rsa -f /root/.ssh/id_rsa -N "" fi - openstack keypair list | grep jump-key || openstack keypair create --public-key ~/.ssh/id_rsa.pub jump-key + openstack keypair list | grep jump-key || openstack keypair create --public-key \ + /root/.ssh/id_rsa.pub jump-key openstack flavor show m1.tiny || openstack flavor create --ram 512 --disk 5 --vcpus 1 --public m1.tiny openstack flavor show m1.small || openstack flavor create --ram 1024 --disk 10 --vcpus 1 --public m1.small diff --git a/juju/openo_connect.py b/juju/openo_connect.py new file mode 100644 index 0000000..782c7cb --- /dev/null +++ b/juju/openo_connect.py @@ -0,0 +1,108 @@ +#!/usr/bin/env python +############################################################################## +# Copyright (c) 2016-2017 HUAWEI TECHNOLOGIES CO.,LTD and others. +# +# All rights reserved. This program and the accompanying materials +# are made available under the terms of the Apache License, Version 2.0 +# which accompanies this distribution, and is available at +# http://www.apache.org/licenses/LICENSE-2.0 +############################################################################## + +import sys +import os +import requests +import json + +class RaiseError(Exception): + def __init__(self, msg): + self.msg = msg + + def __str__(self): + return repr(self.msg) + +def add_common_tosca_aria(msb_ip, tosca_aria_ip): + url = 'http://' + msb_ip + '/openoapi/microservices/v1/apiRoute' + headers = {'Content-Type': 'application/json'} + data = {"serviceName":"tosca", + "version":"v1", + "url":"/openoapi/tosca/v1", + "metricsUrl":"/admin/metrics", + "apiJson":"/swagger.json", + "apiJsonType":"1", + "control":"0", + "status":"1", + "servers":[{"ip":tosca_aria_ip,"port":"8204","weight":0}]} + try: + resp = requests.post(url, data=json.dumps(data), headers=headers) + if resp.status_code not in (200,201): + raise RaiseError('add common_tosca_aria service failed') + + except Exception: + raise + +def add_openo_vim(msb_ip): + url = 'http://' + msb_ip + '/openoapi/extsys/v1/vims/' + headers = {'Content-Type': 'application/json'} + if os.getenv('OS_AUTH_URL') is None: + raise RaiseError('env OS_AUTH_URL not found') + else: + auth_url = os.getenv('OS_AUTH_URL') + data = {"name":"openstack", + "url":auth_url, + "userName":"admin", + "password":"console", + "tenant":"admin", + "domain":"", + "vendor":"openstack", + "version":"newton", + "description":"", + "type":"openstack"} + try: + resp = requests.post(url, data=json.dumps(data), headers=headers) + if resp.status_code not in (200,201): + raise RaiseError('add open-o vim failed') + + except Exception: + raise + +def add_openo_vnfm(msb_ip): + vnfm_url = 'http://' + msb_ip + '/openoapi/extsys/v1/vnfms' + vim_url = 'http://' + msb_ip + '/openoapi/extsys/v1/vims' + headers = {'Content-Type': 'application/json'} + if os.getenv('floating_ip_client') is None: + raise RaiseError('env floating_ip_client not found') + else: + juju_client_ip = os.getenv('floating_ip_client') + try: + resp = requests.get(vim_url) + if resp.status_code not in (200,201): + raise RaiseError('add open-o vnfm failed') + + vimInfo = resp.json() + vimId = vimInfo[0]['vimId'] + data = {"name":"Juju-VNFM", + "vimId":vimId, + "vendor":"jujuvnfm", + "version":"jujuvnfm", + "type":"jujuvnfm", + "description":"", + "certificateUrl":"", + "url":"http://" + juju_client_ip + ":8483", + "userName":"", + "password":""} + resp = requests.post(vnfm_url, data=json.dumps(data), headers=headers) + if resp.status_code not in (200,201): + raise RaiseError('add open-o vnfm failed') + + except Exception: + raise + +if __name__ == "__main__": + + if len(sys.argv) != 3: + raise RaiseError('input open-o ip error') + + _, msb_ip, tosca_aria_ip = sys.argv + add_common_tosca_aria(msb_ip, tosca_aria_ip) + add_openo_vim(msb_ip) + add_openo_vnfm(msb_ip) |