~ubuntu-branches/ubuntu/trusty/python-boto/trusty

« back to all changes in this revision

Viewing changes to boto/provider.py

  • Committer: Package Import Robot
  • Author(s): Eric Evans
  • Date: 2012-04-15 20:21:21 UTC
  • mfrom: (1.1.9)
  • Revision ID: package-import@ubuntu.com-20120415202121-3fpf6q355s0xqpyu
Tags: 2.3.0-1
* New upstream release (Closes: #664478)
* Update debian/watch for Boto's move to Github.  Thanks Scott
  Moser. (Closes: #650480)

Show diffs side-by-side

added added

removed removed

Lines of Context:
1
1
# Copyright (c) 2010 Mitch Garnaat http://garnaat.org/
2
2
# Copyright 2010 Google Inc.
3
3
# Copyright (c) 2010, Eucalyptus Systems, Inc.
 
4
# Copyright (c) 2011, Nexenta Systems Inc.
4
5
# All rights reserved.
5
6
#
6
7
# Permission is hereby granted, free of charge, to any person obtaining a
43
44
AUTH_HEADER_KEY = 'auth-header'
44
45
COPY_SOURCE_HEADER_KEY = 'copy-source-header'
45
46
COPY_SOURCE_VERSION_ID_HEADER_KEY = 'copy-source-version-id-header'
 
47
COPY_SOURCE_RANGE_HEADER_KEY = 'copy-source-range-header'
46
48
DELETE_MARKER_HEADER_KEY = 'delete-marker-header'
47
49
DATE_HEADER_KEY = 'date-header'
48
50
METADATA_DIRECTIVE_HEADER_KEY = 'metadata-directive-header'
50
52
SECURITY_TOKEN_HEADER_KEY = 'security-token-header'
51
53
STORAGE_CLASS_HEADER_KEY = 'storage-class'
52
54
MFA_HEADER_KEY = 'mfa-header'
 
55
SERVER_SIDE_ENCRYPTION_KEY = 'server-side-encryption-header'
53
56
VERSION_ID_HEADER_KEY = 'version-id-header'
54
57
 
55
58
STORAGE_COPY_ERROR = 'StorageCopyError'
81
84
        'google' : 'gs'
82
85
    }
83
86
 
 
87
    ChunkedTransferSupport = {
 
88
        'aws' : False,
 
89
        'google' : True
 
90
    }
 
91
 
 
92
    # If you update this map please make sure to put "None" for the
 
93
    # right-hand-side for any headers that don't apply to a provider, rather
 
94
    # than simply leaving that header out (which would cause KeyErrors).
84
95
    HeaderInfoMap = {
85
96
        'aws' : {
86
97
            HEADER_PREFIX_KEY : AWS_HEADER_PREFIX,
90
101
            COPY_SOURCE_HEADER_KEY : AWS_HEADER_PREFIX + 'copy-source',
91
102
            COPY_SOURCE_VERSION_ID_HEADER_KEY : AWS_HEADER_PREFIX +
92
103
                                                'copy-source-version-id',
 
104
            COPY_SOURCE_RANGE_HEADER_KEY : AWS_HEADER_PREFIX +
 
105
                                           'copy-source-range',
93
106
            DATE_HEADER_KEY : AWS_HEADER_PREFIX + 'date',
94
107
            DELETE_MARKER_HEADER_KEY : AWS_HEADER_PREFIX + 'delete-marker',
95
108
            METADATA_DIRECTIVE_HEADER_KEY : AWS_HEADER_PREFIX +
96
109
                                            'metadata-directive',
97
110
            RESUMABLE_UPLOAD_HEADER_KEY : None,
98
111
            SECURITY_TOKEN_HEADER_KEY : AWS_HEADER_PREFIX + 'security-token',
 
112
            SERVER_SIDE_ENCRYPTION_KEY : AWS_HEADER_PREFIX + 'server-side-encryption',
99
113
            VERSION_ID_HEADER_KEY : AWS_HEADER_PREFIX + 'version-id',
100
114
            STORAGE_CLASS_HEADER_KEY : AWS_HEADER_PREFIX + 'storage-class',
101
115
            MFA_HEADER_KEY : AWS_HEADER_PREFIX + 'mfa',
108
122
            COPY_SOURCE_HEADER_KEY : GOOG_HEADER_PREFIX + 'copy-source',
109
123
            COPY_SOURCE_VERSION_ID_HEADER_KEY : GOOG_HEADER_PREFIX +
110
124
                                                'copy-source-version-id',
 
125
            COPY_SOURCE_RANGE_HEADER_KEY : None,
111
126
            DATE_HEADER_KEY : GOOG_HEADER_PREFIX + 'date',
112
127
            DELETE_MARKER_HEADER_KEY : GOOG_HEADER_PREFIX + 'delete-marker',
113
128
            METADATA_DIRECTIVE_HEADER_KEY : GOOG_HEADER_PREFIX  +
114
129
                                            'metadata-directive',
115
130
            RESUMABLE_UPLOAD_HEADER_KEY : GOOG_HEADER_PREFIX + 'resumable',
116
131
            SECURITY_TOKEN_HEADER_KEY : GOOG_HEADER_PREFIX + 'security-token',
 
132
            SERVER_SIDE_ENCRYPTION_KEY : None,
117
133
            # Note that this version header is not to be confused with
118
 
            # the Google Storage 'x-goog-api-version' header.
 
134
            # the Google Cloud Storage 'x-goog-api-version' header.
119
135
            VERSION_ID_HEADER_KEY : GOOG_HEADER_PREFIX + 'version-id',
120
136
            STORAGE_CLASS_HEADER_KEY : None,
121
137
            MFA_HEADER_KEY : None,
139
155
        }
140
156
    }
141
157
 
142
 
    def __init__(self, name, access_key=None, secret_key=None):
 
158
    def __init__(self, name, access_key=None, secret_key=None,
 
159
                 security_token=None):
143
160
        self.host = None
144
161
        self.access_key = access_key
145
162
        self.secret_key = secret_key
 
163
        self.security_token = security_token
146
164
        self.name = name
147
165
        self.acl_class = self.AclClassMap[self.name]
148
166
        self.canned_acls = self.CannedAclsMap[self.name]
183
201
        self.copy_source_header = header_info_map[COPY_SOURCE_HEADER_KEY]
184
202
        self.copy_source_version_id = header_info_map[
185
203
            COPY_SOURCE_VERSION_ID_HEADER_KEY]
 
204
        self.copy_source_range_header = header_info_map[
 
205
            COPY_SOURCE_RANGE_HEADER_KEY]
186
206
        self.date_header = header_info_map[DATE_HEADER_KEY]
187
207
        self.delete_marker = header_info_map[DELETE_MARKER_HEADER_KEY]
188
208
        self.metadata_directive_header = (
190
210
        self.security_token_header = header_info_map[SECURITY_TOKEN_HEADER_KEY]
191
211
        self.resumable_upload_header = (
192
212
            header_info_map[RESUMABLE_UPLOAD_HEADER_KEY])
 
213
        self.server_side_encryption_header = header_info_map[SERVER_SIDE_ENCRYPTION_KEY]
193
214
        self.storage_class_header = header_info_map[STORAGE_CLASS_HEADER_KEY]
194
215
        self.version_id = header_info_map[VERSION_ID_HEADER_KEY]
195
216
        self.mfa_header = header_info_map[MFA_HEADER_KEY]
205
226
    def get_provider_name(self):
206
227
        return self.HostKeyMap[self.name]
207
228
 
 
229
    def supports_chunked_transfer(self):
 
230
        return self.ChunkedTransferSupport[self.name]
 
231
 
208
232
# Static utility method for getting default Provider.
209
233
def get_default():
210
234
    return Provider('aws')