Package: quark
=====quark=====Caution=======Quark is not currently designed to work with `DevStack <http://devstack.org>`_ (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 <https://github.com/rackerlabs/quark/issues/50>`_ for updates on this.Dependencies===================`aiclib <https://github.com/rackerlabs/aiclib>`_Database Migrations===================`Here <https://github.com/rackerlabs/quark/blob/master/quark/db/migration/alembic/README.rst>`_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 stackecho "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 <http://devstack.org/configuration.html>`_)::[[local|localrc]]DATABASE_PASSWORD=passwordADMIN_PASSWORD=passwordSERVICE_PASSWORD=passwordSERVICE_TOKEN=passwordRABBIT_PASSWORD=password# Enable LoggingLOGFILE=/opt/stack/logs/stack.sh.logVERBOSE=TrueLOG_COLOR=TrueSCREEN_LOGDIR=/opt/stack/logs# Pre-requisiteENABLED_SERVICES=rabbit,mysql,key# Horizon (always use the trunk)ENABLED_SERVICES+=,horizonHORIZON_REPO=https://github.com/openstack/horizonHORIZON_BRANCH=master# NovaENABLED_SERVICES+=,n-api,n-crt,n-obj,n-cpu,n-cond,n-schIMAGE_URLS+=",https://launchpad.net/cirros/trunk/0.3.0/+download/cirros-0.3.0-x86_64-disk.img"# GlanceENABLED_SERVICES+=,g-api,g-reg# NeutronENABLED_SERVICES+=,q-api,q-svc,q-agt,q-dhcp,q-l3,q-lbaas,q-meta,neutron# CinderENABLED_SERVICES+=,cinder,c-api,c-vol,c-sch# TempestENABLED_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 servicesgit clone https://github.com/rackerlabs/quarkcd quarksudo 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 windowctrl+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=ANYDEBUG neutron.service [-] QUARK.default_net_strategy={}DEBUG neutron.service [-] QUARK.default_network_type=BASEDEBUG neutron.service [-] QUARK.ipam_driver=quark.ipam.QuarkIpamDEBUG neutron.service [-] QUARK.ipam_reuse_after=7200DEBUG neutron.service [-] QUARK.net_driver=quark.drivers.base.BaseDriverDEBUG neutron.service [-] QUARK.strategy_driver=quark.network_strategy.JSONStrategyGOTCHAS=======- you won't be able to create ports until you've added at least one mac_address_range (use `this <https://gist.github.com/jmeridth/8561910>`_ script to do it, changing host IP and admin password)