~racb/s3aptmirror/by_hash

« back to all changes in this revision

Viewing changes to s3uploadobj.py

  • Committer: Ben Howard
  • Date: 2012-07-20 20:57:50 UTC
  • Revision ID: ben.howard@canonical.com-20120720205750-nfmmbk7dtcptjpkm
Reverting large change

Show diffs side-by-side

added added

removed removed

Lines of Context:
16
16
 
17
17
class S3UploadObject():
18
18
 
19
 
    def __init__(self,
20
 
        name=None,
21
 
        cache_file=None,
22
 
        remote_url=None,
23
 
        md5=None,
24
 
        md5_encoded=None,
25
 
        remote_md5=None,
26
 
        remote_md5_encoded=None,
27
 
        remote_path=None,
28
 
        size=None,
29
 
        temp_name=None,
30
 
        key_name=None,
31
 
        content_type=None,
32
 
        ):
33
 
 
34
 
        """
35
 
        Standard attributes of a file destined for S3 upload
36
 
        """
37
 
        self.obj = {}
38
 
        self.obj['name'] = name
39
 
        self.obj['key_name'] = key_name
40
 
        self.obj['temp_name'] = temp_name
41
 
        self.obj['cache_file'] = cache_file
42
 
        self.obj['remote_url'] = remote_url
43
 
        self.obj['remote_path'] = remote_path
44
 
        self.obj['md5'] = md5
45
 
        self.obj['md5_encoded'] = md5_encoded
46
 
        self.obj['remote_md5'] = remote_md5
47
 
        self.obj['remote_md5_encoded'] = remote_md5_encoded
48
 
        self.obj['size'] = size
49
 
        self.obj['remote_size'] = size
50
 
        self.obj['Content-Type'] = content_type
51
 
 
52
 
    def get_value(self, name):
53
 
        """
54
 
        return values
55
 
        """
56
 
 
57
 
        try:
58
 
            return self.obj[name]
59
 
 
60
 
        except KeyError, e:
61
 
            return None
62
 
 
63
 
    def set_value(self, name, value):
64
 
        self.obj[name] = value
65
 
 
66
 
    def same(self, name):
67
 
        """
68
 
        Compares local to remote values
69
 
        """
70
 
 
71
 
        try:
72
 
            if self.obj[name] == self.obj[ "remote_%s" % name ]:
73
 
                return True
74
 
            else:
75
 
                return False
76
 
 
77
 
        except KeyError, e:
78
 
            return False
79
 
 
80
 
    def get_value_pairs(self, name):
81
 
        """
82
 
        Returns local and remote values if set
83
 
        """
84
 
 
85
 
        try:
86
 
            return self.obj[name], self.obj["remote_%s" % name]
87
 
 
88
 
        except KeyError, e:
89
 
            return False
90
 
 
91
 
    def set_md5_pair(self,md5, encoded):
92
 
        """
93
 
        Set MD5 pair of hex and base64 encoded MD5 from a tuple)
94
 
        """
95
 
        self.obj['md5'] = md5
96
 
        self.obj['md5_encoded'] = encoded
97
 
 
98
 
    def get_md5(self):
99
 
        return self.obj['md5'], self.obj['md5_encoded']
100
 
 
101
 
    def md5_cache_file(self):
102
 
        """
103
 
        Compute the MD5 using BOTO
104
 
        """
105
 
 
106
 
        key = Key()
107
 
 
108
 
        if self.obj['cache_file']:
109
 
 
110
 
            fname = self.obj['cache_file']
111
 
            f_open = open( fname )
112
 
            self.obj['md5'], self.obj['md5_encoded'] = key.compute_md5( f_open )
113
 
            f_open.close()
114
 
 
115
 
        else:
116
 
            raise Exception("VALUE_NOT_SET", "cache_file has not been set")
117
 
 
118
 
        key.close()
119
 
        del key
120
 
 
121
 
    def dump(self):
122
 
        return self.obj
123
 
 
124
 
# vi: ts=4 expandtab
 
19
        def __init__(self, name=None, cache_file=None, remote_url=None, md5=None, md5_encoded=None,
 
20
                        remote_md5=None, remote_md5_encoded=None, size=None, temp_name=None, key_name=None, content_type=None):
 
21
 
 
22
                """
 
23
                Standard attributes of a file destined for S3 upload
 
24
                """
 
25
                self.obj = {}
 
26
                self.obj['name'] = name
 
27
                self.obj['key_name'] = key_name
 
28
                self.obj['temp_name'] = temp_name
 
29
                self.obj['cache_file'] = cache_file
 
30
                self.obj['remote_url'] = remote_url
 
31
                self.obj['md5'] = md5
 
32
                self.obj['md5_encoded'] = md5_encoded
 
33
                self.obj['remote_md5'] = remote_md5
 
34
                self.obj['remote_md5_encoded'] = remote_md5_encoded
 
35
                self.obj['size'] = size
 
36
                self.obj['remote_size'] = size
 
37
                self.obj['Content-Type'] = content_type
 
38
 
 
39
        def get_value(self, name):
 
40
                """
 
41
                return values
 
42
                """
 
43
 
 
44
                try:
 
45
                        return self.obj[name]
 
46
 
 
47
                except KeyError, e:
 
48
                        return None
 
49
 
 
50
        def set_value(self, name, value):
 
51
                self.obj[name] = value
 
52
 
 
53
        def same(self, name):
 
54
                """
 
55
                Compares local to remote values
 
56
                """
 
57
 
 
58
                try:
 
59
                        if self.obj[name] == self.obj[ "remote_%s" % name ]:
 
60
                                return True
 
61
                        else:
 
62
                                return False
 
63
 
 
64
                except KeyError, e:
 
65
                        return False
 
66
 
 
67
        def get_value_pairs(self, name):
 
68
                """
 
69
                Returns local and remote values if set
 
70
                """
 
71
 
 
72
                try:
 
73
                        return self.obj[name], self.obj["remote_%s" % name]
 
74
 
 
75
                except KeyError, e:
 
76
                        return False
 
77
 
 
78
        def set_md5_pair(self,md5, encoded):
 
79
                """
 
80
                Set MD5 pair of hex and base64 encoded MD5 from a tuple)
 
81
                """
 
82
                self.obj['md5'] = md5
 
83
                self.obj['md5_encoded'] = encoded
 
84
 
 
85
        def get_md5(self):
 
86
                return self.obj['md5'], self.obj['md5_encoded']
 
87
 
 
88
        def md5_cache_file(self):
 
89
                """
 
90
                Compute the MD5 using BOTO
 
91
                """
 
92
 
 
93
                key = Key()
 
94
 
 
95
                if self.obj['cache_file']:
 
96
 
 
97
                        fname = self.obj['cache_file']
 
98
                        f_open = open( fname )
 
99
                        self.obj['md5'], self.obj['md5_encoded'] = key.compute_md5( f_open )
 
100
                        f_open.close()
 
101
 
 
102
                else:
 
103
                        raise Exception("VALUE_NOT_SET", "cache_file has not been set")
 
104
 
 
105
                key.close()
 
106
                del key
 
107
 
 
108
        def dump(self):
 
109
                return self.obj