Add attach/detach notifications

Add the following notifications:
  - attach.start
  - attach.end
  - detach.start
  - detach.end

Blueprint: attachment-notifications
Change-Id: I4a4b123468c139bc2bcd948a1e7438c3830b5e42
Don't stop volume service for failed re-export operations

Commit b71570 "Set vol driver initialized before deleting volumes"
changed the manager behavior to call set_initialized() before
attempting to re-export volumes.

Drivers should not be considered initialized before re-export has
succeeded.  Otherwise a failure to export causes the volume
service to stop, when that failure should be handled like any other
failure to initialize.

Closes-Bug: 1257049
Related-Bug: 1232177
Change-Id: Ic6bc89ef3f15dbbc971fdd8c91117cccb5c2801b
Add unit tests for volume reserve and unreserve

This adds unit tests for successful reserving and unreserving, and vice
versa for not being in the right status.

Change-Id: Iaa777055315251efa4a14976e25b9baab222f934
Bump to sqlalchemy-migrate 0.8.2

This allows us to drop some unsightly sqlalchemy-migrate 0.7.3
patching.

The related requirements change is here:

  Icde6248ca102884323d7912bab0f4a716aa294ec

Change-Id: I5f80dfc07f8256716d025002fc1a1f47e58b2142
Adjust RBD delete log level

Set notice of volume no longer existing in RBD backend when attempting
to delete to log INFO level. Also move a comment next to related code.
This is a follow-up to suggestions from
3de7da12d1098ef777305099e5f4a039e536bf99.

Change-Id: I3ff854e0ead79e208106a371e14ec6ac7603d387
Change method name to test_get_volume_stats

Change test method name from test_update_volume_stats2 to
test_get_volume_stats in cinder/tests/test_eqlx.py.

It was pointed out by Change-Id:
I0642bdb911ca72517ed655f795e0055f4c4654b8

Change-Id: Id21c67e3e1151573e69ef21714fbf493f62ad425
Use model_query() in db.*****_destroy

Use model_query() instead of session.query in db.volume_destroy,
db.volume_type_destroy, db.transfer_destroy and db.snapshot_destroy as
other methods use.
model_query function is the query helper which is used in most part of
cinder/db/sqlalchemy/api.py.

Change-Id: I97be252df9d40bb97231e3341d5cedec26af2d93
Closes-Bug: #1256483
Add more logging to migrate_volume_completion

Add a debug message on entering the function, and an info message if
it was called to clean up an error. This is useful because Nova copies
the data of in-use volumes, and if it fails there will only be a
message in the Nova logs.

Change-Id: I546d0bae8639072727ebe23394885d40255ba1d4
Fix typo/misspelled words

Fix type/misspelled words found by this handy tools:
https://github.com/lyda/misspell-check

Some 'typo's were intentional since they are part of function name,
so they are left alone.

Change-Id: I4badda869521659b541d018727a6f71f518e2ee0
Merge "Adjust RBD delete log level"
Merge "Use model_query() in db.*****_destroy"
Merge "Add more logging to migrate_volume_completion"
Merge "Don't stop volume service for failed re-export operations"
Merge "Bump to sqlalchemy-migrate 0.8.2"
Merge "Add unit tests for volume reserve and unreserve"
Merge "Add attach/detach notifications"
All API controllers inherit from wsgi.Controller

Most of the Cinder Public API Controllers inherit from wsgi.Controller,
but still some Cinder Public APIs controllers directly inherit from
object. So it's necessary to unify all the Cinder Public API Controllers
inherit from wsgi.Controller.
1. For code cleanup.
2. When we try to do body valid check in api's put/post method later, we
can use the helper function is_valid_body instead of using try...catch
block.

Change-Id: I88812224e0b182939cfccce63982cb8f95792891
Closes-Bug: #1257198
Merge "Change method name to test_get_volume_stats"
Fixes case insensitive for resp body

Create metadata for a snapshot with key-value set, which key in uppercase
and lowercase(e.g.{"key": "v1", "KEY": "V1"), the server accept the
request and return the key-value set {"key": "v1", "KEY": "V1"}. But the
server just add one metadata because the server is not case sensitive.

The patch will modify the resp body with the one which the server added.

update_all has the same ploblem.

DocImpact
Change-Id: I684049412a4aa84f593e970c87157c74fffdfffe
Closes-Bug: #1255917
Merge "Fixes case insensitive for resp body"