How to setup Juniper's Openstack FWaaS Plugin

I have written a tech wiki article on how to install Juniper's OpenStack FWaaS Plugin @

Tuesday, December 30, 2014

Openstack : Fixing Failed to create network. No tenant network is available for allocation issue.

  • You are using ML2 plugin configured to use Vlans

If you try to create a network for a tenant and it fails with the following error:

Error: Failed to create network "Test": 503-{u'NeutronError': {u'message': u'Unable to create the network. No tenant network is available for allocation.', u'type': u'NoNetworkAvailable', u'detail': u''}}

The problem can be due to missing configuration in the below files:

In /etc/neutron/plugins/ml2/ml2_conf.ini
network_vlan_ranges =physnet1:1000:2999 (1000:2999 is the Vlan range allocation)

In /etc/neutron/plugins/openvswitch/ovs_neutron_plugin.ini
bridge_mappings = physnet1:br-eth1 (in OVS we map the physical network to the OVS bridge)

  1. You should have created a bridge br-eth1 manually and mapped it to a port
    • ovs-vsctl add-br br-eth1
    • ovs-vsctl add-port br-eth1 eth1
Once configuration is done, restart the neutron ovs agent on the compute node(s):
  • service neutron-openvswitch-agent restart

Monday, December 29, 2014

Installing IceHouse on CentOS 6.5 with PackStack -- All in one node

  • CentOS 6.5 (or above) installed on a system with Openstack recommended specs
  • Basic Network Configured and working. If you have used CentOS minimal version then you will need to configure the network manually. You can refer to the steps required here
  1. yum update -y
  2.  Go to IceHouse Repo and copy the link to the latest  *****.noarch.rpm. As of December 2014, the latest rpm is : rdo-release-icehouse-4.noarch.rpm
  3. yum install -y**latest**.noarch.rpm
  4. yum install openstack-packstack
  5. Generate an answer file and configure it as per your requirements
    • packstack --gen-answer-file *filename*
  6. Trigger installation using the generated answer file
    • packstack --answer-file *filename*

Configuring Network on Centos 6 Minimal Installation

When a system is installed with CentOS 6 minimal version, it's network is not configured initially and has to be manually taken care of. There are two ways of going about this:

  1.  vi /etc/sysconfig/network-scripts/ifcfg-eth0
    • ONBOOT = yes
    • NM_CONTROLLED = no
    • BOOTPROTO = dhcp
  2.  vi /etc/sysconfig/network [Hostname is needed to be specified for DHCP to work]
    • NETWORKING = yes
    • HOSTNAME =
  3.  vi /etc/resolv.conf [Optional]
    • search [ex:]
    • nameserver
  4. Once all the above steps are done, restart the networking service:
    • /etc/init.d/network restart
[For troubleshooting]
You can also consider using "dhclient eth0" to obtain an ip address for eth0 from dhcp server.

Static IP Address
  1. vi /etc/sysconfig/network-scripts/ifcfg-eth0
    • ONBOOT = yes
    • NM_CONTROLLED = no
    • BOOTPROTO = none
    • IPADDR =
    • NETMASK = [for a /24 network it will be]
    • GATEWAY = [Optional]
    •  USERCTL = yes/no [Optional] (yes - allows non-root users to control this device)

Additional configuration parameters are defined in the CentOS documentation

Wednesday, December 17, 2014

Installing VirtualBox Guest Additions from the Command Line

VirtualBox Guest Additions helps improve a VM's performance and usability. The biggest plus I see going for it is the dynamic screen resizing of the guest window.

If you are using a supported OS with a GUI, installing the guest additions is as simple as clicking on the menu "Devices --> Insert Guest Additions CD Image" and the installation follows.

On an OS without GUI, generally the server versions, you will have to do the following operations from the CLI to install the guest additions:

Sunday, December 14, 2014

Setting up Python Django dev environment

Django is a python web development framework that helps in rapid application development. Once you are comfortable with the basics, developing UI applications with Django framework is a breeze and helps the developers to focus on the problem at hand rather than on UI nitty gritty.

An understanding of this framework is a must in order to develop applications for Openstack Horizon module.

In this article, I will list out the steps that need to be carried out to get a Django setup ready for the initial learning phase. At the end of this article, I have included all the links that I have followed when I initially learnt this framework.

Monday, December 1, 2014

Junos Notes

[This is meant for my reference, so data will be from random areas]

Setting a Port to trunk all
set interfaces ge-0/0/45 unit 0 family ethernet-switching port-mode trunk

set interfaces ge-0/0/45 unit 0 family ethernet-switching vlan members all

Save/Restore Snapshots
  • save file-name
  • load file-name
Logging out a user : If you want to log out a stale session

root@srx> edit
Entering configuration mode
Users currently editing the configuration:
  root terminal u0 (pid 94668) on since 2014-12-01 10:52:51 UTC, idle 1w2d 18:02

root@srx# run request system logout pid 94668

[A much cleaner way is to set the ssh timeout for the user]

Find all users logged onto a device

Sunday, November 30, 2014

Fixing Openstack VM spawning issue: No suitable host found/vif_type=binding_failed error

Once in a while, on a new setup, when you try to spawn a VM on Openstack and it may fail with the error :  No Suitable Host Found, it points to the fact the the Nova Scheduler failed to filter out a host to spawn the VM on.

[The following trouble shooting is related to my setup. There are a lot of other factors that may lead to this error. So google a bit and check them in addition. This article can help you in figuring out the way to do troubleshooting.]

A quick look at /var/log/nova/scheduler.log and compute.log shows an error:
  • NovaException: Unexpected vif_type=binding_failed
  • Filter RetryFilter returned 0 hosts
This points to the fact that something is wrong with the Neutron setup. So a quick look into the neutron logs show the following:

Friday, April 4, 2014

Converting JSON string to JavaScript object

Javascript has an inbuilt library object to handle json data.

In order to convert a json string to an object, you can use the following method call:
var obj = JSON.parse("jsonString")
 for the other way around :
var jsonString = JSON.stringify(obj);

Check out the site It's very useful to format json strings.

Wednesday, March 26, 2014