diff options
-rw-r--r-- | boot/bind_zones | 1 | ||||
-rw-r--r-- | boot/bind_zones_onap | 1 | ||||
-rw-r--r-- | boot/cli_install.sh | 1 | ||||
-rw-r--r-- | boot/dcae2_install.sh | 35 | ||||
-rwxr-xr-x | boot/portal_vm_init.sh | 4 | ||||
-rw-r--r-- | docker_upgrade_scripts/README.md | 40 | ||||
-rwxr-xr-x | docker_upgrade_scripts/fabfile.py | 32 | ||||
-rw-r--r-- | docker_upgrade_scripts/onap_docker_upgrade.conf | 21 | ||||
-rwxr-xr-x | docker_upgrade_scripts/onap_docker_upgrade.py | 180 | ||||
-rw-r--r-- | vagrant/Vagrantfile | 21 | ||||
-rw-r--r--[-rwxr-xr-x] | vagrant/create_onap.sh | 10 | ||||
-rwxr-xr-x | vagrant/run_demo.sh | 5 | ||||
-rw-r--r-- | vagrant/setup_control.sh | 6 | ||||
-rwxr-xr-x | vagrant/setup_proxy.sh | 2 | ||||
-rw-r--r-- | vnfs/VESreporting_vFW5.0/README.md | 2 | ||||
-rw-r--r-- | vnfs/VESreporting_vLB5.0/README.md | 2 |
16 files changed, 324 insertions, 39 deletions
diff --git a/boot/bind_zones b/boot/bind_zones index 83b66e2f..3823aa66 100644 --- a/boot/bind_zones +++ b/boot/bind_zones @@ -141,3 +141,4 @@ mvim.api.simpledemo.openecomp.org. IN CNAME vm1.openo.simpledemo.openecomp.or vnfsdk.api.simpledemo.openecomp.org. IN CNAME vm1.openo.simpledemo.openecomp.org. vfc.api.simpledemo.openecomp.org. IN CNAME vm1.openo.simpledemo.openecomp.org. uui.api.simpledemo.openecomp.org. IN CNAME vm1.openo.simpledemo.openecomp.org. +esr.api.simpledemo.openecomp.org. IN CNAME vm1.openo.simpledemo.openecomp.org. diff --git a/boot/bind_zones_onap b/boot/bind_zones_onap index 30bc38a0..29891646 100644 --- a/boot/bind_zones_onap +++ b/boot/bind_zones_onap @@ -141,3 +141,4 @@ mvim.api.simpledemo.onap.org. IN CNAME vm1.openo.simpledemo.onap.org. vnfsdk.api.simpledemo.onap.org. IN CNAME vm1.openo.simpledemo.onap.org. vfc.api.simpledemo.onap.org. IN CNAME vm1.openo.simpledemo.onap.org. uui.api.simpledemo.onap.org. IN CNAME vm1.openo.simpledemo.onap.org. +esr.api.simpledemo.onap.org. IN CNAME vm1.openo.simpledemo.onap.org.
\ No newline at end of file diff --git a/boot/cli_install.sh b/boot/cli_install.sh index d167a1a5..c5ec4216 100644 --- a/boot/cli_install.sh +++ b/boot/cli_install.sh @@ -21,6 +21,7 @@ CLI_INSTALL_DIR=/opt/onap/cli CLI_ZIP=cli.zip CLI_BIN=/usr/bin/onap export ONAP_CLI_HOME=$CLI_INSTALL_DIR +export CLI_PRODUCT_VERSION=onap-1.1 #create install dir if [ -d $CLI_INSTALL_DIR ] diff --git a/boot/dcae2_install.sh b/boot/dcae2_install.sh index df1d513c..f6041728 100644 --- a/boot/dcae2_install.sh +++ b/boot/dcae2_install.sh @@ -24,25 +24,26 @@ fi # Some VM images don't add the private interface automatically, we have to do it during the component installation if [[ $CLOUD_ENV == "openstack_nofloat" ]] then - CIDR=$(cat /opt/config/oam_network_cidr.txt) - BITMASK=$(echo $CIDR | cut -d"/" -f2) + #CIDR=$(cat /opt/config/oam_network_cidr.txt) + #BITMASK=$(echo $CIDR | cut -d"/" -f2) # Compute the netmask based on the network cidr - if [[ $BITMASK == "8" ]] - then - NETMASK=255.0.0.0 - elif [[ $BITMASK == "16" ]] - then - NETMASK=255.255.0.0 - elif [[ $BITMASK == "24" ]] - then - NETMASK=255.255.255.0 - fi + #if [[ $BITMASK == "8" ]] + #then + # NETMASK=255.0.0.0 + #elif [[ $BITMASK == "16" ]] + #then + # NETMASK=255.255.0.0 + #elif [[ $BITMASK == "24" ]] + #then + # NETMASK=255.255.255.0 + #fi echo "auto eth1" >> /etc/network/interfaces - echo "iface eth1 inet static" >> /etc/network/interfaces - echo " address $DCAE_IP_ADDR" >> /etc/network/interfaces - echo " netmask $NETMASK" >> /etc/network/interfaces + #echo "iface eth1 inet static" >> /etc/network/interfaces + #echo " address $DCAE_IP_ADDR" >> /etc/network/interfaces + #echo " netmask $NETMASK" >> /etc/network/interfaces + echo "iface eth1 inet dhcp" >> /etc/network/interfaces echo " mtu $MTU" >> /etc/network/interfaces ifup eth1 fi @@ -59,7 +60,7 @@ curl -k $NEXUS_REPO/org.onap.demo/boot/$ARTIFACTS_VERSION/dcae2_serv.sh -o /opt/ chmod +x /opt/dcae2_vm_init.sh chmod +x /opt/dcae2_serv.sh mv /opt/dcae2_serv.sh /etc/init.d -update-rc.d dcae_serv.sh defaults +update-rc.d dcae2_serv.sh defaults # Download and install docker-engine and docker-compose echo "deb https://apt.dockerproject.org/repo ubuntu-xenial main" | sudo tee /etc/apt/sources.list.d/docker.list @@ -125,7 +126,7 @@ openstack: keypair: '$OPENSTACK_KEYNAME' key_filename: '/opt/dcae/key' location_prefix: '$ZONE' -location_domain: 'onapdevlab.onap.org' +location_domain: 'dcae.onapdevlab.onap.org' codesource_url: 'https://nexus.onap.org/service/local/repositories/raw/content' codesource_version: 'org.onap.dcaegen2.deployments/releases/scripts' EOF_CONFIG diff --git a/boot/portal_vm_init.sh b/boot/portal_vm_init.sh index d4fd88a5..7d1c5351 100755 --- a/boot/portal_vm_init.sh +++ b/boot/portal_vm_init.sh @@ -40,9 +40,9 @@ docker tag $NEXUS_DOCKER_REPO/$CLI_IMG_NAME:$CLI_DOCKER_VERSION $CLI_IMG_NAME:$P export LOGS_DIR=./logs mkdir -p $LOGS_DIR -# Export variable for subdirectory with host-specific property files +# Export variable for subdirectory with appropriate property files # The leading "./" is required for docker-compose -export PROPS_DIR=./properties_rackspace +export PROPS_DIR=./properties_simpledemo # docker-compose is not in /usr/bin /opt/docker/docker-compose down diff --git a/docker_upgrade_scripts/README.md b/docker_upgrade_scripts/README.md new file mode 100644 index 00000000..5d981587 --- /dev/null +++ b/docker_upgrade_scripts/README.md @@ -0,0 +1,40 @@ +#Docker Upgrade Scripts + +##Description +These scripts will upgrade docker images in all ONAP components + +##Setting UP + +apt-get install python-pip + +pip install Fabric + +Download all the files and modify onap_docker_upgrade.conf with correct configuration based on infrastructure endpoints + +[keystone_auth] +user = <user_name> +password = <password> +tenant = <tenant> +url = <keystone_url> + +user: User name to access the tenant +Password: Password for the user authentication +tenant: Tenant information +url: keystone endpoint URL. Currently v2.0 is only supported + +[onap] +instance_prefix = <name> + +instance_prefix: ONAP instance prefix configured in heat template or VM name + +Deployment type: 1-nic-nofloat, 1-nic-float, 2-nic +deployment_type = <type> + +deployment_type: Based on infrastructure network setup for VMs + +dcae_key_path = <key_for_dcae_component> +onap_key_path = <key_for_onap_component> + +Run python onap_docker_upgrade.py + +To run daily basis, add the script to cron job and redirect output to a log file diff --git a/docker_upgrade_scripts/fabfile.py b/docker_upgrade_scripts/fabfile.py new file mode 100755 index 00000000..72e3e61a --- /dev/null +++ b/docker_upgrade_scripts/fabfile.py @@ -0,0 +1,32 @@ +from fabric.api import * +from fabric.context_managers import * + +def uptime(): + res = run('cat /proc/uptime') + print res + +def host_type(): + run('uname -s') + +def upgrade_docker(server_name, my_env): + server_name=server_name.split("-")[1] + if server_name in "message-router": + execute_file = "/opt/mr_vm_init.sh" + elif server_name in "dcae-controller": + execute_file = "/opt/dcae2_vm_init.sh" + elif server_name in "openo-server": + execute_file = "/opt/openo_all_serv.sh" + elif server_name in "dns": + execute_file = None + else: + execute_file = "/opt/" + server_name + "_vm_init.sh" + print "Executing file %s" % execute_file + if execute_file: + with settings( warn_only=True, key_filename=my_env['key_filename'], user=my_env['user']): + sudo(execute_file) + +def health_checks_robot(my_env): + with settings( warn_only=True, key_filename=my_env['key_filename'], user=my_env['user']): + with cd('/opt'): + sudo('./ete.sh health') + diff --git a/docker_upgrade_scripts/onap_docker_upgrade.conf b/docker_upgrade_scripts/onap_docker_upgrade.conf new file mode 100644 index 00000000..9b6e527a --- /dev/null +++ b/docker_upgrade_scripts/onap_docker_upgrade.conf @@ -0,0 +1,21 @@ +[keystone_auth] +user = <user_name> +password = <password> +tenant = <tenant> +url = <keystone_url> + +[onap] +instance_prefix = vm1 + +###Deployment type: 1-nic-nofloat, 1-nic-float, 2-nic +deployment_type = 1-nic-nofloat + +###onap_net_name is required for 1-nic-float and 2-nic environments +#onap_net_name = + +dcae_key_path = <key_for_dcae_component> +onap_key_path = <key_for_onap_component> + +###Nova url is optional and useful when the cloud provider endpoints are internal +[nova] +url = <nova_url> diff --git a/docker_upgrade_scripts/onap_docker_upgrade.py b/docker_upgrade_scripts/onap_docker_upgrade.py new file mode 100755 index 00000000..c11163ad --- /dev/null +++ b/docker_upgrade_scripts/onap_docker_upgrade.py @@ -0,0 +1,180 @@ +#!/usr/bin/python + +import argparse +#import getopt +import json +import sys +import urllib2 +import ConfigParser +import time +from fabric.context_managers import settings +from fabric.api import * +from fabfile import * + + +class ReadConfFile: + + config = None + + def __init__(self, file="onap_docker_upgrade.conf"): + + """ + Method to read from conf file specific options + + :param file: + """ + self.config = ConfigParser.SafeConfigParser() + self.config.readfp(open(file)) + + def read_option(self, group, name): + """ + :return: + """ + value = self.config.get(group, name) + return value + + +def getToken(url, osuser, ostenant, ospassword): + + """ + Returns a token to the user given a tenant, + user name, password, and OpenStack API URL. + """ + url = url + '/tokens' + tokenRequest = urllib2.Request(url) + tokenRequest.add_header("Content-type", "application/json") + jsonPayload = json.dumps({'auth' : {'tenantName' : ostenant, 'passwordCredentials' : {'username' : osuser, 'password' : ospassword}}}) + + request = urllib2.urlopen(tokenRequest, jsonPayload) + json_data = json.loads(request.read()) + + request.close() + return json.dumps(json_data) + +def getServers(url, token): + """ + Returns a list of server in a given tenant + """ + url = url + '/servers' + #handler=urllib2.HTTPHandler(debuglevel=1) + #opener = urllib2.build_opener(handler) + #urllib2.install_opener(opener) + nova_server_request = urllib2.Request(url) + nova_server_request.add_header("Content-type", "application/json") + nova_server_request.add_header("X-Auth-Token", token) + request = urllib2.urlopen(nova_server_request) + json_data = json.loads(request.read()) + + request.close() + return json.dumps(json_data) + +def getServerInfo(url, token, server): + """ + Returns the server information in a given tenant + """ + url = url + '/servers/' + server + #handler=urllib2.HTTPHandler(debuglevel=1) + #opener = urllib2.build_opener(handler) + #urllib2.install_opener(opener) + nova_server_request = urllib2.Request(url) + nova_server_request.add_header("Content-type", "application/json") + nova_server_request.add_header("X-Auth-Token", token) + request = urllib2.urlopen(nova_server_request) + json_data = json.loads(request.read()) + + request.close() + return json.dumps(json_data) + +conf_file = ReadConfFile() + +#Reading keystone_auth +url=conf_file.read_option('keystone_auth', 'url') +user=conf_file.read_option('keystone_auth', 'user') +password=conf_file.read_option('keystone_auth', 'password') +tenant=conf_file.read_option('keystone_auth', 'tenant') + +#Reading onap +instance_prefix=conf_file.read_option('onap', 'instance_prefix') +deployment_type=conf_file.read_option('onap', 'deployment_type') +if deployment_type in ("1-nic-float" or "2-nic"): + onap_net_name=conf_file.read_option('onap', 'onap_net_name') +dcae_key_path=conf_file.read_option('onap', 'dcae_key_path') +onap_key_path=conf_file.read_option('onap', 'onap_key_path') + +#Reading nova +nova_url=conf_file.read_option('nova', 'url') + +# Since we return a raw JSON payload from getToken, +# we need to load it into a readable object. +adminToken = json.loads(getToken(url, user, tenant, password)) + +# Access the token portion of the JSON payload and grab the token and tenant ID +adminTokenID = adminToken['access']['token']['id'] +adminTokenTenantID = adminToken['access']['token']['tenant']['id'] + +for item in adminToken['access']['serviceCatalog']: + """ + The "name" of each OpenStack service catalog item from + the item list changed between versions. Things like + "glance" became "volume" and "keystone" became "identity". + You will need to update this based on your installation. + """ + if nova_url: + adminNovaURL = nova_url + "/" + adminTokenTenantID + elif item['name'] == "nova": + adminNovaURL = item['endpoints'][0]['adminURL'] + +print "------ Admin information ------" +print "Token ID = ", adminTokenID +print "Tenant ID = ", adminTokenTenantID +print "Nova URL = ", adminNovaURL +print "------ End Admin info ---------" + +get_nova_servers = json.loads(getServers(adminNovaURL, adminTokenID)) +#print get_nova_servers +#print get_nova_servers['servers'][0]['id'] +execute_aai1 = False +for item in get_nova_servers['servers']: + #print item['id'], item['name'] + if instance_prefix in item['name']: + print "Found matching server name: %s with id %s" % (item['name'], item['id']) + get_server_info = json.loads(getServerInfo(adminNovaURL, adminTokenID, item['id'])) + for net_info in get_server_info['server']['addresses']: + if deployment_type in ("1-nic-float" or "2-nic"): + if onap_net_name not in net_info: + server_ip = get_server_info['server']['addresses'][net_info][0]['addr'] + elif deployment_type in "1-nic-nofloat": + server_ip = get_server_info['server']['addresses'][net_info][1]['addr'] + server_name = item['name'] + if "robot" in server_name: + robot_ip = server_ip + elif "aai-inst1" in server_name: + aai1_ip = server_ip + is_aai2_executed = False + if not is_aai2_executed: + execute_aai1 = False + aai1_server_name = server_name + else: + execute_aai1 = True + elif "aai-inst2" in server_name: + aai2_ip = server_ip + is_aai2_executed = True + print "IP address of vm %s is %s" % (item['name'], server_ip) + + with settings(warnings=True, skip_bad_hosts=True): + if "dcae-controller" in server_name: + execute(upgrade_docker, server_name, hosts=server_ip, my_env={'key_filename':dcae_key_path, 'user':'ubuntu'}) + else: + if "aai-inst1" not in server_name: + execute(upgrade_docker, server_name, hosts=server_ip, my_env={'key_filename':onap_key_path, 'user':'ubuntu'}) + elif execute_aai1: + execute(upgrade_docker, server_name, hosts=server_ip, my_env={'key_filename':onap_key_path, 'user':'ubuntu'}) + else: + print "Skipping %s upgrade until aai2 finishes upgrade" % server_name + +with settings(warnings=True): + if not execute_aai1: + print "Starting %s upgrade" % aai1_ip + execute(upgrade_docker, aai1_server_name, hosts=aai1_ip, my_env={'key_filename':onap_key_path, 'user':'ubuntu'}) + time.sleep(300) + execute(health_checks_robot, hosts=robot_ip, my_env={'key_filename':onap_key_path, 'user':'ubuntu'}) diff --git a/vagrant/Vagrantfile b/vagrant/Vagrantfile index 46e1fc2f..3a100c6d 100644 --- a/vagrant/Vagrantfile +++ b/vagrant/Vagrantfile @@ -1,12 +1,10 @@ -$num_compute_nodes = 1 +$num_compute_nodes = 2 Vagrant.configure("2") do |config| config.vm.box = "bento/ubuntu-16.04" config.vm.provider :virtualbox do |vb| - vb.customize ["modifyvm", :id, "--memory", 8192] - vb.customize ["modifyvm", :id, "--cpus", 8] vb.customize ['modifyvm', :id, '--natnet1', '192.168.240.0/24'] vb.customize ["modifyvm", :id, "--nicpromisc3", "allow-all"] vb.customize "post-boot",["controlvm", :id, "setlinkstate1", "on"] @@ -20,6 +18,10 @@ Vagrant.configure("2") do |config| config.vm.network "private_network", ip: "192.168.0.10" config.vm.network "private_network", ip: "192.168.1.10" config.vm.provision "shell", path: "setup_control.sh", privileged: false + config.vm.provider :virtualbox do |vb| + vb.customize ["modifyvm", :id, "--memory", 8192] + vb.customize ["modifyvm", :id, "--cpus", 8] + end end (1 .. $num_compute_nodes).each do |n| @@ -29,7 +31,7 @@ Vagrant.configure("2") do |config| config.vm.network "private_network", ip: "192.168.1.#{n+20}" config.vm.provision "shell", path: "setup_compute.sh", privileged: false config.vm.provider :virtualbox do |v| - v.customize ["modifyvm", :id, "--memory", 81920] + v.customize ["modifyvm", :id, "--memory", 40960 ] v.customize ["modifyvm", :id, "--cpus", 8] file_to_disk1 = "large_disk_file.#{n}.vdi1" v.customize ['createhd', '--filename', file_to_disk1, '--size', 1000 * 1024] @@ -40,4 +42,15 @@ Vagrant.configure("2") do |config| end end end + + config.vm.define "onap" do |config| + config.vm.hostname = "onap" + config.vm.network "private_network", ip: "192.168.0.2" + config.vm.network "private_network", ip: "192.168.1.2" + config.vm.provision "shell", path: "create_onap.sh", privileged: false + config.vm.provider :virtualbox do |vb| + vb.customize ["modifyvm", :id, "--memory", 4096] + vb.customize ["modifyvm", :id, "--cpus", 4] + end + end end diff --git a/vagrant/create_onap.sh b/vagrant/create_onap.sh index 0b4ed572..55679ab7 100755..100644 --- a/vagrant/create_onap.sh +++ b/vagrant/create_onap.sh @@ -1,6 +1,8 @@ #!/usr/bin/env bash set -ex +sudo apt-get install -y python-openstackclient python-heatclient + source /vagrant/openrc cp /demo/heat/ONAP/* . @@ -29,13 +31,15 @@ sed -i "s,keystone_url:.*,keystone_url: http://192.168.0.10/identity/," onap_o sed -i "s/dns_list:.*/dns_list: 8.8.8.8/" onap_openstack.env sed -i "s/external_dns:.*/external_dns: 8.8.8.8/" onap_openstack.env +openstack stack delete --yes --wait ONAP || true openstack stack create -t onap_openstack.yaml -e onap_openstack.env ONAP -sleep 180 +sleep 300 +sudo sed -i "/.*simpledemo.openecomp.org.*/d" /etc/hosts vms=$(grep "_vm:" onap_openstack.yaml | cut -f1 -d"_") -sudo rm -rf /vagrant/hosts for vm in $vms do ip=$(openstack server list --name $vm -f yaml | grep Networks | cut -f2 -d",") - echo "$ip $vm.api.simpledemo.openecomp.org" >> /vagrant/hosts + echo "$ip $vm.api.simpledemo.openecomp.org" | sudo tee -a /etc/hosts done +ssh -o StrictHostKeyChecking=no ubuntu@portal.api.simpledemo.openecomp.org -i onap "curl sina.com.cn" diff --git a/vagrant/run_demo.sh b/vagrant/run_demo.sh index e99b28d7..eaccfad2 100755 --- a/vagrant/run_demo.sh +++ b/vagrant/run_demo.sh @@ -10,8 +10,3 @@ fi vagrant destroy -f vagrant up -vagrant ssh control -c "/vagrant/create_onap.sh" -sudo sed -i "/.*simpledemo.openecomp.org.*/d" /etc/hosts -cat hosts | sudo tee -a /etc/hosts -sleep 300 -ssh -o StrictHostKeyChecking=no ubuntu@portal.api.simpledemo.openecomp.org -i onap "curl sina.com.cn" diff --git a/vagrant/setup_control.sh b/vagrant/setup_control.sh index 6ff364f6..f6bfc7a1 100644 --- a/vagrant/setup_control.sh +++ b/vagrant/setup_control.sh @@ -16,9 +16,9 @@ wget https://cloud-images.ubuntu.com/releases/16.04/release/ubuntu-16.04-server- openstack image create ubuntu1404 --file ubuntu-14.04-server-cloudimg-amd64-disk1.img --disk-format qcow2 openstack image create ubuntu1604 --file ubuntu-16.04-server-cloudimg-amd64-disk1.img --disk-format qcow2 -openstack quota set admin --instances 30 -openstack quota set admin --cores 45 -openstack quota set admin --ram 61440 +openstack quota set admin --instances 32 +openstack quota set admin --cores 128 +openstack quota set admin --ram 102400 openstack flavor delete m1.large openstack flavor create --public m1.large --id auto --ram 6144 --vcpus 3 --disk 80 diff --git a/vagrant/setup_proxy.sh b/vagrant/setup_proxy.sh index da7452e6..d9ee5970 100755 --- a/vagrant/setup_proxy.sh +++ b/vagrant/setup_proxy.sh @@ -3,7 +3,7 @@ set -ex SOCKS5_IP=${SOCKS5_IP:-127.0.0.1} SOCKS5_PORT=${SOCKS5:-1080} -DNS_SERVER=${DNS_SERVER:-10.248.2.5} +DNS_SERVER=${DNS_SERVER:-10.248.2.1} sudo apt-get install -y redsocks iptables diff --git a/vnfs/VESreporting_vFW5.0/README.md b/vnfs/VESreporting_vFW5.0/README.md index ff6ba25f..598b207d 100644 --- a/vnfs/VESreporting_vFW5.0/README.md +++ b/vnfs/VESreporting_vFW5.0/README.md @@ -1,8 +1,6 @@ PROJECT DESCRIPTION -“The content of this directory is currently under development and, at this stage, is not intended for demonstration and/or testing.” - --- This project contains the source code and scripts for the periodic generation of network measurement reports. The folder contains: diff --git a/vnfs/VESreporting_vLB5.0/README.md b/vnfs/VESreporting_vLB5.0/README.md index ff6ba25f..598b207d 100644 --- a/vnfs/VESreporting_vLB5.0/README.md +++ b/vnfs/VESreporting_vLB5.0/README.md @@ -1,8 +1,6 @@ PROJECT DESCRIPTION -“The content of this directory is currently under development and, at this stage, is not intended for demonstration and/or testing.” - --- This project contains the source code and scripts for the periodic generation of network measurement reports. The folder contains: |