Merge "ansible profile"
diff --git a/common/Dockerfile.common b/common/Dockerfile.common
deleted file mode 100644
index aedd245..0000000
--- a/common/Dockerfile.common
+++ /dev/null
@@ -1,144 +0,0 @@
-FROM ubuntu:14.04.2
-MAINTAINER Andy Bavier <acb@cs.princeton.edu>
-
-# XXX Workaround for docker bug:
-# https://github.com/docker/docker/issues/6345
-# Kernel 3.15 breaks docker, uss the line below as a workaround
-# until there is a fix
-RUN ln -s -f /bin/true /usr/bin/chfn
-# XXX End workaround
-
-# Install.
-RUN apt-get update && apt-get install -y \
- git \
- postgresql \
- python-psycopg2 \
- graphviz \
- graphviz-dev \
- libxslt1.1 \
- libxslt1-dev \
- python-pip \
- tar \
- gcc \
- python-httplib2 \
- geoip-database \
- libgeoip1 \
- wget \
- curl \
- python-dev \
- libyaml-dev \
- pkg-config \
- python-pycurl
-
-RUN pip install django==1.7
-RUN pip install djangorestframework==2.4.4
-RUN pip install markdown # Markdown support for the browseable API.
-RUN pip install pyyaml # YAML content-type support.
-RUN pip install django-filter==0.11.0 # Filtering support
-RUN pip install lxml # XML manipulation library
-RUN pip install netaddr # IP Addr library
-RUN pip install pytz
-RUN pip install django-timezones
-RUN pip install requests
-RUN pip install python-logstash
-RUN pip install django-crispy-forms
-RUN pip install django-geoposition
-RUN pip install django-extensions
-RUN pip install django-suit==0.3a1
-RUN pip install django-bitfield
-RUN pip install django-ipware
-RUN pip install django-encrypted-fields
-RUN pip install python-keyczar
-RUN pip install pygraphviz --install-option="--include-path=/usr/include/graphviz" --install-option="--library-path=/usr/lib/graphviz/"
-RUN pip install dnslib
-
-RUN DEBIAN_FRONTEND=noninteractive apt-get install -y python-keystoneclient
-RUN DEBIAN_FRONTEND=noninteractive apt-get install -y python-novaclient
-RUN DEBIAN_FRONTEND=noninteractive apt-get install -y python-neutronclient
-RUN DEBIAN_FRONTEND=noninteractive apt-get install -y python-glanceclient
-RUN DEBIAN_FRONTEND=noninteractive apt-get install -y python-ceilometerclient
-
-RUN pip install django_rest_swagger
-
-RUN DEBIAN_FRONTEND=noninteractive apt-get install -y python-setuptools
-RUN easy_install python_gflags
-RUN easy_install --upgrade httplib2
-RUN easy_install google_api_python_client
-RUN easy_install httplib2.ca_certs_locater
-
-# Install custom Ansible
-RUN DEBIAN_FRONTEND=noninteractive apt-get install -y python-crypto
-RUN DEBIAN_FRONTEND=noninteractive apt-get install -y python-yaml
-RUN DEBIAN_FRONTEND=noninteractive apt-get install -y openssh-client
-RUN DEBIAN_FRONTEND=noninteractive apt-get install -y python-paramiko
-RUN DEBIAN_FRONTEND=noninteractive apt-get install -y python-jinja2
-RUN DEBIAN_FRONTEND=noninteractive apt-get install -y python-httplib2
-RUN git clone -b release1.8.2 git://github.com/ansible/ansible.git /opt/ansible
-RUN git clone -b release1.8.2 git://github.com/ansible/ansible-modules-extras.git /opt/ansible/lib/ansible/modules/extras
-RUN git clone -b release1.8.2 git://github.com/ansible/ansible-modules-extras.git /opt/ansible/v2/ansible/modules/extras
-RUN git clone git://github.com/sb98052/ansible-modules-core.git /opt/ansible/lib/ansible/modules/core
-RUN git clone git://github.com/sb98052/ansible-modules-core.git /opt/ansible/v2/ansible/modules/core
-ADD ansible-hosts /etc/ansible/hosts
-
-ADD http://code.jquery.com/jquery-1.9.1.min.js /usr/local/lib/python2.7/dist-packages/suit/static/suit/js/
-
-# For Observer
-RUN git clone git://git.planet-lab.org/fofum.git /tmp/fofum
-RUN cd /tmp/fofum; python setup.py install
-RUN rm -rf /tmp/fofum
-
-RUN mkdir -p /usr/local/share /bin
-ADD http://phantomjs.googlecode.com/files/phantomjs-1.7.0-linux-x86_64.tar.bz2 /usr/local/share/
-RUN tar jxvf /usr/local/share/phantomjs-1.7.0-linux-x86_64.tar.bz2 -C /usr/local/share/
-RUN rm -f /usr/local/share/phantomjs-1.7.0-linux-x86_64.tar.bz2
-RUN ln -s /usr/local/share/phantomjs-1.7.0-linux-x86_64 /usr/local/share/phantomjs
-RUN ln -s /usr/local/share/phantomjs/bin/phantomjs /bin/phantomjs
-
-# Supervisor
-RUN DEBIAN_FRONTEND=noninteractive apt-get install -y supervisor
-ADD observer.conf /etc/supervisor/conf.d/
-
-# Get XOS
-ADD xos /opt/xos
-
-# Initscript is broken in Ubuntu
-#ADD observer-initscript /etc/init.d/xosobserver
-
-RUN chmod +x /opt/xos/tools/xos-manage
-RUN /opt/xos/tools/xos-manage genkeys
-
-# Workaround for AUFS issue
-# https://github.com/docker/docker/issues/783#issuecomment-56013588
-RUN mkdir /etc/ssl/private-copy; mv /etc/ssl/private/* /etc/ssl/private-copy/; rm -r /etc/ssl/private; mv /etc/ssl/private-copy /etc/ssl/private; chmod -R 0700 /etc/ssl/private; chown -R postgres /etc/ssl/private
-
-# Set postgres password to match default value in settings.py
-RUN service postgresql start; sudo -u postgres psql -c "alter user postgres with password 'password';"
-
-# Turn DEBUG on so that devel server will serve static files
-# (not necessary if --insecure is passed to 'manage.py runserver')
-# RUN sed -i 's/DEBUG = False/DEBUG = True/' /opt/xos/xos/settings.py
-
-# Cruft to workaround problems with migrations, should go away...
-RUN /opt/xos/tools/xos-manage remigrate
-
-# git clone uses cached copy, doesn't pick up latest
-RUN git -C /opt/ansible pull
-RUN git -C /opt/ansible/lib/ansible/modules/core pull
-RUN git -C /opt/ansible/v2/ansible/modules/core pull
-
-# install Tosca engine
-RUN apt-get install -y m4
-RUN pip install python-dateutil
-RUN bash /opt/xos/tosca/install_tosca.sh
-
-EXPOSE 8000
-
-# Set environment variables.
-ENV HOME /root
-
-# Define working directory.
-WORKDIR /root
-
-# Define default command.
-#CMD ["/bin/bash"]
-#CMD /opt/xos/tools/docker_start_xos
diff --git a/common/fixtures.yaml b/common/fixtures.yaml
index 198f5d2..1c07b26 100644
--- a/common/fixtures.yaml
+++ b/common/fixtures.yaml
@@ -88,7 +88,7 @@
Customize:
type: tosca.nodes.DashboardView
properties:
- url: template:customize
+ url: template:xosDashboardManager
Tenant:
type: tosca.nodes.DashboardView
diff --git a/cord-deprecated/Dockerfile.cord b/cord-deprecated/Dockerfile.cord
deleted file mode 100644
index 3e63eb2..0000000
--- a/cord-deprecated/Dockerfile.cord
+++ /dev/null
@@ -1,27 +0,0 @@
-RUN mkdir -p /root/setup
-ADD xos/configurations/common/admin-openrc.sh /root/setup/
-ADD xos/configurations/common/controller_settings /root/setup/
-ADD xos/configurations/common/flat_net_name /root/setup/
-ADD xos/configurations/common/nodes.yaml /opt/xos/configurations/commmon/
-ADD xos/configurations/common/id_rsa.pub /root/setup/padmin_public_key
-ADD xos/configurations/common/id_rsa.pub /opt/xos/synchronizers/vcpe/vcpe_public_key
-ADD xos/configurations/common/id_rsa /opt/xos/synchronizers/vcpe/vcpe_private_key
-ADD xos/configurations/common/id_rsa.pub /opt/xos/synchronizers/monitoring_channel/monitoring_channel_public_key
-ADD xos/configurations/common/id_rsa /opt/xos/synchronizers/monitoring_channel/monitoring_channel_private_key
-ADD xos/configurations/common/id_rsa.pub /opt/xos/synchronizers/onos/onos_key.pub
-ADD xos/configurations/common/id_rsa /opt/xos/synchronizers/onos/onos_key
-ADD xos/configurations/common/node_key.pub /root/setup/node_key.pub
-ADD xos/configurations/common/node_key /root/setup/node_key
-ADD xos/configurations/common/ceilometer_url /root/setup/ceilometer_url
-ADD xos/synchronizers/vcpe/supervisor/vcpe-observer.conf /etc/supervisor/conf.d/
-ADD xos/synchronizers/vbng/supervisor/vbng-observer.conf /etc/supervisor/conf.d/
-ADD xos/synchronizers/onos/supervisor/onos-observer.conf /etc/supervisor/conf.d/
-ADD xos/synchronizers/monitoring_channel/supervisor/monitoring_channel_observer.conf /etc/supervisor/conf.d/
-RUN sed -i 's/proxy_ssh=True/proxy_ssh=False/' /opt/xos/synchronizers/vcpe/vcpe_synchronizer_config
-RUN sed -i 's/proxy_ssh=True/proxy_ssh=False/' /opt/xos/synchronizers/monitoring_channel/monitoring_channel_synchronizer_config
-ADD xos/configurations/cord/virtualbng.json /root/setup/
-ADD xos/configurations/cord/vtn-network-cfg.json /root/setup/
-
-CMD /usr/bin/make -C /opt/xos/configurations/cord -f Makefile.inside; /bin/bash
-
-#CMD ["/bin/bash"]
diff --git a/cord-deprecated/Makefile b/cord-deprecated/Makefile
deleted file mode 100644
index 184f2d5..0000000
--- a/cord-deprecated/Makefile
+++ /dev/null
@@ -1,100 +0,0 @@
-SETUPDIR:=../setup
-MYIP:=$(shell hostname -i)
-
-cloudlab: common_cloudlab cord acord
-
-devstack: upgrade_pkgs common_devstack devstack_net_fix cord
-
-cord: virtualbng_json vtn_network_cfg_json
- sudo MYIP=$(MYIP) docker-compose up -d
- bash ../common/wait_for_xos.sh
- sudo MYIP=$(MYIP) docker-compose run xos python /opt/xos/tosca/run.py none /opt/xos/configurations/common/fixtures.yaml
- sudo docker-compose run xos python /opt/xos/tosca/run.py none /opt/xos/configurations/common/mydeployment.yaml
- sudo MYIP=$(MYIP) docker-compose run xos python /opt/xos/tosca/run.py padmin@vicci.org /opt/xos/configurations/common/cloudlab-openstack.yaml
- sudo MYIP=$(MYIP) docker-compose run xos python /opt/xos/tosca/run.py padmin@vicci.org /root/setup/nodes.yaml
- sudo MYIP=$(MYIP) docker-compose run xos python /opt/xos/tosca/run.py padmin@vicci.org /opt/xos/configurations/cord/cord.yaml
-
-containers:
- cd ../../../containers/xos; make devel
- cd ../../../containers/synchronizer; make
-
-common_cloudlab:
- make -C ../common -f Makefile.cloudlab
-
-common_devstack:
- make -C ../common -f Makefile.devstack
-
-acord: cloudlab_ceilometer_custom_images ceilometer_cloudlab_cord_plugins
- sudo MYIP=$(MYIP) docker-compose run xos python /opt/xos/tosca/run.py padmin@vicci.org /opt/xos/configurations/cord/ceilometer.yaml
-
-ceilometer_cloudlab_cord_plugins:
- if [ -d ./ceilometer-plugins ]; then rm -fr ./ceilometer-plugins; fi
- git clone https://github.com/srikanthvavila/ceilometer-plugins.git
- sudo cp -r ceilometer-plugins/network/ext_services /usr/lib/python2.7/dist-packages/ceilometer/network/
- sudo cp -r ceilometer-plugins/network/statistics/onos /usr/lib/python2.7/dist-packages/ceilometer/network/statistics/
- sudo cp ceilometer-plugins/network/statistics/__init__.py /usr/lib/python2.7/dist-packages/ceilometer/network/statistics/
- sudo cp ceilometer-plugins/entry_points.txt /usr/lib/python2.7/dist-packages/ceilometer-*egg-info/
- sudo cp ceilometer-plugins/pipeline.yaml /etc/ceilometer/
- echo "Restarting ceilometer-agent-notification"
- sudo service ceilometer-agent-notification restart
- echo "Restarting ceilometer-agent-central"
- sudo service ceilometer-agent-central restart
-
-ceilometer_pub_sub:
- if [ -d ./pub-sub ]; then rm -fr ./pub-sub; fi
- git clone https://github.com/srikanthvavila/pub-sub.git
- echo "Starting Ceilometer PUB/SUB service...Ensure zookeeper and kafka services are launched (if required)"
- cd pub-sub/ceilometer_pub_sub/ ; python sub_main.py &
- cd ../..
-
-virtualbng_json:
- export SETUPDIR=$(SETUPDIR); bash make-virtualbng-json.sh
-
-vtn_network_cfg_json:
- export SETUPDIR=$(SETUPDIR); bash make-vtn-networkconfig-json.sh
-
-stop:
- sudo MYIP=$(MYIP) docker-compose stop
-
-rm:
- sudo MYIP=$(MYIP) docker-compose rm
-
-showlogs:
- sudo MYIP=$(MYIP) docker-compose logs
-
-ps:
- sudo MYIP=$(MYIP) docker-compose ps
-
-dataplane: etc_hosts
- cd dataplane; ./gen-inventory.sh > hosts
- cd dataplane; ansible-playbook -i hosts dataplane.yaml
-
-dataplane_bm: dataplane
- cd dataplane; bash -c "./generate-bm.sh > hosts-bm"
- cd dataplane; sudo bash -c "ansible-playbook -i hosts-bm dataplane-bm.yaml"
-
-etc_hosts:
- sudo bash -c "sed -i '/^10.11.10/ d' /etc/hosts"
- cd dataplane; sudo bash -c "./gen-etc-hosts.sh >> /etc/hosts"
-
-setup_client:
- # add subscriber to vOLT? Is there a REST API?
- echo "Don't forget: add-subscriber-access of:0000000000000001 1 432"
- cd dataplane; ansible -i hosts client -m shell -s -a "route del default gw 10.11.10.5; dhclient br-sub"
- # reboot the vBNG ONOS
- cd dataplane; ansible -i hosts onos_vbng -m shell -s -a "docker restart ONOS"
-
-cleanup: stop rm
- cd dataplane; ./cleanup.sh
- bash -c "source ../setup/admin-openrc.sh; nova list --all-tenants; neutron net-list"
- echo "Don't forget to clean up vCPE containers"
-
-devstack_net_fix:
- sudo ../common/devstack/net-fix.sh
- sudo bash -c "source ../setup/admin-openrc.sh; neutron subnet-update private-subnet --dns-nameservers list=true 8.8.8.8 8.8.4.4"
-
-upgrade_pkgs:
- sudo pip install httpie --upgrade
-
-cloudlab_ceilometer_custom_images:
- bash -c "source ../setup/admin-openrc.sh; glance image-show ceilometer-trusty-server-multi-nic || if test -f /proj/xos-PG0/images/ceilometer-trusty-server-multi-nic.compressed.qcow2 ; then glance image-create --name ceilometer-trusty-server-multi-nic --disk-format qcow2 --file /proj/xos-PG0/images/ceilometer-trusty-server-multi-nic.compressed.qcow2 --container-format bare ; else mkdir -p /tmp/images && wget http://www.vicci.org/cord/ceilometer-trusty-server-multi-nic.compressed.qcow2 -P /tmp/images && glance image-create --name ceilometer-trusty-server-multi-nic --disk-format qcow2 --file /tmp/images/ceilometer-trusty-server-multi-nic.compressed.qcow2 --container-format bare ; fi "
diff --git a/cord-deprecated/Makefile.inside b/cord-deprecated/Makefile.inside
deleted file mode 100644
index d7bdbaf..0000000
--- a/cord-deprecated/Makefile.inside
+++ /dev/null
@@ -1,12 +0,0 @@
-all: setup_xos run_develserver
-
-setup_xos:
- bash /opt/xos/tools/docker_setup_xos
- python /opt/xos/tosca/run.py padmin@vicci.org /opt/xos/configurations/common/fixtures.yaml
- python /opt/xos/tosca/run.py padmin@vicci.org /opt/xos/configurations/common/base.yaml
- python /opt/xos/tosca/run.py padmin@vicci.org /opt/xos/configurations/common/nodes.yaml
- python /opt/xos/tosca/run.py padmin@vicci.org /opt/xos/configurations/cord/cord.yaml
- python /opt/xos/tosca/run.py padmin@vicci.org /opt/xos/configurations/cord/ceilometer.yaml
-
-run_develserver:
- cd /opt/xos; python manage.py runserver 0.0.0.0:8000 --insecure
diff --git a/cord-deprecated/README-VTN.md b/cord-deprecated/README-VTN.md
deleted file mode 100644
index a3c4e69..0000000
--- a/cord-deprecated/README-VTN.md
+++ /dev/null
@@ -1,156 +0,0 @@
-# vtn notes:
-
-see also: https://github.com/hyunsun/documentations/wiki/Neutron-ONOS-Integration-for-CORD-VTN#onos-setup
-
-VTN doesn't seem to like cloudlab's networks (flat-net-1, ext-net, etc). I've placed a script in xos/scripts/ called destroy-all-networks.sh that will automate tearing down all of cloudlab's neutron networks.
-
- cd xos/tools
- ./destroy-all-networks.sh
-
-inside the xos container, update the configuration. Make sure to restart Openstack Synchronizer afterward. Might be a good idea to restart the XOS UI as well:
-
- python /opt/xos/tosca/run.py padmin@vicci.org /opt/xos/tosca/samples/vtn.yaml
- emacs /opt/xos/xos_configuration/xos_common_config
- [networking]
- use_vtn=True
- supervisorctl restart observer
-
-### ctl node:
-
- # set ONOS_VTN_HOSTNAME to the host where the VTN container was installed
- ONOS_VTN_HOSTNAME="cp-2.smbaker-xos5.xos-pg0.clemson.cloudlab.us"
- apt-get -y install python-pip
- pip install -U setuptools pip
- pip install testrepository
- git clone https://github.com/openstack/networking-onos.git
- cd networking-onos
- python setup.py install
- # the above fails the first time with an error about pbr.json
- # I ran it again and it succeeded, but I am skeptical there's
- # not still an issue lurking...
- cat > /usr/local/etc/neutron/plugins/ml2/conf_onos.ini <<EOF
- [onos]
- url_path = http://$ONOS_VTN_HOSTNAME:8181/onos/cordvtn
- username = karaf
- password = karaf
- EOF
- emacs /etc/neutron/plugins/ml2/ml2_conf.ini
- update settings as per vtn docs ([ml2] and [ml2_type_vxlan] sections)
- systemctl stop neutron-server
- # I started neutron manually to make sure it's using exactly the right config
- # files. Maybe it can be restarted using systemctl instead...
- /usr/bin/neutron-server --config-file /etc/neutron/neutron.conf --config-file /etc/neutron/plugins/ml2/ml2_conf.ini --config-file /usr/local/etc/neutron/plugins/ml2/conf_onos.ini
-
-### Compute nodes and nm nodes:
-
- cd xos/configurations/cord/dataplane
- ./generate-bm.sh > hosts-bm
- ansible-playbook -i hosts-bm dataplane-vtn.yaml
- # the playbook will:
- # 1) turn off neutron openvswitch-agent
- # 2) set openvswitch to listen on port 6641
- # 3) restart openvswitch
- # 4) delete any existing br-int bridge
- # 5) [nm only] turn off neutron-dhcp-agent
-
-Additional compute node stuff:
-
-I've been deleting any existing unused bridges. Not sure if it's necesary.
-
- ovs-vsctl del-br br-tun
- ovs-vsctl del-br br-flat-lan-1
-
-To get the management network working, we need to create management network template, slice, and network. configurations/cord/vtn.yaml will do this for you. Then add a connection to the management network for any slice that needs management connectivity.
-
-### Notes:
-* I've configured the OpenvSwitch switches to use port 6641 instead of port 6640. This is because the VTN app listens on 6640
-itself, and since we're running it in docker 'host' networking mode now, it would conflict with an Openvswitch that was
-also listening on 6640.
-* Adding use_vtn=True to the [networking] section in the XOS config file has two effects: 1) it sets the gateway in sync_controller_networks, and 2) it disables automatic creation of nat-net for new slices. This is because VTN will fail if there is no gateway on a network, and because we don't have nat-net under the VTN configuration.
-* When using of-vfctl to look at flow rules, if you get a protocol error, try "ovs-ofctl show -O OpenFlow13 br-int "
-* Note that the VTN Synchronizer isn't started automatically. It's only use for inter-Service connectivity, so no need to mess with it until intra-Slice connectivity is working first.
-* Note that the VTN Synchronizer won't connect non-access networks. Any network templates you want VTN to connect must have Access set to "Direct" or "Indirect".
-
-In case management network isn't working, you can use a VNC tunnel, like this:
-
- # on compute node, run the following and note the IP address and port number
- virsh vncdisplay <instance-id>
-
- # from home
- ssh -o "GatewayPorts yes" -L <port+5900>:<IP>:<port+5900> <username>@<compute_node_hostname>
-
- # example
- ssh -o "GatewayPorts yes" -L 5901:192.168.0.7:5901 smbaker@cp-1.smbaker-xos3.xos-pg0.clemson.cloudlab.us
-
-Then open a VNC session to the local port on your local machine. You'll have a console on the Instance. The username is "Ubuntu" and the password can be obtained from your cloudlab experiment description
-
-### Things that can be tested:
-
-* Create an Instance, it should have a Private network, and there should be a tap attached from the instance to br-int
-* Two Instances in the same Slice can talk to one another. They can be on the same machine or different machines.
-* Two Slices can talk to one another if the slices are associated with Services and those Services have a Tenancy relationship between them. Note that 1) The VTN Synchronizer must be running, 2) There must be a Private network with Access=[Direct|Indirect], and 3) The connectivity is unidirectional, from subscriber service to provider service.
-
-### Testing service composition
-
-1. Change the private network template's 'Access' field from None to Direct
-2. Create a Service, Service-A
-3. Enter Slice Admin for Slice-1 and assign it to Service-A
-4. Create a Service, Service-B
-5. Enter Slice Admin for Slice-2 and assign it to Service-B
-6. Enter Service Admin for Service-B, Go to Tenancy Tab
-7. In the 'Provided Tenants' section of Service-B, create a Tenant with Subsciber-Service=Serivce-A.
-8. Start the VTN Observer. It will send a REST request to VTN app.
-9. Launch tcpdump in one of Slice-2's instances
-10. From Slice-1, start pinging the instance in Slice-2 where you launched tcpdump
-11. You should see the pings arrive and responses sent out. Note that the ping responses will not reach Slice-1, since VTN traffic is unidirectional.
-12. Delete the Tenancy relation you created in Step #7. The ping traffic should no longer appear in the tcpdump.
-
-### Getting external connectivity working on cloudlab
-
-On head node:
-
- ovs-vsctl del-br br-flat-lan-1
- ifconfig eth2 10.123.0.1
- iptables --table nat --append POSTROUTING --out-interface br-ex -j MASQUERADE
- #arp -s 10.123.0.3 fa:16:3e:ea:11:0a
- sysctl net.ipv4.conf.all.send_redirects
- sysctl net.ipv4.conf.all.send_redirects=0
- sysctl net.ipv4.conf.default.send_redirects=0
- sysctl net.ipv4.conf.eth0.send_redirects=0
- sysctl net.ipv4.conf.br-ex.send_redirects=0
-
-Substitute for your installation:
-
- 10.123.0.3 = wan_ip of vSG
- 10.123.0.1 = wan gateway
- fa:16:3e:ea:11:0a = wan_mac of vSG
- 00:8c:fa:5b:09:d8 = wan_mac of gateway
-
-### Setting up a test-client
-
-Before setting up VTN, create a bridge and attach it to the dataplane device on each compute node:
-
- brctl addbr br-inject
- brctl addif br-inject eth3 # substitute dataplane eth device here, may be different on each compute node
- ip link set br-inject up
- ip link set dev br-inject promisc on
-
-Then update the network-config attribute of the VTN ONOS App in XOS to use a dataplaneIntf of br-inject instead of the eth device. Bring up VTN and a VSG. WAN connectivity and everything else should be working fine.
-
-Add a new slice, mysite_client, and make sure to give it both a private and a management network. Bring up an instance on the same node as the vSG you want to test. On the compute node, run the following:
-
- $MAC=<make-up-some-mac>
- $INSTANCE=<instance-id>
- virsh attach-interface --domain $INSTANCE --type bridge --source br-inject --model virtio --mac $MAC --config --live
-
-Log into the vSG via the management interface. Inside of the vSG run the following:
-
- STAG=<your s-tag here>
- CTAG=<your c-tag here>
- ip link add link eth2 eth2.$STAG type vlan id $STAG
- ip link add link eth2.$STAG eth2.$STAG.$CTAG type vlan id $CTAG
- ip link set eth2.$STAG up
- ip link set eth2.$STAG.$CTAG up
- ip addr add 192.168.0.2/24 dev eth2.$STAG.$CTAG
- ip route del default
- ip route add default via 192.168.0.1
diff --git a/cord-deprecated/README.md b/cord-deprecated/README.md
deleted file mode 100644
index 64075d9..0000000
--- a/cord-deprecated/README.md
+++ /dev/null
@@ -1,151 +0,0 @@
-# CORD development environment
-
-This configuration can be used to set up a CORD development environment.
-It does the following:
-
-* Sets up a basic dataplane for testing end-to-end packet flow between a subscriber client and the Internet
-* Brings up ONOS apps for controlling the dataplane: virtualbng, olt
-* Configures XOS with the CORD services: vCPE, vBNG, vOLT
-
-**NOTE: This configuration is stale and likely not working at present. If you are looking to evaluate
-and/or contribute to [CORD](http://opencord.org/),
-you should look instead at the [cord-pod](../cord-pod) configuration. Almost
-all CORD developers have transitioned to [cord-pod](../cord-pod).**
-
-## End-to-end dataplane
-
-The configuration uses XOS to set up an end-to-end dataplane for development of the XOS services and ONOS apps
-used in CORD. It abstracts away most of the complexity of the CORD hardware using virtual networks
-and Open vSwitch (OvS) switches. At a high level the dataplane looks like this:
-
-```
- olt virtualbng
- ---- ----
- ONOS ONOS
- | |
-client ----> CPqD ----> vCPE ----> OvS ----> Internet
- 1 2 3 4
-```
-
-On the datapath are two OvS switches, controlled by the `olt` and `virtualbng` ONOS applications. Once all the pieces are in
-place, the client at left should be able to obtain an IP address via DHCP from the vCPE and send packets out to the Internet.
-
-All of the components in the above diagram (i.e., client, OvS switches, ONOS, and vCPE) currently run in distinct VMs
-created by XOS. The numbers in the diagram correspond to networks set up by XOS:
-
-1. subscriber_network
-2. lan_network
-3. wan_network
-4. public_network
-
-## How to run it
-
-The configuration is intended to be run on [CloudLab](http://cloudlab.us).
-It launches an XOS container on Cloudlab that runs the XOS develserver. The container is left running in the background.
-
-To get started on CloudLab:
-* Create an experiment using the *OpenStack-CORD* profile. (You can also use the *OpenStack* profile, but choose *Kilo*
-with two compute nodes and disable security groups.)
-* Wait until you get an email from CloudLab with title "OpenStack Instance Finished Setting Up".
-* Login to the *ctl* node of your experiment and run:
-```
-ctl:~$ git clone https://github.com/open-cloud/xos.git
-ctl:~$ cd xos/xos/configurations/cord/
-ctl:~/xos/xos/configurations/cord$ make
-```
-
-Running `make` in this directory creates the XOS Docker container and runs the TOSCA engine with `cord.yaml` to
-configure XOS with the CORD services. In addition, a number of VMs are created:
-
-1. *Slice mysite_onos*: runs the ONOS Docker container with `virtualbng` app loaded
-1. *Slice mysite_onos*: runs the ONOS Docker container with `olt` app loaded
-1. *Slice mysite_vbng*: for running OvS with the `virtualbng` app as controller
-1. *Slice mysite_volt*: for running the CPqD switch with the `olt` app as controller
-1. *Slice mysite_clients*: a subscriber client for end-to-end testing
-1. *Slice mysite_vcpe*: runs the vCPE Docker container (if not using containers on bare metal)
-
-Once all the VMs are up and the ONOS apps are configured, XOS should be able to get an address mapping from the `virtualbng`
-ONOS app for the vCPE. To verify that it has received an IP address mapping, look at the **Routeable subnet:** field in
-the appropriate *Vbng tenant* object in XOS. It should contain an IP address in the 10.254.0.0/24 subnet.
-
-After launching the ONOS apps, it is necessary to configure software switches along the dataplane so that ONOS can control
-them. To do this, from the `cord` configuration directory:
-```
-ctl:~/xos/xos/configurations/cord$ cd dataplane/
-ctl:~/xos/xos/configurations/cord/dataplane$ ./gen-inventory.sh > hosts
-ctl:~/xos/xos/configurations/cord/dataplane$ ansible-playbook -i hosts dataplane.yaml
-```
-
-To setup the dataplane for containers on bare metal, perform these steps in addition to the above (note: make sure to sudo when running the playbook):
-```
-ctl:~/xos/xos/configurations/cord/dataplane$ ./generate-bm.sh > hosts-bm
-ctl:~/xos/xos/configurations/cord/dataplane$ sudo ansible-playbook -i hosts-bm dataplane-bm.yaml
-```
-
-Check that the vCPE container has started, by going into the XOS UI, selecting 'Services', 'service_vcpe', 'Administration', 'Vcpe Tenants', and make sure there's a green icon next to the vCPE.
-
-If the vCPE Tenant is still red, then the Instance could be exponentially backed-off due to errors while trying to sync before dataplane.yaml was run. You can reset the exponential backoff by tracking down the vCPE Instance (Slices->mysite_vcpe->Instances, and find the Instance associated with the vCPE Tenant) and hitting the save button.
-
-Now SSH into ONOS running the OLT app (see below) and activate the subscriber:
-```
-onos> add-subscriber-access of:0000000000000001 1 432
-```
-
-At this point the client should be able to get an IP address from the vCPE via
-DHCP. To set up the IP address and default route on the client:
-```
-client:$ sudo route del default gw 10.11.10.5
-client:$ sudo dhclient br-sub
-```
-Once `dhclient` returns, the client should now be able to surf the Internet
-through the dataplane.
-
-## Setting up /etc/hosts
-
-To make it easy to log into the various VMs that make up the dataplane, add entries for them into `/etc/hosts` on the
-*ctl* node. As root, run:
-```
-ctl:~/xos/xos/configurations/cord/dataplane$ ./gen-etc-hosts.sh >> /etc/hosts
-```
-For example, to log into the client:
-```
-ctl:~$ ssh ubuntu@client
-```
-
-## How to log into ONOS
-
-ONOS apps are run inside Docker containers hosted in VMs. All ports exposed by the ONOS container are forwarded to the
-outside, and can be accessed from the *ctl* node over the `flat-lan-1-net` network. Assuming that `/etc/hosts`
-has been configured as described above, it is possible to SSH to the ONOS running the `virtualbng` app as follows (password is *karaf*):
-
-```
-$ ssh -p 8101 karaf@onos_vbng
-Password authentication
-Password:
-Welcome to Open Network Operating System (ONOS)!
- ____ _ ______ ____
- / __ \/ |/ / __ \/ __/
- / /_/ / / /_/ /\ \
- \____/_/|_/\____/___/
-
-
-Hit '<tab>' for a list of available commands
-and '[cmd] --help' for help on a specific command.
-Hit '<ctrl-d>' or type 'system:shutdown' or 'logout' to shutdown ONOS.
-
-onos>
-```
-
-For instance, to check the IP address mappings managed by the `virtualbng` app:
-
-```
-onos> vbngs
- Private IP - Public IP
- 10.0.1.3 - 10.254.0.129
-```
-
-## Troubleshooting
-
-#### Problem: No external connectivity from vCPE container
-1. Make sure the hosts listed in `virtualbng.json` are the actual compute nodes used in your experiment.
-2. Try rebooting the ONOS container running the `virtualbng` app: `$ ssh ubuntu@onos-vbng "sudo docker restart ONOS"`
diff --git a/cord-deprecated/ceilometer.yaml b/cord-deprecated/ceilometer.yaml
deleted file mode 100644
index 464b07b..0000000
--- a/cord-deprecated/ceilometer.yaml
+++ /dev/null
@@ -1,270 +0,0 @@
-tosca_definitions_version: tosca_simple_yaml_1_0
-
-description: Setup CORD-related services -- vOLT, vCPE, vBNG.
-
-imports:
- - custom_types/xos.yaml
-
-node_types:
- tosca.nodes.SFlowService:
- derived_from: tosca.nodes.Root
- description: >
- XOS SFlow Collection Service
- capabilities:
- scalable:
- type: tosca.capabilities.Scalable
- service:
- type: tosca.capabilities.xos.Service
- properties:
- kind:
- type: string
- default: generic
- description: Type of service.
- view_url:
- type: string
- required: false
- description: URL to follow when icon is clicked in the Service Directory.
- icon_url:
- type: string
- required: false
- description: ICON to display in the Service Directory.
- enabled:
- type: boolean
- default: true
- published:
- type: boolean
- default: true
- description: If True then display this Service in the Service Directory.
- public_key:
- type: string
- required: false
- description: Public key to install into Instances to allows Services to SSH into them.
- private_key_fn:
- type: string
- required: false
- description: Location of private key file
- versionNumber:
- type: string
- required: false
- description: Version number of Service.
- sflow_port:
- type: integer
- required: false
- default: 6343
- description: sFlow listening port
- sflow_api_port:
- type: integer
- required: false
- default: 33333
- description: sFlow publish subscribe api listening port
-
- tosca.nodes.CeilometerService:
- derived_from: tosca.nodes.Root
- description: >
- XOS Ceilometer Service
- capabilities:
- scalable:
- type: tosca.capabilities.Scalable
- service:
- type: tosca.capabilities.xos.Service
- properties:
- kind:
- type: string
- default: generic
- description: Type of service.
- view_url:
- type: string
- required: false
- description: URL to follow when icon is clicked in the Service Directory.
- icon_url:
- type: string
- required: false
- description: ICON to display in the Service Directory.
- enabled:
- type: boolean
- default: true
- published:
- type: boolean
- default: true
- description: If True then display this Service in the Service Directory.
- public_key:
- type: string
- required: false
- description: Public key to install into Instances to allows Services to SSH into them.
- private_key_fn:
- type: string
- required: false
- description: Location of private key file
- versionNumber:
- type: string
- required: false
- description: Version number of Service.
- ceilometer_pub_sub_url:
- type: string
- required: false
- description: REST URL of ceilometer PUB/SUB component
-
- tosca.nodes.CeilometerTenant:
- derived_from: tosca.nodes.Root
- description: >
- CORD: A Tenant of the Ceilometer Service.
- properties:
- kind:
- type: string
- default: generic
- description: Kind of tenant
-
-topology_template:
- node_templates:
- service_ceilometer:
- type: tosca.nodes.CeilometerService
- requirements:
- properties:
- view_url: /admin/ceilometer/ceilometerservice/$id$/
- kind: ceilometer
- ceilometer_pub_sub_url: http://10.11.10.1:4455/
- public_key: { get_artifact: [ SELF, pubkey, LOCAL_FILE] }
- artifacts:
- pubkey: /opt/xos/synchronizers/monitoring_channel/monitoring_channel_public_key
-
-# service_sflow:
-# type: tosca.nodes.SFlowService
-# requirements:
-# properties:
-# view_url: /admin/ceilometer/sflowservice/$id$/
-# kind: sflow
-# sflow_port: 6343
-# sflow_api_port: 33333
-
- Private:
- type: tosca.nodes.NetworkTemplate
-
- ceilometer_network:
- type: tosca.nodes.network.Network.XOS
- properties:
- ip_version: 4
- labels: ceilometer_client_access
- requirements:
- - network_template:
- node: Private
- relationship: tosca.relationships.UsesNetworkTemplate
- - owner:
- node: mysite_ceilometer
- relationship: tosca.relationships.MemberOfSlice
- - connection:
- node: mysite_ceilometer
- relationship: tosca.relationships.ConnectsToSlice
-
- mysite:
- type: tosca.nodes.Site
-
- trusty-server-multi-nic:
- type: tosca.nodes.Image
-
- ceilometer-trusty-server-multi-nic:
- type: tosca.nodes.Image
-
- m1.small:
- type: tosca.nodes.Flavor
-
- mysite_ceilometer:
- description: Ceilometer Proxy Slice
- type: tosca.nodes.Slice
- requirements:
- - ceilometer_service:
- node: service_ceilometer
- relationship: tosca.relationships.MemberOfService
- - site:
- node: mysite
- relationship: tosca.relationships.MemberOfSite
- - default_image:
- node: ceilometer-trusty-server-multi-nic
- relationship: tosca.relationships.DefaultImage
- - default_flavor:
- node: m1.small
- relationship: tosca.relationships.DefaultFlavor
-
-# mysite_sflow:
-# description: Slice for sFlow service
-# type: tosca.nodes.Slice
-# requirements:
-# - sflow_service:
-# node: service_sflow
-# relationship: tosca.relationships.MemberOfService
-# - site:
-# node: mysite
-# relationship: tosca.relationships.MemberOfSite
-
- my_ceilometer_tenant:
- description: Ceilometer Service default Tenant
- type: tosca.nodes.CeilometerTenant
- requirements:
- - provider_service:
- node: service_ceilometer
- relationship: tosca.relationships.MemberOfService
-
- # Virtual machines
-# sflow_service_instance:
-# type: tosca.nodes.Compute
-# capabilities:
-# # Host container properties
-# host:
-# properties:
-# num_cpus: 1
-# disk_size: 10 GB
-# mem_size: 4 MB
-# # Guest Operating System properties
-# os:
-# properties:
-# # host Operating System image properties
-# architecture: x86_64
-# type: linux
-# distribution: Ubuntu
-# version: 14.10
-# requirements:
-# - slice:
-# node: mysite_sflow
-# relationship: tosca.relationships.MemberOfSlice
-
- Customer Care:
- type: tosca.nodes.DashboardView
- properties:
- url: template:xosDiagnostic
-
- TruckRoll:
- type: tosca.nodes.DashboardView
- properties:
- url: template:xosTruckroll
-
- Ceilometer:
- type: tosca.nodes.DashboardView
- properties:
- url: template:xosCeilometerDashboard
-
-
- Tenant:
- type: tosca.nodes.DashboardView
- properties:
- no-create: true
- no-update: true
- no-delete: true
-
- padmin@vicci.org:
- type: tosca.nodes.User
- properties:
- firstname: XOS
- lastname: admin
- is_admin: true
- requirements:
- - customer_care_dashboard:
- node: Customer Care
- relationship: tosca.relationships.UsesDashboard
- - truckroll_dashboard:
- node: TruckRoll
- relationship: tosca.relationships.UsesDashboard
- - ceilometer_dashboard:
- node: Ceilometer
- relationship: tosca.relationships.UsesDashboard
- - tenant_dashboard:
- node: Tenant
- relationship: tosca.relationships.UsesDashboard
diff --git a/cord-deprecated/cord.yaml b/cord-deprecated/cord.yaml
deleted file mode 100644
index c708d8e..0000000
--- a/cord-deprecated/cord.yaml
+++ /dev/null
@@ -1,550 +0,0 @@
-tosca_definitions_version: tosca_simple_yaml_1_0
-
-description: Setup CORD-related services -- vOLT, vCPE, vBNG.
-
-imports:
- - custom_types/xos.yaml
-
-topology_template:
- node_templates:
- # CORD Services
- service_vtr:
- type: tosca.nodes.Service
- properties:
- view_url: /admin/vtr/vtrservice/$id$/
- kind: vTR
-
- service_volt:
- type: tosca.nodes.Service
- requirements:
- - vsg_tenant:
- node: service_vsg
- relationship: tosca.relationships.TenantOfService
- - lan_network:
- node: lan_network
- relationship: tosca.relationships.UsesNetwork
- - wan_network:
- node: wan_network
- relationship: tosca.relationships.UsesNetwork
- properties:
- view_url: /admin/cord/voltservice/$id$/
- kind: vOLT
-
- # set a pool of addresses that we can hand out for the VSG Wan.
- public_addresses:
- type: tosca.nodes.AddressPool
- properties:
- addresses: 10.123.0.0/24 10.124.0.0/24
-
- service_vsg:
- type: tosca.nodes.VSGService
- requirements:
- - vbng_tenant:
- node: service_vbng
- relationship: tosca.relationships.TenantOfService
- properties:
- view_url: /admin/cord/vsgservice/$id$/
- backend_network_label: hpc_client
- public_key: { get_artifact: [ SELF, pubkey, LOCAL_FILE] }
- private_key_fn: /opt/xos/synchronizers/vcpe/vcpe_private_key
-# node_label: label_vsg
- artifacts:
- pubkey: /opt/xos/synchronizers/vcpe/vcpe_public_key
-
- service_vbng:
- type: tosca.nodes.VBNGService
- properties:
- view_url: /admin/cord/vbngservice/$id$/
-# if unspecified, vbng observer will look for an ONOSApp Tenant and
-# generate a URL from its IP address
-# vbng_url: http://10.11.10.24:8181/onos/virtualbng/
-
- service_ONOS_vBNG:
- type: tosca.nodes.ONOSService
- requirements:
- properties:
- kind: onos
- view_url: /admin/onos/onosservice/$id$/
- public_key: { get_artifact: [ SELF, pubkey, LOCAL_FILE] }
- artifacts:
- pubkey: /opt/xos/synchronizers/onos/onos_key.pub
-
-#
-# To actually bring up the vBNG app
-# - Set up the dataplane using the ansible script
-# - Log into the vBNG ONOS and run 'devices' to get switch dpID
-# - Change the dpID values in vBNG ONOS app in XOS GUI
-# - (Synchronizer should copy the files to ONOS container immediately)
-# - Log into service_ONOS_vBNG VM and restart ONOS Docker container
-# (Should roll this step into a Synchronizer)
-#f
- vBNG_ONOS_app:
- type: tosca.nodes.ONOSvBNGApp
- requirements:
- - onos_tenant:
- node: service_ONOS_vBNG
- relationship: tosca.relationships.TenantOfService
- - vbng_service:
- node: service_vbng
- relationship: tosca.relationships.UsedByService
- properties:
- dependencies: org.onosproject.proxyarp, org.onosproject.virtualbng, org.onosproject.openflow, org.onosproject.fwd
- config_network-cfg.json: >
- {
- "ports" : {
- "of:0000000000000001/1" : {
- "interfaces" : [
- {
- "ips" : [ "10.0.1.253/24" ],
- "mac" : "00:00:00:00:00:99"
- }
- ]
- },
- "of:0000000000000001/2" : {
- "interfaces" : [
- {
- "ips" : [ "10.254.0.2/24" ],
- "mac" : "00:00:00:00:00:98"
- }
- ]
- }
- }
- }
- config_virtualbng.json: { get_artifact: [ SELF, virtualbng_json, LOCAL_FILE] }
- artifacts:
- virtualbng_json: /root/setup/virtualbng.json
-
- service_ONOS_vOLT:
- type: tosca.nodes.ONOSService
- requirements:
- properties:
- kind: onos
- view_url: /admin/onos/onosservice/$id$/
- public_key: { get_artifact: [ SELF, pubkey, LOCAL_FILE] }
- rest_onos/v1/network/configuration/: >
- {
- "devices" : {
- "of:0000000000000001" : {
- "accessDevice" : {
- "uplink" : "2",
- "vlan" : "222",
- "defaultVlan" : "1"
- },
- "basic" : {
- "driver" : "pmc-olt"
- }
- }
- }
- }
- artifacts:
- pubkey: /opt/xos/synchronizers/onos/onos_key.pub
-
-
- vOLT_ONOS_app:
- type: tosca.nodes.ONOSvOLTApp
- requirements:
- - onos_tenant:
- node: service_ONOS_vOLT
- relationship: tosca.relationships.TenantOfService
- - volt_service:
- node: service_volt
- relationship: tosca.relationships.UsedByService
- properties:
- install_dependencies: onos-ext-notifier-1.0-SNAPSHOT.oar, onos-ext-volt-event-publisher-1.0-SNAPSHOT.oar
- dependencies: org.onosproject.openflow-base, org.onosproject.olt, org.ciena.onos.ext_notifier, org.ciena.onos.volt_event_publisher
- component_config: >
- {
- "org.ciena.onos.ext_notifier.KafkaNotificationBridge":{
- "rabbit.user": "<rabbit_user>",
- "rabbit.password": "<rabbit_password>",
- "rabbit.host": "<rabbit_host>",
- "publish.kafka": "false",
- "publish.rabbit": "true",
- "volt.events.rabbit.topic": "notifications.info",
- "volt.events.rabbit.exchange": "voltlistener",
- "volt.events.opaque.info": "{project_id: <keystone_tenant_id>, user_id: <keystone_user_id>}",
- "publish.volt.events": "true"
- }
- }
-# config_network-cfg.json: >
-# {
-# "devices" : {
-# "of:0000000000000001" : {
-# "accessDevice" : {
-# "uplink" : "2",
-# "vlan" : "222",
-# "defaultVlan" : "1"
-# },
-# "basic" : {
-# "driver" : "default"
-# }
-# }
-# }
-# }
-
- # Network templates
- Private:
- type: tosca.nodes.NetworkTemplate
-
- Public network hack:
- type: tosca.nodes.NetworkTemplate
- properties:
- visibility: private
- translation: NAT
- shared_network_name: tun0-net
-
-
- # Networks required by the CORD setup
- lan_network:
- type: tosca.nodes.network.Network
- properties:
- ip_version: 4
- requirements:
- - network_template:
- node: Private
- relationship: tosca.relationships.UsesNetworkTemplate
- - owner:
- node: mysite_vsg
- relationship: tosca.relationships.MemberOfSlice
- - connection:
- node: mysite_vsg
- relationship: tosca.relationships.ConnectsToSlice
- - connection:
- node: mysite_vsg
- relationship: tosca.relationships.ConnectsToSlice
-
- wan_network:
- type: tosca.nodes.network.Network
- properties:
- ip_version: 4
- requirements:
- - network_template:
- node: Private
- relationship: tosca.relationships.UsesNetworkTemplate
- - owner:
- node: mysite_vsg
- relationship: tosca.relationships.MemberOfSlice
- - connection:
- node: mysite_vsg
- relationship: tosca.relationships.ConnectsToSlice
- - connection:
- node: mysite_vsg
- relationship: tosca.relationships.ConnectsToSlice
-
- Private-Direct:
- type: tosca.nodes.NetworkTemplate
- properties:
- access: direct
-
- Private-Indirect:
- type: tosca.nodes.NetworkTemplate
- properties:
- access: indirect
-
- subscriber_network:
- type: tosca.nodes.network.Network
- properties:
- ip_version: 4
- requirements:
- - network_template:
- node: Private
- relationship: tosca.relationships.UsesNetworkTemplate
- - owner:
- node: mysite_volt
- relationship: tosca.relationships.MemberOfSlice
- - connection:
- node: mysite_volt
- relationship: tosca.relationships.ConnectsToSlice
- - connection:
- node: mysite_clients
- relationship: tosca.relationships.ConnectsToSlice
-
- public_network:
- type: tosca.nodes.network.Network
- properties:
- requirements:
- - network_template:
- node: Public network hack
- relationship: tosca.relationships.UsesNetworkTemplate
- - owner:
- node: mysite_vbng
- relationship: tosca.relationships.MemberOfSlice
- - connection:
- node: mysite_vbng
- relationship: tosca.relationships.ConnectsToSlice
-
-
- mysite:
- type: tosca.nodes.Site
-
- label_vsg:
- type: tosca.nodes.NodeLabel
-
- # CORD Slices
- mysite_vsg:
- description: vSG Controller Slice
- type: tosca.nodes.Slice
- requirements:
- - vsg_service:
- node: service_vsg
- relationship: tosca.relationships.MemberOfService
- - site:
- node: mysite
- relationship: tosca.relationships.MemberOfSite
- - vsg_docker_image:
- node: docker-vsg
- relationship: tosca.relationships.UsesImage
-# properties:
-# default_isolation: container
-
- mysite_onos_vbng:
- description: ONOS Controller Slice for vBNG
- type: tosca.nodes.Slice
- requirements:
- - ONOS:
- node: service_ONOS_vBNG
- relationship: tosca.relationships.MemberOfService
- - site:
- node: mysite
- relationship: tosca.relationships.MemberOfSite
-
- mysite_onos_volt:
- description: ONOS Controller Slice for vOLT
- type: tosca.nodes.Slice
- requirements:
- - ONOS:
- node: service_ONOS_vOLT
- relationship: tosca.relationships.MemberOfService
- - site:
- node: mysite
- relationship: tosca.relationships.MemberOfSite
-
- mysite_vbng:
- description: slice running OVS controlled by vBNG
- type: tosca.nodes.Slice
- requirements:
- - site:
- node: mysite
- relationship: tosca.relationships.MemberOfSite
-
- mysite_volt:
- description: OVS controlled by vOLT
- type: tosca.nodes.Slice
- requirements:
- - site:
- node: mysite
- relationship: tosca.relationships.MemberOfSite
-
- mysite_clients:
- description: slice for clients at the subscriber
- type: tosca.nodes.Slice
- requirements:
- - site:
- node: mysite
- relationship: tosca.relationships.MemberOfSite
-
-
- # Virtual machines
- onos_app_1:
- type: tosca.nodes.Compute
- capabilities:
- # Host container properties
- host:
- properties:
- num_cpus: 1
- disk_size: 10 GB
- mem_size: 4 MB
- # Guest Operating System properties
- os:
- properties:
- # host Operating System image properties
- architecture: x86_64
- type: linux
- distribution: Ubuntu
- version: 14.10
- requirements:
- - slice:
- node: mysite_onos_vbng
- relationship: tosca.relationships.MemberOfSlice
-
- onos_app_2:
- type: tosca.nodes.Compute
- capabilities:
- # Host container properties
- host:
- properties:
- num_cpus: 1
- disk_size: 10 GB
- mem_size: 4 MB
- # Guest Operating System properties
- os:
- properties:
- # host Operating System image properties
- architecture: x86_64
- type: linux
- distribution: Ubuntu
- version: 14.10
- requirements:
- - slice:
- node: mysite_onos_volt
- relationship: tosca.relationships.MemberOfSlice
-
- # VM for running the OVS controlled by vBNG
- ovs_vbng:
- type: tosca.nodes.Compute
- capabilities:
- # Host container properties
- host:
- properties:
- num_cpus: 1
- disk_size: 10 GB
- mem_size: 4 MB
- # Guest Operating System properties
- os:
- properties:
- # host Operating System image properties
- architecture: x86_64
- type: linux
- distribution: ubuntu
- version: 14.04
- requirements:
- - slice:
- node: mysite_vbng
- relationship: tosca.relationships.MemberOfSlice
-
- # VM for running the OVS controlled by vOLT
- ovs_volt:
- type: tosca.nodes.Compute
- capabilities:
- # Host container properties
- host:
- properties:
- num_cpus: 1
- disk_size: 10 GB
- mem_size: 4 MB
- # Guest Operating System properties
- os:
- properties:
- # host Operating System image properties
- architecture: x86_64
- type: linux
- distribution: ubuntu
- version: 14.04
- requirements:
- - slice:
- node: mysite_volt
- relationship: tosca.relationships.MemberOfSlice
-
- # A subscriber client VM
- client1:
- type: tosca.nodes.Compute
- capabilities:
- # Host container properties
- host:
- properties:
- num_cpus: 1
- disk_size: 10 GB
- mem_size: 4 MB
- # Guest Operating System properties
- os:
- properties:
- # host Operating System image properties
- architecture: x86_64
- type: linux
- distribution: ubuntu
- version: 14.04
- requirements:
- - slice:
- node: mysite_clients
- relationship: tosca.relationships.MemberOfSlice
-
- # docker image for vsg containers
- docker-vsg:
- # TODO: need to attach this to mydeployment
- type: tosca.nodes.Image
- properties:
- kind: container
- container_format: na
- disk_format: na
- path: andybavier/docker-vcpe
- tag: develop
-
- # Let's add a user who can be administrator of the household
- johndoe@myhouse.com:
- type: tosca.nodes.User
- properties:
- password: letmein
- firstname: john
- lastname: doe
- requirements:
- - site:
- node: mysite
- relationship: tosca.relationships.MemberOfSite
-
- # A subscriber
- My House:
- type: tosca.nodes.CORDSubscriber
- properties:
- service_specific_id: 123
- firewall_enable: false
- cdn_enable: false
- url_filter_enable: false
- url_filter_level: R
- requirements:
- - house_admin:
- node: johndoe@myhouse.com
- relationship: tosca.relationships.AdminPrivilege
-
- Mom's PC:
- type: tosca.nodes.CORDUser
- properties:
- mac: 01:02:03:04:05:06
- level: PG_13
- requirements:
- - household:
- node: My House
- relationship: tosca.relationships.SubscriberDevice
-
- Dad's PC:
- type: tosca.nodes.CORDUser
- properties:
- mac: 90:E2:BA:82:F9:75
- level: PG_13
- requirements:
- - household:
- node: My House
- relationship: tosca.relationships.SubscriberDevice
-
- Jack's Laptop:
- type: tosca.nodes.CORDUser
- properties:
- mac: 68:5B:35:9D:91:D5
- level: PG_13
- requirements:
- - household:
- node: My House
- relationship: tosca.relationships.SubscriberDevice
-
- Jill's Laptop:
- type: tosca.nodes.CORDUser
- properties:
- mac: 34:36:3B:C9:B6:A6
- level: PG_13
- requirements:
- - household:
- node: My House
- relationship: tosca.relationships.SubscriberDevice
-
- My Volt:
- type: tosca.nodes.VOLTTenant
- properties:
- service_specific_id: 123
- s_tag: 222
- c_tag: 432
- requirements:
- - provider_service:
- node: service_volt
- relationship: tosca.relationships.MemberOfService
- - subscriber:
- node: My House
- relationship: tosca.relationships.BelongsToSubscriber
diff --git a/cord-deprecated/dataplane/ansible.cfg b/cord-deprecated/dataplane/ansible.cfg
deleted file mode 100644
index 9100590..0000000
--- a/cord-deprecated/dataplane/ansible.cfg
+++ /dev/null
@@ -1,4 +0,0 @@
-[defaults]
-remote_user = ubuntu
-private_key_file = ~/.ssh/id_rsa
-host_key_checking = false
\ No newline at end of file
diff --git a/cord-deprecated/dataplane/change_controller.sh b/cord-deprecated/dataplane/change_controller.sh
deleted file mode 100755
index 2b961ee..0000000
--- a/cord-deprecated/dataplane/change_controller.sh
+++ /dev/null
@@ -1,13 +0,0 @@
-#! /bin/bash
-
-# put IP address of node running ONOS VTN App here
-DESIRED_CONTROLLER="tcp:130.127.133.24:6653"
-
-while [[ 1 ]]; do
- CONTROLLER=`ovs-vsctl get-controller br-int`
- if [[ "$CONTROLLER" == "tcp:172.17.0.2:6653" ]]; then
- ovs-vsctl set-controller br-int $DESIRED_CONTROLLER
- echo "changed controller from $CONTROLLER to $DESIRED_CONTROLLER"
- fi
- sleep 10s
-done
diff --git a/cord-deprecated/dataplane/cleanup.sh b/cord-deprecated/dataplane/cleanup.sh
deleted file mode 100755
index 91d821c..0000000
--- a/cord-deprecated/dataplane/cleanup.sh
+++ /dev/null
@@ -1,49 +0,0 @@
-#!/bin/bash
-
-function cleanup_network {
- NETWORK=$1
- SUBNETS=`neutron net-show $NETWORK | grep -i subnets | awk '{print $4}'`
- if [[ $SUBNETS != "" ]]; then
- PORTS=`neutron port-list | grep -i $SUBNETS | awk '{print $2}'`
- for PORT in $PORTS; do
- echo "Deleting port $PORT"
- neutron port-delete $PORT
- done
- fi
- neutron net-delete $NETWORK
-}
-
-source ../../setup/admin-openrc.sh
-
-echo "Deleting VMs"
-# Delete all VMs
-VMS=$( nova list --all-tenants|grep mysite|awk '{print $2}' )
-for VM in $VMS
-do
- nova delete $VM
-done
-
-echo "Waiting 5 seconds..."
-sleep 5
-
-cleanup_network lan_network
-cleanup_network wan_network
-cleanup_network mysite_vsg-private
-cleanup_network mysite_vsg-access
-cleanup_network management
-
-echo "Deleting networks"
-# Delete all networks beginning with mysite_
-NETS=$( neutron net-list --all-tenants|grep mysite|awk '{print $2}' )
-for NET in $NETS
-do
- neutron net-delete $NET
-done
-
-neutron net-delete lan_network || true
-neutron net-delete subscriber_network || true
-neutron net-delete public_network || true
-neutron net-delete hpc_client_network || true
-neutron net-delete ceilometer_network || true
-neutron net-delete management || true
-neutron net-delete mysite_vsg-access || true
diff --git a/cord-deprecated/dataplane/dataplane-bm.yaml b/cord-deprecated/dataplane/dataplane-bm.yaml
deleted file mode 100644
index e1e78ee..0000000
--- a/cord-deprecated/dataplane/dataplane-bm.yaml
+++ /dev/null
@@ -1,36 +0,0 @@
----
-- hosts: switch_volt
- sudo: yes
- tasks:
- - name: Create tunnel port on br-lan
- openvswitch_port:
- bridge=br-lan
- port={{ item }}
- state=present
- with_items: "grenames.split(' ')"
-
- - name: Set up GRE tunnel to vCPE
- shell: ovs-vsctl set Interface {{ item.0 }} type=gre options:remote_ip={{ item.1 }}
- with_together:
- - "grenames.split(' ')"
- - "bm_ips.split(' ')"
-
-- hosts: baremetal
-
- user: root
- sudo: no
- tasks:
- - name: Create br-lan
- openvswitch_bridge:
- bridge=br-lan
- state=present
-
- - name: Create tunnel port
- openvswitch_port:
- bridge=br-lan
- port={{ grename }}
- state=present
-
- - name: Configure GRE tunnel to vOLT switch
- shell: ovs-vsctl set Interface {{ grename }} type=gre options:remote_ip={{ volt_addr }}
-
diff --git a/cord-deprecated/dataplane/dataplane-vtn.yaml b/cord-deprecated/dataplane/dataplane-vtn.yaml
deleted file mode 100644
index f6561b5..0000000
--- a/cord-deprecated/dataplane/dataplane-vtn.yaml
+++ /dev/null
@@ -1,31 +0,0 @@
----
-- hosts: baremetal:nm
-
- user: root
- sudo: no
- tasks:
- - name: stop neutron openvswitch agent
- service: name=neutron-plugin-openvswitch-agent state=stopped
-
- - name: Update openvswitch config
- lineinfile:
- dest=/usr/share/openvswitch/scripts/ovs-ctl
- insertafter="set ovsdb-server.*DB_FILE.*"
- regexp=".*set.*--remote=ptcp.*"
- line=" set \"$@\" --remote=ptcp:6641"
- state=present
-
- - name: Restart openvswitch
- service: name=openvswitch-switch state=restarted
-
- - name: Delete br-int
- shell: ovs-vsctl show | grep -i br-int > /dev/null && ovs-vsctl del-br br-int
- ignore_errors: yes
-
-- hosts: nm
-
- user: root
- sudo: no
- tasks:
- - name: stop neutron dhcp agent
- service: name=neutron-dhcp-agent state=stopped
diff --git a/cord-deprecated/dataplane/dataplane.yaml b/cord-deprecated/dataplane/dataplane.yaml
deleted file mode 100644
index 3ca3bbe..0000000
--- a/cord-deprecated/dataplane/dataplane.yaml
+++ /dev/null
@@ -1,256 +0,0 @@
----
-- hosts: switch_vbng
- sudo: yes
- vars:
- controller_ip: "{{ hostvars['onos_vbng']['ansible_ssh_host'] }}"
- controller_port: 6653
- ovs_dpid: "0000000000000001"
- tags:
- - vbng
- tasks:
- - name: Fix /etc/hosts
- lineinfile:
- dest=/etc/hosts
- regexp="127.0.0.1 localhost"
- line="127.0.0.1 localhost {{ ansible_hostname }}"
-
- - name: Install packages
- apt: name={{ item }}
- state=latest
- update_cache=yes
- with_items:
- - openvswitch-switch
- - python-netifaces
-
- - name: Create br-vbng
- openvswitch_bridge:
- bridge=br-vbng
- state=present
-
- - name: Find wan_network interface
- script: scripts/if_from_ip.py {{ wan_ip }}
- register: wan_net
-
- - name: Find public_network interface
- script: scripts/if_from_ip.py {{ public_ip }}
- register: public_net
-
- - name: Hook up wan-network to br-vbng
- openvswitch_port:
- bridge=br-vbng
- port={{ wan_net.stdout }}
- state=present
-
- - name: Hook up public-network to OvS
- openvswitch_port:
- bridge=br-vbng
- port={{ public_net.stdout }}
- state=present
-
- - name: Remove IP address on public_network
- command: /sbin/ifconfig {{ public_net.stdout }} 0.0.0.0
- when: public_net.stdout
-
- - name: Change datapath ID of bridge to match config file
- command: /usr/bin/ovs-vsctl set bridge br-vbng other-config:datapath-id={{ ovs_dpid }}
-
- - name: Add controller to switch
- command: /usr/bin/ovs-vsctl set-controller br-vbng tcp:{{ controller_ip }}:{{ controller_port }}
-
-- hosts: switch_volt
- sudo: yes
- vars:
- controller_ip: "{{ hostvars['onos_volt']['ansible_ssh_host'] }}"
- controller_port: 6653
- vcpe_lan_ip: "{{ hostvars['vcpe']['lan_ip'] }}"
- tags:
- - volt
- tasks:
-
- - name: Fix /etc/hosts
- lineinfile:
- dest=/etc/hosts
- regexp="127.0.0.1 localhost"
- line="127.0.0.1 localhost {{ ansible_hostname }}"
-
- - name: Install packages
- apt: name={{ item }} state=present update_cache=yes
- with_items:
- - git
- - python-netifaces
- - openvswitch-switch
-
- - name: Checkout the Mininet repo
- git: repo=https://github.com/mininet/mininet.git
- dest=/tmp/mininet
-
- - name: Install the CPqD switch using Mininet install script
- shell: /tmp/mininet/util/install.sh -3f
- creates=/usr/local/bin/ofdatapath
- ignore_errors: true
-
- - name: Find subscriber_network interface
- script: scripts/if_from_ip.py {{ subscriber_ip }}
- register: subscriber_net
-
- - name: Create bridge br-sub
- openvswitch_bridge:
- bridge=br-sub
- state=present
-
- - name: Add subscriber_net to br-sub
- openvswitch_port:
- bridge=br-sub
- port={{ subscriber_net.stdout }}
- state=present
-
- # The CPqD switch is expecting that packets coming from the client have
- # VLAN tag 1. However Neutron's OvS configuration eats VLAN-tagged packets.
- # So tag them with VLAN 1 here before sending to CPqD.
- #
- # Note that the VLAN tag is 0 in the real-world setup, but the CPqD switch
- # seems to have a problem with these packets.
-
- # Using OvS to tag packets with VLAN ID 1 is not quite working for some reason.
- # The packets from the client get tagged OK, but only the first packet from the
- # VCPE gets its tag stripped off. Very weird. That's why we are using veth
- # devices instead.
- #- name: Add tag 1 to br-sub port
- # shell: ovs-vsctl set port {{ subscriber_net.stdout }} tag=1
-
- - name: Create a pair of veth devices
- shell: ifconfig veth0 >> /dev/null || ip link add veth0 type veth peer name veth1
-
- - name: Create veth0.1
- shell: ifconfig veth0.1 >> /dev/null || ip link add link veth0 name veth0.1 type vlan id 1
-
- - name: Bring the interfaces up
- shell: ip link set {{ item }} up
- with_items:
- - veth0
- - veth1
- - veth0.1
-
- - name: Add veth0.1 to br-sub
- openvswitch_port:
- bridge=br-sub
- port=veth0.1
- state=present
-
- - name: Create bridge br-lan
- openvswitch_bridge:
- bridge=br-lan
- state=present
-
- - name: Create tunnel port on br-lan
- openvswitch_port:
- bridge=br-lan
- port=gre0
- state=present
-
- - name: Set up GRE tunnel to vCPE
- shell: ovs-vsctl set Interface gre0 type=gre options:remote_ip={{ vcpe_lan_ip }}
-
- - name: Check if br-lan has an IPv6 address
- shell: ip addr show br-lan|grep inet6|awk '{print $2}'
- register: ipv6
-
- - name: Remove br-lan IPv6 address if present
- shell: ifconfig br-lan inet6 del {{ ipv6.stdout }}
- when: ipv6.stdout != ""
-
- - name: Check if veth1 has an IPv6 address
- shell: ip addr show veth1|grep inet6|awk '{print $2}'
- register: ipv6
-
- - name: Remove veth1 IPv6 address if present
- shell: ifconfig veth1 inet6 del {{ ipv6.stdout }}
- when: ipv6.stdout != ""
-
- - name: Run the datapath
- command: /usr/local/bin/ofdatapath -i veth1,br-lan punix:/tmp/s1 -d 000000000001 --no-slicing -D -P
- creates=/usr/local/var/run/ofdatapath.pid
-
- - name: Run the control program
- command: /usr/local/bin/ofprotocol unix:/tmp/s1 tcp:{{ controller_ip }}:{{ controller_port }} --fail=closed --listen=punix:/tmp/s1.listen -D -P
- creates=/usr/local/var/run/ofprotocol.pid
-
-- hosts: client
- sudo: yes
- tags:
- - client
- tasks:
-
- - name: Fix /etc/hosts
- lineinfile:
- dest=/etc/hosts
- regexp="127.0.0.1 localhost"
- line="127.0.0.1 localhost {{ ansible_hostname }}"
-
- - name: Install packages
- apt: name={{ item }}
- state=latest
- update_cache=yes
- with_items:
- - openvswitch-switch
- - python-netifaces
-
- - name: Create br-sub
- openvswitch_bridge:
- bridge=br-sub
- state=present
-
- - name: Find subscriber_network interface
- script: scripts/if_from_ip.py {{ subscriber_ip }}
- register: client_net
-
- - name: Hook up subscriber-network to OvS
- openvswitch_port:
- bridge=br-sub
- port={{ client_net.stdout }}
- state=present
-
- - name: Run some commands on br-sub
- shell: "{{ item }}"
- with_items:
- - ifconfig br-sub 0.0.0.0 mtu 1400 up
- - ethtool -K br-sub tso off
- - ethtool -K br-sub tx off
-
- # Run dhclient on br-sub internal interface to issue DHCP request to vCPE
-
-#
-# Need to set up a tunnel between vCPE and vOLT to keep VLAN-tagged
-# packets from being swallowed by the network.
-#
-- hosts: vcpe
- sudo: yes
- vars:
- volt_lan_ip: "{{ hostvars['switch_volt']['lan_ip'] }}"
- tags:
- - vcpe
- tasks:
-
- - name: Install packages
- apt: name={{ item }}
- state=latest
- update_cache=yes
- with_items:
- - openvswitch-switch
-
- - name: Create br-lan
- openvswitch_bridge:
- bridge=br-lan
- state=present
-
- - name: Create tunnel port
- openvswitch_port:
- bridge=br-lan
- port=gre0
- state=present
-
- - name: Configure GRE tunnel to vOLT switch
- shell: ovs-vsctl set Interface gre0 type=gre options:remote_ip={{ volt_lan_ip }}
-
- - name: Restart vCPEs
- script: scripts/restart-vcpes.sh
diff --git a/cord-deprecated/dataplane/gen-etc-hosts.sh b/cord-deprecated/dataplane/gen-etc-hosts.sh
deleted file mode 100755
index 0d49706..0000000
--- a/cord-deprecated/dataplane/gen-etc-hosts.sh
+++ /dev/null
@@ -1,19 +0,0 @@
-#!/bin/bash
-# set -x
-
-source ../../setup/admin-openrc.sh
-
-get_ip () {
- LABEL=$1
- NETWORK=$2
- nova list --all-tenants|grep $LABEL|sed "s/^.*$NETWORK=//g"|sed 's/; .*$//g'|awk '{print $1}'
-}
-
-cat <<EOF
-$( get_ip mysite_onos_vbng flat-lan-1-net) onos_vbng
-$( get_ip mysite_vbng flat-lan-1-net) switch_vbng
-$( get_ip mysite_onos_volt flat-lan-1-net) onos_volt
-$( get_ip mysite_volt flat-lan-1-net) switch_volt
-$( get_ip mysite_clients flat-lan-1-net) client
-$( get_ip mysite_vsg flat-lan-1-net) vcpe
-EOF
diff --git a/cord-deprecated/dataplane/gen-inventory.sh b/cord-deprecated/dataplane/gen-inventory.sh
deleted file mode 100755
index bacd2dd..0000000
--- a/cord-deprecated/dataplane/gen-inventory.sh
+++ /dev/null
@@ -1,21 +0,0 @@
-#!/bin/bash
-# set -x
-
-source ../../setup/admin-openrc.sh
-
-get_ip () {
- LABEL=$1
- NETWORK=$2
- nova list --all-tenants|grep $LABEL|sed "s/^.*$NETWORK=//g"|sed 's/; .*$//g'|awk '{print $1}'
-}
-
-cat <<EOF
-onos_vbng ansible_ssh_host=$( get_ip mysite_onos_vbng flat-lan-1-net)
-switch_vbng ansible_ssh_host=$( get_ip mysite_vbng flat-lan-1-net) wan_ip=$( get_ip mysite_vbng wan_network) public_ip=$( get_ip mysite_vbng tun0-net )
-
-onos_volt ansible_ssh_host=$( get_ip mysite_onos_volt flat-lan-1-net)
-switch_volt ansible_ssh_host=$( get_ip mysite_volt flat-lan-1-net) subscriber_ip=$( get_ip mysite_volt subscriber_network) lan_ip=$( get_ip mysite_volt lan_network)
-
-client ansible_ssh_host=$( get_ip mysite_clients flat-lan-1-net) subscriber_ip=$( get_ip mysite_clients subscriber_network)
-vcpe ansible_ssh_host=$( get_ip mysite_vsg flat-lan-1-net) lan_ip=$( get_ip mysite_vsg lan_network)
-EOF
diff --git a/cord-deprecated/dataplane/generate-bm.sh b/cord-deprecated/dataplane/generate-bm.sh
deleted file mode 100755
index f9b8787..0000000
--- a/cord-deprecated/dataplane/generate-bm.sh
+++ /dev/null
@@ -1,44 +0,0 @@
-source ../../setup/admin-openrc.sh
-
-get_ip () {
- LABEL=$1
- NETWORK=$2
- nova list --all-tenants|grep $LABEL|sed "s/^.*$NETWORK=//g"|sed 's/; .*$//g'|awk '{print $1}'
- }
-
-GRENAMES=()
-BM_IPS=()
-
-NODES=`sudo bash -c "source ../../setup/admin-openrc.sh ; nova hypervisor-list" |grep enabled|awk '{print $4}'`
-I=1
-for NODE in $NODES; do
- BM_SSH_IP=`getent hosts $NODE | awk '{ print $1 }'`
- IFS=. read BM_NAME BM_REMAINDER <<< $NODE
- BM_IP=`sudo grep -i $BM_NAME /root/setup/data-hosts.flat-lan-1 | awk '{print $1}'`
-
- GRE_NAMES+=("gre-bm-$I")
- BM_IPS+=("$BM_IP")
-
- #echo switch_volt$I ansible_ssh_host=$( get_ip mysite_volt flat-lan-1-net) grename=gre-bm-$I bm_addr=$BM_IP
- echo bm$I ansible_ssh_host=$BM_SSH_IP grename=gre-bm-$I volt_addr=$( get_ip mysite_volt flat-lan-1-net) ansible_ssh_private_key_file=/root/.ssh/id_rsa
- I=$(( I+1 ))
-done
-
-GRE_NAMES=${GRE_NAMES[@]}
-BM_IPS=${BM_IPS[@]}
-
-echo switch_volt ansible_ssh_host=$( get_ip mysite_volt flat-lan-1-net) grenames=\"$GRE_NAMES\" bm_ips=\"$BM_IPS\"
-
-NM=`grep "^nm" /root/setup/fqdn.map | awk '{ print $2 }'`
-echo "nm1 ansible_ssh_host=$NM ansible_ssh_private_key_file=/root/.ssh/id_rsa"
-
-echo "[baremetal]"
-I=1
-for NODE in $NODES; do
- echo bm$I
- I=$((I+1))
-done
-
-# now for the network management node
-echo "[nm]"
-echo "nm1"
diff --git a/cord-deprecated/dataplane/scripts/if_from_ip.py b/cord-deprecated/dataplane/scripts/if_from_ip.py
deleted file mode 100644
index 28524fe..0000000
--- a/cord-deprecated/dataplane/scripts/if_from_ip.py
+++ /dev/null
@@ -1,14 +0,0 @@
-#!/usr/bin/python
-
-import sys
-import netifaces
-
-def main (argv):
- addr = argv[0]
- for iface in netifaces.interfaces():
- addrs = netifaces.ifaddresses(iface)
- if 2 in addrs and addrs[2][0]['addr'] == addr:
- sys.stdout.write(iface)
-
-if __name__ == "__main__":
- main(sys.argv[1:])
diff --git a/cord-deprecated/dataplane/scripts/restart-vcpes.sh b/cord-deprecated/dataplane/scripts/restart-vcpes.sh
deleted file mode 100644
index d1c9fce..0000000
--- a/cord-deprecated/dataplane/scripts/restart-vcpes.sh
+++ /dev/null
@@ -1,8 +0,0 @@
-#!/bin/sh
-
-for VCPE in $( docker ps|grep vcpe|awk '{print $NF}' )
-do
- service $VCPE stop
- sleep 1
- service $VCPE start
-done
diff --git a/cord-deprecated/docker-compose.yml b/cord-deprecated/docker-compose.yml
deleted file mode 100644
index 28eeeb4..0000000
--- a/cord-deprecated/docker-compose.yml
+++ /dev/null
@@ -1,106 +0,0 @@
-xos_db:
- image: xosproject/xos-postgres
- expose:
- - "5432"
-
-xos_synchronizer_openstack:
- command: bash -c "sleep 120; python /opt/xos/synchronizers/openstack/xos-synchronizer.py"
- image: xosproject/xos-synchronizer-openstack
- labels:
- org.xosproject.kind: synchronizer
- org.xosproject.target: openstack
- links:
- - xos_db
- extra_hosts:
- - ctl:${MYIP}
- volumes:
- - ../common/xos_common_config:/opt/xos/xos_configuration/xos_common_config:ro
- - ./xos_cord_config:/opt/xos/xos_configuration/xos_cord_config:ro
- - ../setup:/root/setup:ro
-
-xos_synchronizer_onos:
- image: xosproject/xos-synchronizer-openstack
- command: bash -c "sleep 120; python /opt/xos/synchronizers/onos/onos-synchronizer.py -C /opt/xos/synchronizers/onos/onos_synchronizer_config"
- labels:
- org.xosproject.kind: synchronizer
- org.xosproject.target: onos
- links:
- - xos_db
- extra_hosts:
- - ctl:${MYIP}
- volumes:
- - ../setup/id_rsa:/opt/xos/synchronizers/onos/onos_key:ro # private key
-
-xos_synchronizer_vcpe:
- image: xosproject/xos-synchronizer-openstack
- command: bash -c "sleep 120; python /opt/xos/synchronizers/vcpe/vcpe-synchronizer.py -C /opt/xos/synchronizers/vcpe/vcpe_synchronizer_config"
- labels:
- org.xosproject.kind: synchronizer
- org.xosproject.target: vcpe
- links:
- - xos_db
- extra_hosts:
- - ctl:${MYIP}
- volumes:
- - ../setup/id_rsa:/opt/xos/synchronizers/vcpe/vcpe_private_key:ro # private key
- - ../setup:/root/setup:ro
-
-xos_synchronizer_vbng:
- image: xosproject/xos-synchronizer-openstack
- command: bash -c "sleep 120; python /opt/xos/synchronizers/vbng/vbng-synchronizer.py -C /opt/xos/synchronizers/vbng/vbng_synchronizer_config"
- labels:
- org.xosproject.kind: synchronizer
- org.xosproject.target: vbng
- links:
- - xos_db
- extra_hosts:
- - ctl:${MYIP}
-
-xos_synchronizer_monitoring_channel:
- image: xosproject/xos-synchronizer-openstack
- command: bash -c "sleep 120; python /opt/xos/synchronizers/monitoring_channel/monitoring_channel_synchronizer.py -C /opt/xos/synchronizers/monitoring_channel/monitoring_channel_synchronizer_config"
- labels:
- org.xosproject.kind: synchronizer
- org.xosproject.target: monitoring_channel
- links:
- - xos_db
- extra_hosts:
- - ctl:${MYIP}
- volumes:
- - ../setup/id_rsa:/opt/xos/synchronizers/monitoring_channel/monitoring_channel_private_key:ro # private key
-
-xos_synchronizer_vtr:
- image: xosproject/xos-synchronizer-openstack
- command: bash -c "sleep 120; python /opt/xos/synchronizers/vtr/vtr-synchronizer.py -C /opt/xos/synchronizers/vtr/vtr_synchronizer_config"
- labels:
- org.xosproject.kind: synchronizer
- org.xosproject.target: vtr
- links:
- - xos_db
- extra_hosts:
- - ctl:${MYIP}
- volumes:
- - ../setup/id_rsa:/opt/xos/synchronizers/vtr/vcpe_private_key:ro # private key
- - ../setup:/root/setup:ro
-
-# FUTURE
-#xos_swarm_synchronizer:
-# image: xosproject/xos-swarm-synchronizer
-# labels:
-# org.xosproject.kind: synchronizer
-# org.xosproject.target: swarm
-
-xos:
- image: xosproject/xos
- command: python /opt/xos/manage.py runserver 0.0.0.0:8000 --insecure --makemigrations
- ports:
- - "9999:8000"
- links:
- - xos_db
- volumes:
- - ../setup:/root/setup:ro
- - ../common/xos_common_config:/opt/xos/xos_configuration/xos_common_config:ro
- - ./xos_cord_config:/opt/xos/xos_configuration/xos_cord_config:ro
- - ../setup/id_rsa.pub:/opt/xos/synchronizers/onos/onos_key.pub:ro
- - ../setup/id_rsa.pub:/opt/xos/synchronizers/vcpe/vcpe_public_key:ro
- - ../setup/id_rsa.pub:/opt/xos/synchronizers/monitoring_channel/monitoring_channel_public_key:ro
diff --git a/cord-deprecated/make-virtualbng-json.sh b/cord-deprecated/make-virtualbng-json.sh
deleted file mode 100644
index 993643c..0000000
--- a/cord-deprecated/make-virtualbng-json.sh
+++ /dev/null
@@ -1,38 +0,0 @@
-FN=$SETUPDIR/virtualbng.json
-
-rm -f $FN
-
-cat >> $FN <<EOF
-{
- "localPublicIpPrefixes" : [
- "10.254.0.128/25"
- ],
- "nextHopIpAddress" : "10.254.0.1",
- "publicFacingMac" : "00:00:00:00:00:66",
- "xosIpAddress" : "10.11.10.1",
- "xosRestPort" : "9999",
- "hosts" : {
-EOF
-
-NODES=$( sudo bash -c "source $SETUPDIR/admin-openrc.sh ; nova hypervisor-list" |grep -v ID|grep -v +|awk '{print $4}' )
-
-NODECOUNT=0
-for NODE in $NODES; do
- ((NODECOUNT++))
-done
-
-I=0
-for NODE in $NODES; do
- echo $NODE
- ((I++))
- if [[ "$I" -lt "$NODECOUNT" ]]; then
- echo " \"$NODE\" : \"of:0000000000000001/1\"," >> $FN
- else
- echo " \"$NODE\" : \"of:0000000000000001/1\"" >> $FN
- fi
-done
-
-cat >> $FN <<EOF
- }
-}
-EOF
diff --git a/cord-deprecated/make-vtn-networkconfig-json.sh b/cord-deprecated/make-vtn-networkconfig-json.sh
deleted file mode 100644
index 77b855d..0000000
--- a/cord-deprecated/make-vtn-networkconfig-json.sh
+++ /dev/null
@@ -1,88 +0,0 @@
-FN=$SETUPDIR/vtn-network-cfg.json
-
-echo "Writing to $FN"
-
-rm -f $FN
-
-cat >> $FN <<EOF
-{
- "apps" : {
- "org.onosproject.cordvtn" : {
- "cordvtn" : {
- "privateGatewayMac" : "00:00:00:00:00:01",
- "localManagementIp": "172.27.0.1/24",
- "ovsdbPort": "6641",
- "sshPort": "22",
- "sshUser": "root",
- "sshKeyFile": "/root/node_key",
- "publicGateways": [
- {
- "gatewayIp": "10.123.0.1",
- "gatewayMac": "00:8c:fa:5b:09:d8"
- }
- ],
- "nodes" : [
-EOF
-
-NODES=$( sudo bash -c "source $SETUPDIR/admin-openrc.sh ; nova hypervisor-list" |grep -v ID|grep -v +|awk '{print $4}' )
-
-# XXX disabled - we don't need or want the nm node at this time
-# also configure ONOS to manage the nm node
-# NM=`grep "^nm" /root/setup/fqdn.map | awk '{ print $2 }'`
-# NODES="$NODES $NM"
-
-NODECOUNT=0
-for NODE in $NODES; do
- ((NODECOUNT++))
-done
-
-I=0
-for NODE in $NODES; do
- echo $NODE
- NODEIP=`getent hosts $NODE | awk '{ print $1 }'`
-
- # This part is cloudlab-specific. It examines the flat-net-1 network and extracts
- # the eth device and ip address that was assigned to flat-net-1.
- sudo scp root@$NODE:/root/setup/info.flat-lan-1 $SETUPDIR/flat-lan-$NODE
- PHYPORT=`bash -c "source $SETUPDIR/flat-lan-$NODE; echo \\\$DATADEV"`
- LOCALIP=`bash -c "source $SETUPDIR/flat-lan-$NODE; echo \\\$DATAIP"`
-
- ((I++))
- cat >> $FN <<EOF
- {
- "hostname": "$NODE",
- "hostManagementIp": "$NODEIP/24",
- "bridgeId": "of:000000000000000$I",
- "dataPlaneIntf": "$PHYPORT",
- "dataPlaneIp": "$LOCALIP/24"
-EOF
- if [[ "$I" -lt "$NODECOUNT" ]]; then
- echo " }," >> $FN
- else
- echo " }" >> $FN
- fi
-done
-
-# get the openstack admin password and username
-source $SETUPDIR/admin-openrc.sh
-
-HOSTNAME=`hostname`
-NEUTRONIP=`getent hosts $HOSTNAME | awk '{ print $1 }'`
-KEYSTONEIP=`getent hosts $HOSTNAME | awk '{ print $1 }'`
-
-cat >> $FN <<EOF
- ]
- }
- },
- "org.onosproject.openstackinterface" : {
- "openstackinterface" : {
- "do_not_push_flows" : "true",
- "neutron_server" : "http://$NEUTRONIP:9696/v2.0/",
- "keystone_server" : "http://$KEYSTONEIP:5000/v2.0/",
- "user_name" : "$OS_USERNAME",
- "password" : "$OS_PASSWORD"
- }
- }
- }
-}
-EOF
diff --git a/cord-deprecated/xos_cord_config b/cord-deprecated/xos_cord_config
deleted file mode 100644
index a5448f7..0000000
--- a/cord-deprecated/xos_cord_config
+++ /dev/null
@@ -1,6 +0,0 @@
-[gui]
-branding_name=CORD
-#branding_css=/static/cord.css
-branding_icon=/static/cord-logo.png
-branding_favicon=/static/cord-favicon.png
-branding_bg=/static/cord-bg.jpg
diff --git a/cord-pod/Makefile b/cord-pod/Makefile
index 566e51f..898d34c 100644
--- a/cord-pod/Makefile
+++ b/cord-pod/Makefile
@@ -112,7 +112,7 @@
onboard-exampleservice:
sudo cp id_rsa key_import/exampleservice_rsa
sudo cp id_rsa.pub key_import/exampleservice_rsa.pub
- $(RUN_TOSCA_BOOSTRAP) $(SERVICE_DIR)/exampleservice/exampleservice-onboard.yaml
+ $(RUN_TOSCA_BOOTSTRAP) $(SERVICE_DIR)/exampleservice/xos/exampleservice-onboard.yaml
bash ../common/wait_for_onboarding_ready.sh 81 services/exampleservice
bash ../common/wait_for_onboarding_ready.sh 81 xos
bash ../common/wait_for_xos_port.sh 80
diff --git a/frontend/Makefile b/frontend/Makefile
index 217c09d..7640cb0 100644
--- a/frontend/Makefile
+++ b/frontend/Makefile
@@ -78,9 +78,15 @@
ps:
sudo docker-compose ps
-enter-xos:
+enter-ui:
sudo docker exec -ti frontend_xos_ui_1 bash
+enter-bootstrap-ui:
+ sudo docker exec -ti frontendbs_xos_bootstrap_ui_1 bash
+
+enter-db:
+ sudo docker exec -ti frontendbs_xos_db_1 bash
+
django-restart:
sudo docker exec frontend_xos_ui_1 touch /opt/xos/xos/settings.py
diff --git a/frontend/README.md b/frontend/README.md
index 7e2ef02..17f2626 100644
--- a/frontend/README.md
+++ b/frontend/README.md
@@ -5,14 +5,27 @@
## Getting Started
-- Navigate to `/xos/configurations/frontend` folder
+- Navigate to `/service-profile/configurations/frontend` folder
- Run `make` command
You'll be able to visit XOS at `0.0.0.0:9000` and the `xos/core/xoslib` folder is shared with the container. This means that any update to that folder is automatically reported in the container.
-If you need to work on the Django application itself, comment out the "sleep" command
-for the `xos` container in docker-compose.yml and run `make`. Once the containers are
-up then type `make enter` to enter the running container.
+### Working on the Django Application
+If you need to work on the Django application itself:
+- comment out the `sleep 86400` command for the `xos_bootstrap_ui` container in `docker-compose-bootstrap.yml`
+- comment the `python /opt/xos/manage.py runserver 0.0.0.0:9998 --insecure --makemigrations` in the same file
+- run `make containers`.
+- run `make`
+
+You'll notice that the `make` command will hang on to `Waiting for XOS to start listening on port 9998`, so in another shell:
+- run `make enter-bootstrap-ui`, this will bring you inside the running bootstrap container
+- from inside the bootstrap container run `python /opt/xos/manage.py runserver 0.0.0.0:9998 --insecure --makemigrations`
+
+As this command finish his execution you'll notice that the `make` command will resume and end. Once it has endend your development environment is up and running.
+
+If you are working on core files (not involving services) you can use the `bootstrap_ui` container as target, so connect to port `9998`. To simplify the development `xos/core` and `xos/api/utility` folders are shared between the host filesystem and the container, so you don't have to manually copy file inside the the running `bootstrap_ui` container.
+
+If instead you are working on services or services API your target container should be the `ui` container, so connect to port `9999`. Note that the `ui` container can be rebuilt from the `synchronizer` container, and it will pull the container in the docker registry, not your local one.
> _NOTE:
> Please be careful and do not commit migrations, private keys or other autogenerated files._
@@ -20,13 +33,15 @@
### Using Vagrant
-Vagrant environment is provided with a ubuntu_14.04 box (ubuntu/trusty64). It will run xos on the following address `192.168.46.100:9999'.
-It also provide a shared folder between host machine (root folder of xos repository) and ubuntu client(/opt/xos).
+Vagrant environment is provided with a ubuntu_14.04 box (ubuntu/trusty64).
-Start the Vagrant box : vagrant up --provision
-SSH details : ssh vagrant@127.0.0.1 -p 2222
-password: vagrant
-Check status: vagrant global-status
+It will run xos on the following address `192.168.46.100:9999`.
+It will also share the `service-profile` and `xos` folder with the vagrant box. These two directory are intended to be side by side.
+
+How to set it up:
+- Start the Vagrant box: `vagrant up`
+- Enter Vagrant box: `vagrant ssh`
+- Start XOS: `cd /opt/service-profile/frontend` and run `make`
### Docker Helpers
diff --git a/frontend/Vagrantfile b/frontend/Vagrantfile
index 796977e..38b2a92 100644
--- a/frontend/Vagrantfile
+++ b/frontend/Vagrantfile
@@ -15,6 +15,4 @@
vb.customize ['modifyvm', :id,'--memory', '4096']
end
- # make the frontend config
- config.vm.provision "shell", inline: "cd /opt/service-profile/frontend/ && make"
end
diff --git a/frontend/docker-compose-bootstrap.yml b/frontend/docker-compose-bootstrap.yml
index 942c105..f2055fc 100644
--- a/frontend/docker-compose-bootstrap.yml
+++ b/frontend/docker-compose-bootstrap.yml
@@ -5,6 +5,7 @@
xos_bootstrap_ui:
image: xosproject/xos
+ # command: sleep 86400
command: python /opt/xos/manage.py runserver 0.0.0.0:9998 --insecure --makemigrations
environment:
- CONFIG_DIR
@@ -16,11 +17,12 @@
- ../common/xos_common_config:/opt/xos/xos_configuration/xos_common_config
- ../cord-pod/files/xos_vtn_config:/opt/xos/xos_configuration/xos_vtn_config:ro
- ../../xos_services:/opt/xos_services
+ - ../../xos/xos/api/utility:/opt/xos/api/utility
+ - ../../xos/xos/core:/opt/xos/core
xos_synchronizer_onboarding:
image: xosproject/xos-synchronizer-onboarding
command: bash -c "cd /opt/xos/synchronizers/onboarding; ./run.sh"
-# command: sleep 86400
labels:
org.xosproject.kind: synchronizer
org.xosproject.target: onboarding