Ensure FC ZoneManager is called

This patch ensures that the FC ZoneManager
is called during for all cases in Cinder
that does a volume attach/detach for FC
enabled drivers.
The problem was that we had code in the volume
manager that manually called the ZoneManager,
after initialize_connection and terminate_connection,
but other places in Cinder were not calling the
ZoneManager.
This patch creates 2 new decorators that can
be used for any driver's initialize_connection
and terminate_connection call.   The decorator
checks to make sure that the return value is for
a fibre_channel attachment and then calls the
ZoneManager's add_connection or delete_connection.
Change-Id: Ie3ae70785f500a140003ad3a8495e0ddc3516ea8
Closes-Bug: 1321798
Cinder-api service throws error on SIGHUP signal

Added reset method in WSGIService class.

After adding reset method when SIGHUP signal is sent to
wsgi service parent process,then it sends SIGHUP signal
to all of its child processes. Each child process handles
SIGHUP signal by first stopping the service and then calls
service start method again. When it stops the service, it
kills the eventlet thread, which internally closes the wsgi
server socket object. This server socket object is now not
usable again and it throws following error, while restarting
the service:

error: [Errno 9] Bad file descriptor

To resolve 'Bad file descriptor' error, creating duplicate
socket object, every time service starts.

Closes-Bug: #1337796

Change-Id: Iab32a3fe230a11692a8cad274304214247d6c2c6
Fix the section name in CONTRIBUTING.rst

The name of the section "If you're developer, start here"
has changed in the wiki, now is "If you're a developer".
This commit updates it to correctly refer to the
proper section.

Change-Id: Ibc5899d2577187b854213690731136edd4cd74ab
Add affinity/anti-affinity filters

Cinder has done a good job hiding the details of storage backends from end
users by using volume types.  However there are use cases where users who
build their application on top of volumes would like to be able to 'choose'
where a volume be created on.  How can Cinder provide such capability without
hurting the simplicity we have been keeping?  Affinity/anti-affinity is one
of the flexibility we can provide without exposing details to backends.

The term affinity/anti-affinity here is to to describe the relationship
between two sets of volumes in terms of location.  To limit the scope, we
describe one volume is affinity with the other one only when they reside in
the same volume back-end (this notion can be extended to volume pools if
volume pool support lands in Cinder); on the contrary, 'anti-affinity'
relation between two sets of volumes simply implies they are on different
Cinder back-ends (pools).

This affinity/anti-affinity filter filters Cinder backend based on hint
specified by end user.  The hint expresses the affinity or anti-affinity
relation between new volumes and existing volume(s).  This allows end
users to provide hints like 'please put this volume to a place that is
different from where Volume-XYZ resides in'.

This change adds two new filters to Cinder - SameBackendFilter and
DifferentBackendFilter.  These two filters will look at the scheduler hint
provided by end users (via scheduler hint extension) and filter backends by
checking the 'host' of old and new volumes see if a backend meets the
requirement (being on the same backend as existing volume or not being on
the same backend(s) as existing volume(s)).

For example:
  Volume A is on 'backend 1', to create Volume B on the same backend as A,
  use:
    cinder create --hint same_host=VolA-UUID SIZE

  To create Volume C on different backend than that of A, use:
    cinder create --hint different_host=VolA-UUID SIZE

  Now, to create Volume D on different backend other than those of A and C,
  use:
    cinder create --hint different_host=VolA-UUID --hint
    different_host=VolC-UUID SIZE
  or:
    cinder create --hint different_host="[VolA-UUID, VolC-UUID]" SIZE

implements bp: affinity-antiaffinity-filter

DocImpact

Change-Id: I19f298bd87b0069c0d1bb133202188d3bf65b770
Update cinder generate_sample script

Cinder's generate sample script has fallen a
bit out of date and was no longer working properly
in local venv.

This patch updates it with a working version that
reads the rc file and makes some other updates.

Even better, we'll update the tox.ini file here so
that it actually works, and finally add some more
info to the error message when update check fails
to make is obvious how to run these appropriately.

Change-Id: I2389910d8ece6f737a9609ce4aa05263d9293e14
Merge "Ensure FC ZoneManager is called"
Merge "Fix the section name in CONTRIBUTING.rst"
Merge "Update cinder generate_sample script"
Merge "Add affinity/anti-affinity filters"
Merge "Cinder-api service throws error on SIGHUP signal"