Highly performant and scalable Neutron plugin.
Go to file
Brian Stajkowski 076cd9cbfe Docker Update
Add dockerfiles for each piece of infrastructure.  Support no
password for mysql.  Also added the local logs shared folder
with support for local venv code but further testing is needed.

Change-Id: I983299a389a7e3230625114c2629ed86d765daa0
2016-07-11 12:44:00 -07:00
docs Passing Tests 2016-06-22 10:17:45 -05:00
infrastructure/docker Docker Update 2016-07-11 12:44:00 -07:00
quark Raise GatewayConflict as BadRequest 2016-07-07 13:02:30 -07:00
quark.wiki@e5e0dc9935 added wiki submodule 2013-06-13 11:26:58 -05:00
.gitignore Docker Update 2016-07-11 12:44:00 -07:00
.gitmodules Remove agent submodule 2014-09-25 09:00:21 -05:00
.gitreview Passing Tests 2016-06-22 10:17:45 -05:00
.testr.conf Add .testr.conf file for run_tests.sh to work 2014-11-04 04:11:33 +00:00
.travis.yml CAS IPs 2015-04-03 23:22:09 -05:00
CONTRIBUTING.rst Docker Development 2016-06-27 22:34:32 -07:00
DESIGN.md Merge branch 'master' of github.com:jkoelker/quark 2013-03-05 21:17:51 +00:00
docker_down.sh Docker Update 2016-07-11 12:44:00 -07:00
docker_reload.sh Docker Update 2016-07-11 12:44:00 -07:00
docker_up.sh Docker Update 2016-07-11 12:44:00 -07:00
docker.apipaste.ini Docker Development 2016-06-27 22:34:32 -07:00
docker.neutron.conf Docker Update 2016-07-11 12:44:00 -07:00
docker.policy.json Docker Development 2016-06-27 22:34:32 -07:00
LICENSE.txt Initial commit 2013-01-02 17:28:35 -06:00
MANIFEST.in Added agent submodule 2014-08-26 17:47:10 -05:00
README.rst Updating quark metadata for pypi 2016-06-23 09:44:24 -05:00
requirements.txt Passing Tests 2016-06-22 10:17:45 -05:00
run_tests.sh RM12111 Made jarvis run tests like tox 2015-04-04 21:48:03 -05:00
setup.cfg Updating quark metadata for pypi 2016-06-23 09:44:24 -05:00
setup.py Removed d2to1 for some good raisin 2014-01-29 16:11:03 -06:00
test-requirements.txt Passing Tests 2016-06-22 10:17:45 -05:00
TODO Ensure model instance have an id 2013-03-13 21:46:27 -05:00
tox.ini Passing Tests 2016-06-22 10:17:45 -05:00

quark

Caution

Quark is not currently designed to work with DevStack (but it can with the instructions below). We mention this because these instructions can become invalid if and when changes are pushed to DevStack. Please also not that once Quark+Neutron+DevStack+Tempest are wired up, the Tempest tests are failing. Please watch this Quark Github Issue for updates on this.

Dependencies

aiclib

Database Migrations

Here

