Changing Sheepdog driver to use correct configuration function

Currently Sheepdog store driver is using configure_add() to handle
those essential options, which are not only be used for image 'add'
handling but also for other key functions e.g. 'get_size', 'get' and
etc. When store driver raises BadStoreConfiguration exception from
configure_add(), Glance will just makes this store be readonly instead
of fully disabled, so the handling for all the essential configurations
should be implemented in configure(), and then if any option of them get
failure the store will be fully disabled instead of being readonly
partially.

Closes-bug: 1302658

Change-Id: Idaa96036515f04ee8414f30990ee638855ede2d2
Signed-off-by: Zhi Yan Liu <zhiyanl@cn.ibm.com>
Fix docstrings in enforce() and check() policy methods

Proper name of the  parameter is 'target', not 'object'.

Change-Id: Ia7a671c9aed644137e4c46452d8d8bf3bc3f2eee
Merge "Changing Sheepdog driver to use correct configuration function"
Resolving the performance issue for image listing of v2 API on server

This is a fix on Glance server side regarding to the former change
Ia6598d3c06a5ff516277053c2b6fa5db744fe9cf for glanceclient.

This change optimized the logic of image query in glance.db.ImageRepo
which running in glance-api server and communicated with glance-registry
service by HTTP based RPC calls. Under original logic, each image entry
in the (paginated) result set query RPC returned needs to query the
relevant tag entry set by a separated RPC again, so for example if we
have 1000 images, and page size equals 20, then the count of RPC calls
will be 1099 times. With fixed new logic, the RPC times have been
reduced, it merged the queries of image and its tag entry into one RPC
call.

As comparison [0], under the fixed new logic, the execution time of
image listing is about 2.5 times as fast as old logic (using
glanceclient cli with registry backend). Then the execution time of v2
api is better then v1 now[1] (about 2 times faster).

[0]
# Original logic

# glanceclient cli, with registry
$ time glance --os-image-api-version 2 image-list | grep 'test-' | wc -l
1000
real	0m10.210s
user	0m1.244s
sys	0m0.080s

# curl, with registry
$ time ./img1000-curl-v2.sh > /dev/null 2>&1
real	0m9.185s
user	0m0.168s
sys	0m0.108s

# Fixed logic

# glanceclient cli, with registry
$ time glance --os-image-api-version 2 image-list | grep 'test-' | wc -l
1000
real	0m3.870s
user	0m1.364s
sys	0m0.076s

# curl, with registry
$ time ./img1000-curl-v2.sh > /dev/null 2>&1
real	0m2.718s
user	0m0.160s
sys	0m0.136s

[1]
$ time glance --os-image-api-version 1 image-list | grep 'test-' | wc -l
1000
real	0m7.426s
user	0m0.936s
sys	0m0.100s

Change-Id: I3402e4594fa945d003a6735c54581fc43d07c6da
Signed-off-by: Zhi Yan Liu <zhiyanl@cn.ibm.com>
Some v2 exceptions raise unicodeError

Use utils.exception_to_str to consistently cast the
excpetion to avoid the unicodeError stack trace.

Change-Id: I54fce91c73adca846ec99ed50a57b95d16428ec1
Closes-Bug: #1339775
Merge "Fix docstrings in enforce() and check() policy methods"
Merge "Some v2 exceptions raise unicodeError"
Merge "Resolving the performance issue for image listing of v2 API on server"