Merge pull request #131 from pkit/bug_fix

fix leaking of unneeded headers to applications
objectquery: simplify closing of file objects

This takes advantage of the file context manager (`with`) to simplify
closure of files. This patch removes several explicit `fp.close()`
statements.
Merge pull request #132 from larsbutler/simplify-fp-handling

objectquery: simplify closing of file objects
add doc regarding CGI environment

most common vars in CGI environment explained
Merge pull request #133 from pkit/doc

add doc regarding CGI environment
objectquery: detailed docstring for `zerovm_query`

This adds a lot of detail about all of the response codes that can be
returned and the possible causes.
Merge pull request #136 from larsbutler/document-zerovm_query

objectquery: detailed docstring for `zerovm_query`
vagrant: improve the local dev env

The git clone on the host is now mapped in to the VM, and changes to the
code in the host dev environment will be reflected inside the VM (after
restarting devstack, of course).

This makes it a lot easier to experiment, debug, and test in a "real"
environment (and not just with the test suite).
Merge pull request #135 from larsbutler/vagrant-dev-env

vagrant: improve the local dev env
objectquery: make zerovm_query a wrapper method

This change moves all of the zerovm_query code to another method:
_do_zerovm_query. zerovm_query now just simply calls it and returns its
return value.

This will allow some flexibility in refactoring the implementation of
this rather long method.
objectquery: zerovm_query: raise instead of return

Instances of `swift.common.swob.Response` can be either returned or
raised as an exception. Due to the monolithic nature of
_do_zerovm_query, raising exceptions for HTTP responses gives us some
more flexibility than simply returning values. This means that the
implementation can be broken up and factored into multiple smaller
subordinate functions. Raising exceptions (and catching/returning a
value to maintain the interface of `zerovm_query`) makes routing these
responses a bit less tedious.
objectquery: debug logging for query responses

This add debug-level logging for all HTTP responses in `zerovm_query`.
vagrant: make swift config script more flexibile

This makes the swift easier to customize by adding arbitrary config
params to each config file.
vagrant: set log level to DEBUG on object nodes
objectquery: message when x-zerocloud-id is absent

An "Internal Server Error" is raised when the `X-Zerocloud-Id` header is
missing, but the http response body didn't say anything about that. This
change adds a helpful message to the response body explaining the
problem.
Merge pull request #137 from larsbutler/objectquery-logging

Debug logging for `zerovm_query`
objectquery: add comment to explain 507 response
objectquery: fix content length mismatch cases

Previously, we only checked if the content-length header was not equal
to the amount of content received in a request. This resulted in a "499
Client Closed Request" (indicating a premature disconnect).

This response could be triggered by content either less then OR greater
than that specified in the conteint-length header. This is a bit weird.

This change alters the check and breaks it into two cases:

- actual content < content-length: 499
- actual content > content-length: 400 (Bad Request)

Tests are updated accordingly.
objectquery: 405 if container req is not GET

Containers can only be read by ZeroVM applications, thus "GET" is the
only supported method.

Previously, anything that wasn't a GET on a container resulted in a "400
Bad Request".
force usage of get_response in objectquery tests

most objectquery tests were using direct call of `zerovm_query()` which was not testing the whole pipeline
changed all tests to use a proper call to middleware app through `get_response()`