~yolanda.robla/glance/precise-security

« back to all changes in this revision

Viewing changes to glance/store/http.py

  • Committer: Bazaar Package Importer
  • Author(s): Soren Hansen
  • Date: 2011-01-19 12:01:32 UTC
  • Revision ID: james.westby@ubuntu.com-20110119120132-uy3vi38a02yq967k
Tags: upstream-0.1.3pre~bzr39
ImportĀ upstreamĀ versionĀ 0.1.3pre~bzr39

Show diffs side-by-side

added added

removed removed

Lines of Context:
 
1
# vim: tabstop=4 shiftwidth=4 softtabstop=4
 
2
 
 
3
# Copyright 2010 OpenStack, LLC
 
4
# All Rights Reserved.
 
5
#
 
6
#    Licensed under the Apache License, Version 2.0 (the "License"); you may
 
7
#    not use this file except in compliance with the License. You may obtain
 
8
#    a copy of the License at
 
9
#
 
10
#         http://www.apache.org/licenses/LICENSE-2.0
 
11
#
 
12
#    Unless required by applicable law or agreed to in writing, software
 
13
#    distributed under the License is distributed on an "AS IS" BASIS, WITHOUT
 
14
#    WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the
 
15
#    License for the specific language governing permissions and limitations
 
16
#    under the License.
 
17
 
 
18
import httplib
 
19
 
 
20
import glance.store
 
21
 
 
22
 
 
23
class HTTPBackend(glance.store.Backend):
 
24
    """ An implementation of the HTTP Backend Adapter """
 
25
 
 
26
    @classmethod
 
27
    def get(cls, parsed_uri, expected_size, conn_class=None):
 
28
        """Takes a parsed uri for an HTTP resource, fetches it, and yields the
 
29
        data.
 
30
        """
 
31
 
 
32
        if conn_class:
 
33
            pass  # use the conn_class passed in
 
34
        elif parsed_uri.scheme == "http":
 
35
            conn_class = httplib.HTTPConnection
 
36
        elif parsed_uri.scheme == "https":
 
37
            conn_class = httplib.HTTPSConnection
 
38
        else:
 
39
            raise glance.store.BackendException(
 
40
                "scheme '%s' not supported for HTTPBackend")
 
41
 
 
42
        conn = conn_class(parsed_uri.netloc)
 
43
        conn.request("GET", parsed_uri.path, "", {})
 
44
 
 
45
        try:
 
46
            return glance.store._file_iter(conn.getresponse(), cls.CHUNKSIZE)
 
47
        finally:
 
48
            conn.close()