'Get a subresource for a bucket or key.
:type subresource: string
:param subresource: The subresource to get.
:type key_name: string
:param key_name: The key to operate on, or None to operate on the
bucket.
:type headers: dict
:param headers: Additional HTTP headers to include in the request.
:type src_version_id: string
:param src_version_id: Optional. The version id of the key to
operate on. If not specified, operate on the newest
version.
:rtype: string
:returns: The value of the subresource.'

def get_subresource(self, subresource, key_name='', headers=None, version_id=None):

    if (not subresource):
        raise TypeError('get_subresource    called    with    subresource=None')
    query_args = subresource
    if version_id:
        query_args += ('&versionId=%s' % version_id)
    response = self.connection.make_request('GET', self.name, key_name, query_args=query_args, headers=headers)
    body = response.read()
    if (response.status != 200):
        raise self.connection.provider.storage_response_error(response.status, response.reason, body)
    return body
