Developement environment

Vagrant environment

Currently for development we are using Vagrant.

Additional software

VirtualBox 5.x, or Libvirt Vagrant 1.7.4 or higher

Note: Make sure that Vagrant VirtualBox Guest plugin is installed

$ vagrant plugin install vagrant-vbguest

Note: If you are using VirtualBox 5.0 on Linux system, it’s worth uncommenting paravirtprovider setting in vagrant-settings.yaml for speed improvements:

paravirtprovider: kvm

For details see Customizing vagrant-settings.yaml section.

Setup development env

Setup environment:

$ git clone https://github.com/openstack/solar
$ cd solar
$ vagrant up

Login into vm, the code is available in /vagrant directory

$ vagrant ssh
$ solar --help

Get ssh details for running slave nodes (vagrant/vagrant):

$ vagrant ssh-config

You can make/restore snapshots of boxes (this is way faster than reprovisioning them) with the snapshotter.py script:

$ ./snapshotter.py take -n my-snapshot
$ ./snapshotter.py show
$ ./snapshotter.py restore -n my-snapshot

snapshoter.py to run requires python module click.

  • On debian based systems you can install it via
sudo aptitude install python-click-cli,
  • On fedora 22 you can install it via sudo dnf install python-click,
  • If you use virtualenv or similar tool then you can install it just with
pip install click,
  • If you don’t have virtualenv and your operating system does not provide
package for it then sudo pip install click.
  • If you don’t have the pip tool then
[install it](https://pip.pypa.io/en/stable/installing/) and then execute command step 4.

Customizing vagrant-settings.yaml

Solar is shipped with sane defaults in vagrant-setting.yaml_defaults. If you need to adjust them for your needs, e.g. changing resource allocation for VirtualBox machines, you should just copy the file to vagrant-setting.yaml and make your modifications.

Image based provisioning with Solar

  • In vagrant-setting.yaml_defaults or vagrant-settings.yaml file uncomment preprovisioned: false line.

  • Run vagrant up, it will take some time because it builds image for bootstrap and IBP images.

  • Now you can run provisioning

    $ /vagrant/solar-resources/examples/provisioning/provision.sh
    

To develop Solar we use Vagrant

Using Libvirt instead of Virtualbox

Virtualbox is a default provider for Vagrant, but it’s also possible to use another providers. It should be possible to use any of Vagrant providers. As for today we support Libvirt provider. It can be used only on Linux systems.

To use Libvirt with vagrant just run:

$ vagrant plugin install vagrant-libvirt
$ vagrant up --provider libvirt

This will install required plugins and download libvirt image for vagrant.

In nodes definition we have hardcoded ssh keys paths, where we assume that Virtualbox is used. You need to copy keys to vagrant libvirt dir:

$ cp /vagrant/.vagrant/machines/solar-dev1/libvirt/private_key /vagrant/.vagrant/machines/solar-dev1/virtualbox/private_key

Or you can change path in node transport as described in FAQ.

do it for each solar-dev* machine.

Note

Libvirt by default is using KVM. You cannot run KVM and Virtualbox at the same time. Also remove conflicting virtualbox virtual networks, otherwise the libvirt provider fails (and vice versa).

Troubleshooting

Sometimes, vagrant providers may fail some steps while doing nodes provision. Or Solar CLI may behave in unexpected way. Try to do the following steps:

$ vagrant destroy --force
$ sudo rm -rf tmp
$ sudo rm -rf .vagrant/machines
$ sudo find solar -name "*.pyc" -delete

After that retry the vailed vagrant up command.

Contribution

To track development process we are using Launchpad. To see on what we are currently working check Series and milestones.

Submiting patches

We are using OpenStack infrastructure to track code changes which is using Gerrit. To see all proposed changes go to Solar panel

Reporting bugs

To trach bugs we are using Launchpad. You can see all Solar bugs here