
This is the first OpenStack commit for a ML2 driver for VPP. This contains the driver and a VPP agent that uses the VPP API (via the python API package) to control VPP, and the driver and agent communicate with one another via an etcd instance. This version is (loosely, subject to some tidying and getting it past the Gerrit tests) based on http://github.com/iawells/networking-vpp. Change-Id: I8909ddc56b5c49ec2ee1b25acbff21716eee70f6 Co-Authored-By: Ian Wells <iawells@cisco.com> Co-Authored-By: Naveen Joy <najoy@cisco.com> Co-Authored-By: Feng Pan <fpan@redhat.com>
111 lines
2.7 KiB
Bash
Executable File
111 lines
2.7 KiB
Bash
Executable File
#!/bin/bash
|
|
#set -o xtrace
|
|
#Author: Naveen Joy: najoy@cisco.com
|
|
#Usage: boot-vm <vm-name> <network-name> [<availability-zon>] [<fixed_ip>]
|
|
|
|
###Program Variables###
|
|
#Cirros Image:
|
|
#image=02fffc39-807f-4890-bdff-48d665cca290
|
|
#Ubuntu 14.04 Image
|
|
image=ff03d4f4-f68a-4a32-9a8e-ce3f142d8a34
|
|
flavor=2
|
|
devstack_dir=/home/demo/devstack
|
|
source $devstack_dir/openrc admin admin
|
|
key_name=demo_key
|
|
#######################
|
|
|
|
if [[ $# < 2 ]]; then
|
|
echo "Usage $0 <vm-name> <network> [<availability-zone>] [<fixed_ip>]"
|
|
echo "When fixed_ip is null, DHCP is used.."
|
|
echo "When the availability-zone is null, the default AZ=nova is used"
|
|
exit 1
|
|
fi
|
|
|
|
vm_name=${1:-}
|
|
net_name=${2:-}
|
|
az=${3:-"nova"}
|
|
fixed_ip=${4:-}
|
|
|
|
if [[ ${az} = "nova" ]] && [[ -n ${fixed_ip} ]]; then
|
|
gateway=10.0.0.101
|
|
else
|
|
gateway=10.0.0.100
|
|
fi
|
|
|
|
function make-user-data-fixed-ip() {
|
|
local -r fixed_ip=$1
|
|
local -r netmask="255.255.255.0"
|
|
local -r gateway=$2
|
|
read -r -d '' userdata << EOF
|
|
#cloud-config
|
|
bootcmd:
|
|
- ifconfig eth0 ${fixed_ip}
|
|
- ifconfig eth0 netmask ${netmask}
|
|
- route add default gw ${gateway}
|
|
- ifconfig eth0 up
|
|
|
|
users:
|
|
- default
|
|
- name: ubuntu
|
|
gecos: ubuntu
|
|
ssh_pwauth: True
|
|
|
|
chpasswd:
|
|
list: |
|
|
root:password
|
|
cloud-user:atomic
|
|
ubuntu:ubuntu
|
|
admin:ubuntu
|
|
expire: False
|
|
|
|
write_files:
|
|
- content: |
|
|
auto eth0
|
|
iface eth0 inet static
|
|
address ${fixed_ip}
|
|
netmask ${netmask}
|
|
gateway ${gateway}
|
|
dns-nameservers 171.68.226.120 171.70.168.183
|
|
dns-search cisco.com
|
|
path: /etc/network/interfaces.d/eth0.cfg
|
|
permissions: '0644'
|
|
|
|
runcmd:
|
|
- ifconfig eth0 down
|
|
- ifconfig eth0 up
|
|
EOF
|
|
}
|
|
|
|
function make-user-data() {
|
|
read -r -d '' userdata << EOF
|
|
#cloud-config
|
|
users:
|
|
- default
|
|
- name: ubuntu
|
|
gecos: ubuntu
|
|
ssh_pwauth: True
|
|
|
|
chpasswd:
|
|
list: |
|
|
root:password
|
|
cloud-user:atomic
|
|
ubuntu:ubuntu
|
|
admin:ubuntu
|
|
expire: False
|
|
EOF
|
|
}
|
|
|
|
if [[ -z "${fixed_ip}" ]]; then
|
|
echo "Booting with DHCP - VM:${vm_name}, image:${image}, flavor:${flavor}, network:${net_name}"
|
|
make-user-data
|
|
echo "${userdata}" > userdata
|
|
nova boot --image ${image} --flavor ${flavor} --nic net-name=${net_name} \
|
|
--user-data userdata --key-name ${key_name} --availability-zone ${az} ${vm_name}
|
|
else
|
|
echo "Booting with Static IP - VM:${vm_name}, IP:${fixed_ip}, image:${image}, flavor:${flavor}, network:${net_name} and AZ:${az}"
|
|
make-user-data-fixed-ip "${fixed_ip}" "${gateway}"
|
|
echo "${userdata}" > userdata
|
|
nova boot --image ${image} --flavor ${flavor} --nic net-name=${net_name},v4-fixed-ip=${fixed_ip} \
|
|
--user-data userdata --key-name ${key_name} --availability-zone ${az} ${vm_name}
|
|
fi
|