Install with DevStack and Neutron

  • Ensure you have a user already with sudo rights. If you need one, do this as root:

    /usr/sbin/adduser stack
    echo "stack ALL=(ALL) NOPASSWD: ALL" >> /etc/sudoers
  • Switch to user with sudo rights:

    sudo su - stack  # or whatever user you already have (instead of stack)
  • Clone devstack:

    git clone https://github.com/openstack-dev/devstack
  • Go into devstack folder:

    cd devstack
  • Create the local.conf configuration file that DevStack needs (localrc is inside it now) with Neutron as an anabled service (NOTE: This notation is explained here):

    [[local|localrc]]
    DATABASE_PASSWORD=password
    ADMIN_PASSWORD=password
    SERVICE_PASSWORD=password
    SERVICE_TOKEN=password
    RABBIT_PASSWORD=password
    # Enable Logging
    LOGFILE=/opt/stack/logs/stack.sh.log
    VERBOSE=True
    LOG_COLOR=True
    SCREEN_LOGDIR=/opt/stack/logs
    # Pre-requisite
    ENABLED_SERVICES=rabbit,mysql,key
    # Horizon (always use the trunk)
    ENABLED_SERVICES+=,horizon
    HORIZON_REPO=https://github.com/openstack/horizon
    HORIZON_BRANCH=master
    # Nova
    ENABLED_SERVICES+=,n-api,n-crt,n-obj,n-cpu,n-cond,n-sch
    IMAGE_URLS+=",https://launchpad.net/cirros/trunk/0.3.0/+download/cirros-0.3.0-x86_64-disk.img"
    # Glance
    ENABLED_SERVICES+=,g-api,g-reg
    # Neutron
    ENABLED_SERVICES+=,q-api,q-svc,q-agt,q-dhcp,q-l3,q-lbaas,q-meta,neutron
    # Cinder
    ENABLED_SERVICES+=,cinder,c-api,c-vol,c-sch
    # Tempest
    ENABLED_SERVICES+=,tempest
  • Remove Python's six packge:

    sudo rm -f /usr/lib/python2.7/dist-packages/six.py /usr/lib/python2.7/dist-packages/six.pyc # Old version of six package in /usr/lib/python2.7/dist-packages/ crashes # quark server

  • Install Devstack:

    ./stack.sh
  • Install aiclib:

    sudo pip install aiclib   
    # the reason for sudo here is if you don't you'll get permission denied when it tries to install to /usr/local/lib/python2.7/dist/packages
  • Install quark:

    cd /opt/stack  #the folder where devstack installed all the services
    git clone https://github.com/rackerlabs/quark
    cd quark
    sudo python setup.py develop
    # the reason for sudo here is if you don't you'll get permission denied when it tries to install to /usr/local/lib/python2.7/dist/packages
  • Validate quark installed:

    pip freeze | grep quark
    # should see something like:
    # -e git+http://github.com/rackerlabs/quark@ff5b05943b44a44712b9fc352065a414bb2a6bf9#egg=quark-master
  • Now edit the /etc/neutron/neutron.conf file to setup Quark as the core plugin:

    vim /etc/neutron/neutron.conf
    # Search for line containing 'core_plugin = ' and replace it with
    # 'core_plugin = quark.plugin.Plugin'
    #
    # Search for line containing 'service_plugins = ' and remove
    # 'neutron.services.l3_router.l3_router_plugin.L3RouterPlugin,' from
    # service plugins list
  • Stop Neutron by going into the screen session and going to the q-svc window and pressing ctrl-C:

    screen -r  # or go into devstack clone and then type ./rejoin-stack.sh
    # press ctrl+6 to go to q-svc window
    ctrl+C
  • Go back into screen and restart neutron (q-svc window):

    screen -r  stack # or go into folder where you cloned devstack then type ./rejoin-stack.sh
    # if screen command returns 'Cannot open your terminal /dev/pts/0' execute 'sudo chmod o+rwx /dev/pts/0'
    # go to q-svc window (ctrl+a, 7 currently does it)
    # previous command that devstack used to start neutron should be in history, press up arrow key to see it
  • You shouldn't receive any errors. To validate Quark has started up, you can scroll up in q-svc screen window (ctrl+a, esc, page-up) and look for the following lines:

    DEBUG neutron.service [-] core_plugin = quark.plugin.Plugin
    ...
    DEBUG neutron.service [-] QUARK.default_ipam_strategy=ANY
    DEBUG neutron.service [-] QUARK.default_net_strategy={}
    DEBUG neutron.service [-] QUARK.default_network_type=BASE
    DEBUG neutron.service [-] QUARK.ipam_driver=quark.ipam.QuarkIpam
    DEBUG neutron.service [-] QUARK.ipam_reuse_after=7200
    DEBUG neutron.service [-] QUARK.net_driver=quark.drivers.base.BaseDriver
    DEBUG neutron.service [-] QUARK.strategy_driver=quark.network_strategy.JSONStrategy

GOTCHAS

  • you won't be able to create ports until you've added at least one mac_address_range (use this script to do it, changing host IP and admin password)