summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorblsaws <bryan.sullivan@att.com>2016-09-07 08:53:01 -0700
committerblsaws <bryan.sullivan@att.com>2016-09-07 08:53:01 -0700
commit7d4ee4b4e5a2cafbca4caaf13b5a7eafe0893ae8 (patch)
tree62b303825f2d249a2b906842ec212fb3d14e004c
parent70019f0c67b127e22ff17287c5fb2fa57d5c9bc0 (diff)
Further updates in testing
JIRA: MODELS-23 Change-Id: Iabbf132a2bf3b1c8f475a113b519a97c9bedcae0 Signed-off-by: blsaws <bryan.sullivan@att.com>
-rw-r--r--tests/hello-world.hot38
-rw-r--r--tests/tosca-vnfd-hello-world-tacker.yaml73
-rw-r--r--tests/utils/cloudify-setup.sh36
-rw-r--r--tests/utils/tacker-setup.sh439
4 files changed, 367 insertions, 219 deletions
diff --git a/tests/hello-world.hot b/tests/hello-world.hot
new file mode 100644
index 0000000..398bc62
--- /dev/null
+++ b/tests/hello-world.hot
@@ -0,0 +1,38 @@
+heat_template_version: 2013-05-23
+description: 'Hello World'
+parameters: {}
+resources:
+ VDU1:
+ type: OS::Nova::Server
+ properties:
+ availability_zone: nova
+ config_drive: false
+ flavor: {get_resource: VDU1_flavor}
+ image: cirros-0.3.4-x86_64-uec
+ networks:
+ - port:
+ get_resource: CP1
+ - port:
+ get_resource: CP2
+ - port:
+ get_resource: CP3
+ user_data_format: SOFTWARE_CONFIG
+ CP1:
+ type: OS::Neutron::Port
+ properties:
+ network: vnf_mgmt
+ CP2:
+ type: OS::Neutron::Port
+ properties:
+ network: vnf_private
+ CP3:
+ type: OS::Neutron::Port
+ properties:
+ network: public
+ VDU1_flavor:
+ properties: {disk: 1, ram: 512, vcpus: 1}
+ type: OS::Nova::Flavor
+outputs:
+ mgmt_ip-VDU1:
+ value:
+ get_attr: [CP1, fixed_ips, 0, ip_address]
diff --git a/tests/tosca-vnfd-hello-world-tacker.yaml b/tests/tosca-vnfd-hello-world-tacker.yaml
new file mode 100644
index 0000000..fd0a70b
--- /dev/null
+++ b/tests/tosca-vnfd-hello-world-tacker.yaml
@@ -0,0 +1,73 @@
+tosca_definitions_version: tosca_simple_profile_for_nfv_1_0_0
+
+description: Hello World
+
+metadata:
+ template_name: tosca-vnfd-hello-world
+
+topology_template:
+ node_templates:
+ VDU1:
+ type: tosca.nodes.nfv.VDU.Tacker
+ capabilities:
+ nfv_compute:
+ properties:
+ num_cpus: 1
+ mem_size: 512 MB
+ disk_size: 1 GB
+ properties:
+ image: cirros-0.3.4-x86_64-uec
+ availability_zone: nova
+ mgmt_driver: noop
+ config: |
+ param0: key1
+ param1: key2
+
+ CP1:
+ type: tosca.nodes.nfv.CP.Tacker
+ properties:
+ management: true
+ anti_spoofing_protection: false
+ requirements:
+ - virtualLink:
+ node: VL1
+ - virtualBinding:
+ node: VDU1
+
+ CP2:
+ type: tosca.nodes.nfv.CP.Tacker
+ properties:
+ anti_spoofing_protection: false
+ requirements:
+ - virtualLink:
+ node: VL2
+ - virtualBinding:
+ node: VDU1
+
+ CP3:
+ type: tosca.nodes.nfv.CP.Tacker
+ properties:
+ anti_spoofing_protection: false
+ requirements:
+ - virtualLink:
+ node: VL3
+ - virtualBinding:
+ node: VDU1
+
+ VL1:
+ type: tosca.nodes.nfv.VL
+ properties:
+ network_name: vnf_mgmt
+ vendor: Tacker
+
+ VL2:
+ type: tosca.nodes.nfv.VL
+ properties:
+ network_name: vnf_private
+ vendor: Tacker
+
+ VL3:
+ type: tosca.nodes.nfv.VL
+ properties:
+ network_name: public
+ vendor: Tacker
diff --git a/tests/utils/cloudify-setup.sh b/tests/utils/cloudify-setup.sh
index 387ccbf..baf41fa 100644
--- a/tests/utils/cloudify-setup.sh
+++ b/tests/utils/cloudify-setup.sh
@@ -131,14 +131,13 @@ EOF
;;
"clean")
source /tmp/cloudify/admin-openrc.sh
-
- id=($(neutron port-list|grep -v "+"|grep -v id|awk '{print $2}')); for id in ${id[@]}; do neutron port-delete ${id}; done
- fip=($(neutron floatingip-list|grep -v "+"|grep -v id|awk '{print $2}')); for id in ${fip[@]}; do neutron floatingip-delete ${id}; done
- sid=($(openstack server list|grep -v "+"|grep -v id|awk '{print $2}')); for id in ${sid[@]}; do openstack server delete ${id}; done
- sid=($(openstack security group list|grep security_group_local_security_group|awk '{print $2}')); for id in ${sid[@]}; do openstack security group delete ${id}; done
- sid=($(openstack router list|grep cloudify_mgmt_router|awk '{print $2}')); for id in ${sid[@]}; do openstack router delete ${id}; done
+ openstack router show vnf_mgmt_router
+ neutron router-gateway-clear vnf_mgmt_router
+ pid=($(neutron router-port-list vnf_mgmt_router|grep -v name|awk '{print $2}')); for id in ${pid[@]}; do neutron router-interface-delete vnf_mgmt_router vnf_mgmt; done
+ neutron router-delete vnf_mgmt_router
+ neutron net-delete vnf_mgmt
sudo docker stop $(sudo docker ps -a | awk "/cloudify/ { print \$1 }")
- sudo docker rm $(sudo docker ps -a | awk "/cloudify/ { print \$1 }")
+ sudo docker rm -v $(sudo docker ps -a | awk "/cloudify/ { print \$1 }")
exit 0
;;
*)
@@ -251,22 +250,22 @@ else
echo "$0: Prepare the Cloudify CLI prerequisites and data"
echo "Create management network"
- if [ $(neutron net-list | awk "/ cloudify_mgmt / { print \$2 }") ]; then
- echo "$0: cloudify_mgmt network exists"
+ if [ $(neutron net-list | awk "/ vnf_mgmt / { print \$2 }") ]; then
+ echo "$0: vnf_mgmt network exists"
else
- neutron net-create cloudify_mgmt
+ neutron net-create vnf_mgmt
echo "$0: Create management subnet"
- neutron subnet-create cloudify_mgmt 10.0.0.0/24 --name cloudify_mgmt --gateway 10.0.0.1 --enable-dhcp --allocation-pool start=10.0.0.2,end=10.0.0.254 --dns-nameserver 8.8.8.8
+ neutron subnet-create vnf_mgmt 10.0.0.0/24 --name vnf_mgmt --gateway 10.0.0.1 --enable-dhcp --allocation-pool start=10.0.0.2,end=10.0.0.254 --dns-nameserver 8.8.8.8
fi
- echo "$0: Create router for cloudify_mgmt network"
- neutron router-create cloudify_mgmt_router
+ echo "$0: Create router for vnf_mgmt network"
+ neutron router-create vnf_mgmt_router
- echo "$0: Create router gateway for cloudify_mgmt network"
- neutron router-gateway-set cloudify_mgmt_router $EXTERNAL_NETWORK_NAME
+ echo "$0: Create router gateway for vnf_mgmt network"
+ neutron router-gateway-set vnf_mgmt_router $EXTERNAL_NETWORK_NAME
- echo "$0: Add router interface for cloudify_mgmt network"
- neutron router-interface-add cloudify_mgmt_router subnet=cloudify_mgmt
+ echo "$0: Add router interface for vnf_mgmt network"
+ neutron router-interface-add vnf_mgmt_router subnet=vnf_mgmt
echo "$0: Install Cloudify OpenStack Plugin"
# pip install https://github.com/cloudify-cosmo/cloudify-openstack-plugin/archive/1.4.zip
@@ -275,7 +274,7 @@ else
git clone https://github.com/cloudify-cosmo/cloudify-openstack-plugin.git
git checkout 1.4
echo "$0: Patch plugin.yaml to reference management network"
- sed -i -- ":a;N;\$!ba;s/management_network_name:\n default: ''/management_network_name:\n default: 'cloudify_mgmt'/" /tmp/cloudify/cloudify-openstack-plugin/plugin.yaml
+ sed -i -- ":a;N;\$!ba;s/management_network_name:\n default: ''/management_network_name:\n default: 'vnf_mgmt'/" /tmp/cloudify/cloudify-openstack-plugin/plugin.yaml
cd cloudify-openstack-plugin
python setup.py build
python setup.py install
@@ -285,6 +284,7 @@ else
if [ -d "cloudify-fabric-plugin" ]; then rm -rf cloudify-fabric-plugin; fi
git clone https://github.com/cloudify-cosmo/cloudify-fabric-plugin.git
cd cloudify-fabric-plugin
+ git checkout 1.4
python setup.py build
python setup.py install
cd ..
diff --git a/tests/utils/tacker-setup.sh b/tests/utils/tacker-setup.sh
index 4e60632..078a388 100644
--- a/tests/utils/tacker-setup.sh
+++ b/tests/utils/tacker-setup.sh
@@ -90,28 +90,73 @@ function get_external_net () {
fi
}
-dist=`grep DISTRIB_ID /etc/*-release | awk -F '=' '{print $2}'`
-case "$2" in
- "init")
- # STEP 1: Create the Tacker container and launch it
- echo "$0: Copy this script to /tmp/tacker"
- mkdir /tmp/tacker
- cp $0 /tmp/tacker/.
- chmod 755 /tmp/tacker/*.sh
-
- echo "$0: Setup admin-openrc.sh"
- setenv
-
- echo "$0: Setup container"
- if [ "$dist" == "Ubuntu" ]; then
- # xenial is needed for python 3.5
- sudo docker pull ubuntu:xenial
- sudo service docker start
- sudo docker run -it -d -v /tmp/tacker/:/tmp/tacker --name tacker ubuntu:xenial /bin/bash
- else
- # Centos
- echo "Centos-based install"
- sudo tee /etc/yum.repos.d/docker.repo <<-'EOF'
+function setup_test_environment () {
+ echo "Create management network"
+ if [ $(neutron net-list | awk "/ vnf_mgmt / { print \$2 }") ]; then
+ echo "$0: vnf_mgmt network exists"
+ else
+ neutron net-create vnf_mgmt
+ echo "$0: Create management subnet"
+ neutron subnet-create vnf_mgmt 192.168.200.0/24 --name vnf_mgmt --gateway 192.168.200.1 --enable-dhcp --allocation-pool start=192.168.200.2,end=192.168.200.254 --dns-nameserver 8.8.8.8
+ fi
+
+ echo "$0: Create router for vnf_mgmt network"
+ if [ $(neutron router-list | awk "/ vnf_mgmt / { print \$2 }") ]; then
+ echo "$0: vnf_mgmt router exists"
+ else
+ neutron router-create vnf_mgmt_router
+ echo "$0: Add router interface for vnf_mgmt network"
+ neutron router-interface-add vnf_mgmt_router subnet=vnf_mgmt
+ fi
+
+ echo "Create private network"
+ if [ $(neutron net-list | awk "/ vnf_private / { print \$2 }") ]; then
+ echo "$0: vnf_private network exists"
+ else
+ neutron net-create vnf_private
+ echo "$0: Create private subnet"
+ neutron subnet-create vnf_private 192.168.201.0/24 --name vnf_private --gateway 192.168.201.1 --enable-dhcp --allocation-pool start=192.168.201.2,end=192.168.201.254 --dns-nameserver 8.8.8.8
+ fi
+
+ echo "$0: Create router for vnf_private network"
+ if [ $(neutron router-list | awk "/ vnf_private / { print \$2 }") ]; then
+ echo "$0: vnf_private router exists"
+ else
+ neutron router-create vnf_private_router
+ echo "$0: Create router gateway for vnf_private network"
+ get_external_net
+ neutron router-gateway-set vnf_private_router $EXTERNAL_NETWORK_NAME
+ echo "$0: Add router interface for vnf_private network"
+ neutron router-interface-add vnf_private_router subnet=vnf_private
+ fi
+
+ echo "$0: Create image cirros-0.3.4-x86_64-uec"
+ image=$(openstack image list | awk "/ cirros-0.3.4-x86_64-uec / { print \$2 }")
+ if [ -z $image ]; then glance --os-image-api-version 1 image-create --name cirros-0.3.4-x86_64-uec --disk-format qcow2 --location http://download.cirros-cloud.net/0.3.3/cirros-0.3.3-x86_64-disk.img --container-format bare
+ fi
+}
+
+function create_tacker_container () {
+ echo "$0: Creating docker container for Tacker installation"
+ # STEP 1: Create the Tacker container and launch it
+ echo "$0: Copy this script to /tmp/tacker"
+ mkdir /tmp/tacker
+ cp $0 /tmp/tacker/.
+ chmod 755 /tmp/tacker/*.sh
+
+ echo "$0: Setup admin-openrc.sh"
+ setenv
+
+ echo "$0: Setup container"
+ if [ "$dist" == "Ubuntu" ]; then
+ # xenial is needed for python 3.5
+ sudo docker pull ubuntu:xenial
+ sudo service docker start
+ sudo docker run -it -d -v /tmp/tacker/:/tmp/tacker --name tacker ubuntu:xenial /bin/bash
+ else
+ # Centos
+ echo "Centos-based install"
+ sudo tee /etc/yum.repos.d/docker.repo <<-'EOF'
[dockerrepo]
name=Docker Repository--parents
baseurl=https://yum.dockerproject.org/repo/main/centos/7/
@@ -119,24 +164,187 @@ enabled=1
gpgcheck=1
gpgkey=https://yum.dockerproject.org/gpg
EOF
- sudo yum install -y docker-engine
- # xenial is needed for python 3.5
- sudo docker pull ubuntu:xenial
- sudo service docker start
- sudo docker run -i -t -d -v /tmp/tacker/:/tmp/tacker --name tacker ubuntu:xenial /bin/bash
- echo $(sudo docker ps -a | awk "/tacker/ { print \$1 }")
- fi
+ sudo yum install -y docker-engine
+ # xenial is needed for python 3.5
+ sudo docker pull ubuntu:xenial
+ sudo service docker start
+ sudo docker run -i -t -d -v /tmp/tacker/:/tmp/tacker --name tacker ubuntu:xenial /bin/bash
+ echo $(sudo docker ps -a | awk "/tacker/ { print \$1 }")
+ fi
+}
+
+function install_tacker () {
+ echo "$0: Installing Tacker"
+ # STEP 2: Install Tacker in the container
+ # Per http://docs.openstack.org/developer/tacker/install/manual_installation.html
+ echo "$0: Install dependencies - OS specific"
+ if [ "$dist" == "Ubuntu" ]; then
+ apt-get update
+ apt-get install -y python
+ apt-get install -y python-dev
+ apt-get install -y python-pip
+ apt-get install -y wget
+ apt-get install -y openssh-server
+ apt-get install -y git
+ apt-get install -y apg
+ apt-get install -y libffi-dev
+ apt-get install -y libssl-dev
+ export MYSQL_PASSWORD=$(/usr/bin/apg -n 1 -m 16 -c cl_seed)
+ echo $MYSQL_PASSWORD >~/mysql
+ debconf-set-selections <<< 'mysql-server mysql-server/root_password password '$MYSQL_PASSWORD
+ debconf-set-selections <<< 'mysql-server mysql-server/root_password_again password '$MYSQL_PASSWORD
+ apt-get -q -y install mysql-server python-mysqldb
+ service mysql restart
+ fi
+
+ cd /tmp/tacker
+
+ echo "$0: create Tacker database"
+ mysql --user=root --password=$MYSQL_PASSWORD -e "CREATE DATABASE tacker; GRANT ALL PRIVILEGES ON tacker.* TO 'root@localhost' IDENTIFIED BY '"$MYSQL_PASSWORD"'; GRANT ALL PRIVILEGES ON tacker.* TO 'root'@'%' IDENTIFIED BY '"$MYSQL_PASSWORD"';"
+
+ echo "$0: Upgrage pip again - needs to be the latest version due to errors found in earlier testing"
+ pip install --upgrade pip
+
+ echo "$0: install python-openstackclient python-glanceclient"
+ pip install --upgrade python-openstackclient python-glanceclient python-neutronclient keystonemiddleware
+
+ echo "$0: Setup admin-openrc.sh"
+ source /tmp/tacker/admin-openrc.sh
+
+ echo "$0: Setup Tacker user in OpenStack"
+ service_project=$(openstack project list | awk "/service/ { print \$4 }")
+ openstack user create --project $service_project --password tacker tacker
+ openstack role add --project $service_project --user tacker admin
+
+ echo "$0: Create Tacker service in OpenStack"
+ sid=$(openstack service list | awk "/ tacker / { print \$2 }")
+ openstack service create --name tacker --description "Tacker Project" nfv-orchestration
+ sid=$(openstack service list | awk "/ tacker / { print \$2 }")
+
+ echo "$0: Create Tacker service endpoint in OpenStack"
+ ip=$(ip addr | awk "/ global eth0/ { print \$2 }" | sed -- 's/\/16//')
+ region=$(openstack endpoint list | awk "/ nova / { print \$4 }")
+ openstack endpoint create --region $region \
+ --publicurl "http://$ip:9890/" \
+ --adminurl "http://$ip:9890/" \
+ --internalurl "http://$ip:9890/" $sid
+
+ echo "$0: Clone Tacker"
+ if [[ -d /tmp/tacker/tacker ]]; then rm -rf /tmp/tacker/tacker; fi
+ git clone git://git.openstack.org/openstack/tacker
+ cd tacker
+ git checkout stable/mitaka
+
+ echo "$0: Setup Tacker"
+ pip install -r requirements.txt
+ pip install tosca-parser
+ python setup.py install
+ mkdir /var/log/tacker
+
+ # Following lines apply to master and not stable/mitaka
+ #echo "$0: install tox"
+ #pip install tox
+ #echo "$0: generate tacker.conf.sample"
+ #tox -e config-gen
+
+ echo "$0: Update tacker.conf values"
+ mkdir /usr/local/etc/tacker
+ cp etc/tacker/tacker.conf /usr/local/etc/tacker/tacker.conf
+ sed -i -- 's/# auth_strategy = keystone/auth_strategy = keystone/' /usr/local/etc/tacker/tacker.conf
+ sed -i -- 's/# debug = False/debug = True/' /usr/local/etc/tacker/tacker.conf
+ sed -i -- 's/# use_syslog = False/use_syslog = False/' /usr/local/etc/tacker/tacker.conf
+ sed -i -- 's~# state_path = /var/lib/tacker~state_path = /var/lib/tacker~' /usr/local/etc/tacker/tacker.conf
+ sed -i -- "s/project_name = service/project_name = $service_project/g" /usr/local/etc/tacker/tacker.conf
+ sed -i -- "s/password = service-password/password = tacker/" /usr/local/etc/tacker/tacker.conf
+ sed -i -- "s/username = tacker/username = tacker/" /usr/local/etc/tacker/tacker.conf
+ sed -i -- "s~auth_url = http://127.0.0.1:35357~auth_url = http://$KEYSTONE_HOST:35357~" /usr/local/etc/tacker/tacker.conf
+ sed -i -- "s~identity_uri = http://127.0.0.1:5000~# identity_uri = http://127.0.0.1:5000~" /usr/local/etc/tacker/tacker.conf
+ sed -i -- "s~auth_uri = http://127.0.0.1:5000~auth_uri = http://$KEYSTONE_HOST:5000~" /usr/local/etc/tacker/tacker.conf
+ # Not sure what the effect of the next line is, given that we are running as root
+ #sed -i -- "s~# root_helper = sudo~root_helper = sudo /usr/local/bin/tacker-rootwrap /usr/local/etc/tacker/rootwrap.conf~" /usr/local/etc/tacker/tacker.conf
+ sed -i -- "s~# connection = mysql://root:pass@127.0.0.1:3306/tacker~connection = mysql://root:$MYSQL_PASSWORD@localhost:3306/tacker?charset=utf8~" /usr/local/etc/tacker/tacker.conf
+ sed -i -- "s~heat_uri = http://localhost:8004/v1~heat_uri = http://$HEAT_HOST:8004/v1~" /usr/local/etc/tacker/tacker.conf
+ sed -i -- "s~# api_paste_config = api-paste.ini~api_paste_config = /tmp/tacker/tacker/etc/tacker/api-paste.ini~" /usr/local/etc/tacker/tacker.conf
+ sed -i -- "s/# bind_host = 0.0.0.0/bind_host = $ip/" /usr/local/etc/tacker/tacker.conf
+ sed -i -- "s/# bind_port = 8888/bind_port = 9890/" /usr/local/etc/tacker/tacker.conf
+
+ echo "$0: Populate Tacker database"
+ /usr/local/bin/tacker-db-manage --config-file /usr/local/etc/tacker/tacker.conf upgrade head
+
+ echo "$0: Install Tacker Client"
+ cd /tmp/tacker
+ if [[ -d /tmp/tacker/python-tackerclient ]]; then rm -rf /tmp/tacker/python-tackerclient; fi
+ git clone https://github.com/openstack/python-tackerclient
+ cd python-tackerclient
+ git checkout stable/mitaka
+ python setup.py install
+
+ # deferred until its determined how to get this to Horizon
+ #echo "$0: Install Tacker Horizon plugin"
+ #cd /tmp/tacker
+ #git clone https://github.com/openstack/tacker-horizon
+ #cd tacker-horizon
+ #python setup.py install
+ # The next two commands must affect the Horizon server
+ #cp openstack_dashboard_extensions/* /usr/share/openstack-dashboard/openstack_dashboard/enabled/
+ #service apache2 restart
+
+ echo "$0: Start the Tacker Server"
+ python /usr/local/bin/tacker-server --config-file /usr/local/etc/tacker/tacker.conf --log-file /var/log/tacker/tacker.log & disown
+
+ echo "$0: Wait 30 seconds for Tacker server to come online"
+ sleep 30
+
+ echo "$0: Register default VIM"
+ cd /tmp/tacker
+ cat <<EOF >vim-config.yaml
+auth_url: $OS_AUTH_URL
+username: $OS_USERNAME
+password: $OS_PASSWORD
+project_name: admin
+EOF
+
+ tacker vim-register --config-file vim-config.yaml --description OpenStack --name VIM0
+}
+
+dist=`grep DISTRIB_ID /etc/*-release | awk -F '=' '{print $2}'`
+case "$2" in
+ "init")
+ uid=$(openstack user list | awk "/ tacker / { print \$2 }")
+ if [[ $uid ]]; then
+ echo "$0: Tacker user exists, assuming Tacker service is already installed"
+ else
+ create_tacker_container
+ fi
exit 0
;;
"setup")
+ uid=$(openstack user list | awk "/ tacker / { print \$2 }")
+ if [[ $uid ]]; then
+ echo "$0: Tacker user exists, assuming Tacker service is already installed"
+ else
+ install_tacker
+ fi
+
+ echo "$0: Prepare Tacker test network environment"
+ setup_test_environment
+ exit 0
;;
"clean")
source /tmp/tacker/admin-openrc.sh
openstack endpoint delete $(openstack endpoint list | awk "/tacker/ { print \$2 }")
openstack user delete $(openstack user list | awk "/tacker/ { print \$2 }")
openstack service delete $(openstack service list | awk "/tacker/ { print \$2 }")
+ neutron router-gateway-clear vnf_mgmt_router
+ pid=($(neutron router-port-list vnf_mgmt_router|grep -v name|awk '{print $2}')); for id in ${pid[@]}; do neutron router-interface-delete vnf_mgmt_router vnf_mgmt; done
+ neutron router-delete vnf_mgmt_router
+ neutron net-delete vnf_mgmt
+ neutron router-gateway-clear vnf_private_router
+ pid=($(neutron router-port-list vnf_private_router|grep -v name|awk '{print $2}')); for id in ${pid[@]}; do neutron router-interface-delete vnf_private_router vnf_private; done
+ neutron router-delete vnf_private_router
+ neutron net-delete vnf_private
sudo docker stop $(sudo docker ps -a | awk "/tacker/ { print \$1 }")
- sudo docker rm $(sudo docker ps -a | awk "/tacker/ { print \$1 }")
+ sudo docker rm -v $(sudo docker ps -a | awk "/tacker/ { print \$1 }")
exit 0
;;
*)
@@ -146,174 +354,3 @@ EOF
echo "clean: remove Tacker service"
exit 1
esac
-
-# STEP 2: Install Tacker in the container
-# Per http://docs.openstack.org/developer/tacker/install/manual_installation.html
-echo "$0: Install dependencies - OS specific"
-if [ "$dist" == "Ubuntu" ]; then
- apt-get update
- apt-get install -y python
- apt-get install -y python-dev
- apt-get install -y python-pip
- apt-get install -y wget
- apt-get install -y openssh-server
- apt-get install -y git
- apt-get install -y apg
- apt-get install -y libffi-dev
- apt-get install -y libssl-dev
- export MYSQL_PASSWORD=$(/usr/bin/apg -n 1 -m 16 -c cl_seed)
- echo $MYSQL_PASSWORD >~/mysql
- debconf-set-selections <<< 'mysql-server mysql-server/root_password password '$MYSQL_PASSWORD
- debconf-set-selections <<< 'mysql-server mysql-server/root_password_again password '$MYSQL_PASSWORD
- apt-get -q -y install mysql-server python-mysqldb
- service mysql restart
-fi
-
-cd /tmp/tacker
-
-echo "$0: create Tacker database"
-mysql --user=root --password=$MYSQL_PASSWORD -e "CREATE DATABASE tacker; GRANT ALL PRIVILEGES ON tacker.* TO 'root@localhost' IDENTIFIED BY '"$MYSQL_PASSWORD"'; GRANT ALL PRIVILEGES ON tacker.* TO 'root'@'%' IDENTIFIED BY '"$MYSQL_PASSWORD"';"
-
-echo "$0: Upgrage pip again - needs to be the latest version due to errors found in earlier testing"
-pip install --upgrade pip
-
-echo "$0: install python-openstackclient python-glanceclient"
-pip install --upgrade python-openstackclient python-glanceclient python-neutronclient keystonemiddleware
-
-echo "$0: Setup admin-openrc.sh"
-source /tmp/tacker/admin-openrc.sh
-
-echo "$0: Setup Tacker user in OpenStack"
-openstack user create --project services --password tacker tacker
-openstack role add --project services --user tacker admin
-
-echo "$0: Create Tacker service in OpenStack"
-openstack service create --name tacker --description "Tacker Project" nfv-orchestration
-sid=$(openstack service list | awk "/ tacker / { print \$2 }")
-
-echo "$0: Create Tacker service endpoint in OpenStack"
-ip=$(ip addr | awk "/ global eth0/ { print \$2 }" | sed -- 's/\/16//')
-openstack endpoint create --region RegionOne \
- --publicurl "http://$ip:9890/" \
- --adminurl "http://$ip:9890/" \
- --internalurl "http://$ip:9890/" $sid
-
-echo "$0: Clone Tacker"
-if [[ -d /tmp/tacker/tacker ]]; then rm -rf /tmp/tacker/tacker; fi
-git clone git://git.openstack.org/openstack/tacker
-cd tacker
-git checkout stable/mitaka
-
-echo "$0: Install Tacker"
-pip install -r requirements.txt
-pip install tosca-parser
-python setup.py install
-mkdir /var/log/tacker
-
-# Following lines apply to master and not stable/mitaka
-#echo "$0: install tox"
-#pip install tox
-#echo "$0: generate tacker.conf.sample"
-#tox -e config-gen
-
-echo "$0: Update tacker.conf values"
-mkdir /usr/local/etc/tacker
-cp etc/tacker/tacker.conf /usr/local/etc/tacker/tacker.conf
-sed -i -- 's/# auth_strategy = keystone/auth_strategy = keystone/' /usr/local/etc/tacker/tacker.conf
-sed -i -- 's/# debug = False/debug = True/' /usr/local/etc/tacker/tacker.conf
-sed -i -- 's/# use_syslog = False/use_syslog = False/' /usr/local/etc/tacker/tacker.conf
-sed -i -- 's~# state_path = /var/lib/tacker~state_path = /var/lib/tacker~' /usr/local/etc/tacker/tacker.conf
-sed -i -- "s/project_name = service/project_name = services/g" /usr/local/etc/tacker/tacker.conf
-sed -i -- "s/password = service-password/password = tacker/" /usr/local/etc/tacker/tacker.conf
-sed -i -- "s/username = tacker/username = tacker/" /usr/local/etc/tacker/tacker.conf
-sed -i -- "s~auth_url = http://127.0.0.1:35357~auth_url = http://$KEYSTONE_HOST:35357~" /usr/local/etc/tacker/tacker.conf
-sed -i -- "s~identity_uri = http://127.0.0.1:5000~# identity_uri = http://127.0.0.1:5000~" /usr/local/etc/tacker/tacker.conf
-sed -i -- "s~auth_uri = http://127.0.0.1:5000~auth_uri = http://$KEYSTONE_HOST:5000~" /usr/local/etc/tacker/tacker.conf
-# Not sure what the effect of the next line is, given that we are running as root
-#sed -i -- "s~# root_helper = sudo~root_helper = sudo /usr/local/bin/tacker-rootwrap /usr/local/etc/tacker/rootwrap.conf~" /usr/local/etc/tacker/tacker.conf
-sed -i -- "s~# connection = mysql://root:pass@127.0.0.1:3306/tacker~connection = mysql://root:$MYSQL_PASSWORD@localhost:3306/tacker?charset=utf8~" /usr/local/etc/tacker/tacker.conf
-sed -i -- "s~heat_uri = http://localhost:8004/v1~heat_uri = http://$HEAT_HOST:8004/v1~" /usr/local/etc/tacker/tacker.conf
-sed -i -- "s~# api_paste_config = api-paste.ini~api_paste_config = /tmp/tacker/tacker/etc/tacker/api-paste.ini~" /usr/local/etc/tacker/tacker.conf
-sed -i -- "s/# bind_host = 0.0.0.0/bind_host = $ip/" /usr/local/etc/tacker/tacker.conf
-sed -i -- "s/# bind_port = 8888/bind_port = 9890/" /usr/local/etc/tacker/tacker.conf
-
-echo "$0: Populate Tacker database"
-/usr/local/bin/tacker-db-manage --config-file /usr/local/etc/tacker/tacker.conf upgrade head
-
-echo "$0: Install Tacker Client"
-cd /tmp/tacker
-if [[ -d /tmp/tacker/python-tackerclient ]]; then rm -rf /tmp/tacker/python-tackerclient; fi
-git clone https://github.com/openstack/python-tackerclient
-cd python-tackerclient
-git checkout stable/mitaka
-python setup.py install
-
-# deferred until its determined how to get this to Horizon
-#echo "$0: Install Tacker Horizon plugin"
-#cd /tmp/tacker
-#git clone https://github.com/openstack/tacker-horizon
-#cd tacker-horizon
-#python setup.py install
-# The next two commands must affect the Horizon server
-#cp openstack_dashboard_extensions/* /usr/share/openstack-dashboard/openstack_dashboard/enabled/
-#service apache2 restart
-
-echo "$0: Start the Tacker Server"
-python /usr/local/bin/tacker-server --config-file /usr/local/etc/tacker/tacker.conf --log-file /var/log/tacker/tacker.log & disown
-
-echo "$0: Register default VIM"
-cd /tmp/tacker
-cat <<EOF >vim-config.yaml
-auth_url: $OS_AUTH_URL
-username: $OS_USERNAME
-password: $OS_PASSWORD
-project_name: admin
-EOF
-tacker vim-register --config-file vim-config.yaml --description OpenStack --name VIM0
-
-echo "$0: Prepare Tacker test network environment"
-
-echo "Create management network"
-if [ $(neutron net-list | awk "/ tacker_mgmt / { print \$2 }") ]; then
- echo "$0: tacker_mgmt network exists"
-else
- neutron net-create tacker_mgmt
- echo "$0: Create management subnet"
- neutron subnet-create tacker_mgmt 192.168.200.0/24 --name tacker_mgmt --gateway 192.168.200.1 --enable-dhcp --allocation-pool start=192.168.200.2,end=192.168.200.254 --dns-nameserver 8.8.8.8
-fi
-
-echo "$0: Create router for cloudify_mgmt network"
-if [ $(neutron router-list | awk "/ tacker_mgmt / { print \$2 }") ]; then
- echo "$0: tacker_mgmt router exists"
-else
- neutron router-create tacker_mgmt_router
- echo "$0: Add router interface for cloudify_mgmt network"
- neutron router-interface-add tacker_mgmt_router subnet=tacker_mgmt
-fi
-
-echo "Create private network"
-if [ $(neutron net-list | awk "/ tacker_private / { print \$2 }") ]; then
- echo "$0: tacker_private network exists"
-else
- neutron net-create tacker_private
- echo "$0: Create private subnet"
- neutron subnet-create tacker_private 192.168.201.0/24 --name tacker_private --gateway 192.168.201.1 --enable-dhcp --allocation-pool start=192.168.201.2,end=192.168.201.254 --dns-nameserver 8.8.8.8
-fi
-
-echo "$0: Create router for cloudify_private network"
-if [ $(neutron router-list | awk "/ tacker_private / { print \$2 }") ]; then
- echo "$0: tacker_private router exists"
-else
- neutron router-create tacker_private_router
- echo "$0: Create router gateway for cloudify_private network"
- neutron router-gateway-set tacker_private_router $EXTERNAL_NETWORK_NAME
- echo "$0: Add router interface for cloudify_private network"
- neutron router-interface-add tacker_private_router subnet=tacker_private
-fi
-
-echo "$0: Create image cirros-0.3.4-x86_64-uec"
-image=$(openstack image list | awk "/ cirros-0.3.4-x86_64-uec / { print \$2 }")
-if [ -z $image ]; then glance --os-image-api-version 1 image-create --name cirros-0.3.4-x86_64-uec --disk-format qcow2 --location http://download.cirros-cloud.net/0.3.3/cirros-0.3.3-x86_64-disk.img --container-format bare
-fi
-
-