rabbit_swift 0.3.3 → 0.3.4
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/README.md +6 -3
- data/RELEASE.md +6 -0
- data/bin/get_object.rb +34 -7
- data/lib/rabbit_swift/client.rb +1 -23
- data/lib/rabbit_swift/version.rb +1 -1
- metadata +1 -1
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 1ecd97e29955444c2365dc1500a1078253454efc
|
4
|
+
data.tar.gz: e36ef4e5bc5a2c7c53eb029d1886806df7a9221e
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 9db3dd8e17ae2cd2be533ee9d788dcc68aaed1446c38115af9eb590840fcc2a92d93f244d98babc0498f40a766de423691a1906c57e3065ada9a57325712b7e4
|
7
|
+
data.tar.gz: 8d19c17c4efac7fe87771cc307430ea9835459a93f5a5bcd3b235e3d17edbdc9ea168af5fcc8246c31d9722c69e54156484e330163b2cc2c87248e04d8736199
|
data/README.md
CHANGED
@@ -1,6 +1,6 @@
|
|
1
1
|
# RabbitSwift
|
2
2
|
|
3
|
-
OpenStack Swift
|
3
|
+
OpenStack Object Storage (Swift) Client
|
4
4
|
|
5
5
|
## Installation
|
6
6
|
|
@@ -52,11 +52,14 @@ Or install it yourself as:
|
|
52
52
|
|
53
53
|
### Support Static Large Object
|
54
54
|
|
55
|
-
####
|
55
|
+
#### SLO Object Download Support
|
56
|
+
rabbit_swift_client.get_object(token, url) --> enable SLO object download
|
57
|
+
|
58
|
+
#### When upload object size 5GB over. Auto change mode SLO
|
56
59
|
rabbit_swift_client.upload(token, dest_url, 5GB_under_file.zip) --> normal upload
|
57
60
|
rabbit_swift_client.upload(token, dest_url, 5GB_over_file.zip) --> static large object upload
|
58
61
|
|
59
|
-
#### SLO Flow
|
62
|
+
#### SLO Upload Flow
|
60
63
|
1. split file
|
61
64
|
2. upload split files
|
62
65
|
3. upload manifest file
|
data/RELEASE.md
CHANGED
data/bin/get_object.rb
CHANGED
@@ -27,10 +27,18 @@ File.open conf_path do |file|
|
|
27
27
|
end
|
28
28
|
end
|
29
29
|
|
30
|
+
# TODO
|
31
|
+
def decode_large_object_md5(encode_md5)
|
32
|
+
encode_md5.gsub(/\"/,'')
|
33
|
+
end
|
34
|
+
|
30
35
|
rabbit_swift_client = RabbitSwift::Client.new(swift_conf_json)
|
31
36
|
token = rabbit_swift_client.get_token
|
32
37
|
response = rabbit_swift_client.head(token, url)
|
33
38
|
|
39
|
+
is_large_object = response.has_key?('X-Static-Large-Object') ? true : false
|
40
|
+
original_file_size = response['Content-Length']
|
41
|
+
|
34
42
|
response.each do |k, v|
|
35
43
|
puts k + ' = '+ v
|
36
44
|
end
|
@@ -39,13 +47,32 @@ original_file_md5 = response['Etag']
|
|
39
47
|
|
40
48
|
save_file_path = rabbit_swift_client.get_object(token, url, dest_path)
|
41
49
|
puts save_file_path
|
42
|
-
save_file_md5 = Digest::MD5.file(save_file_path).to_s
|
43
50
|
|
44
|
-
|
45
|
-
|
51
|
+
#ref SLO md5 https://github.com/openstack/python-swiftclient/blob/06c73c6020e5af873e3ce245a27035da3448de7b/swiftclient/service.py#L330
|
52
|
+
# self._expected_etag: ヘッダーのEtag
|
53
|
+
# 保存したファイルのmd5 self._actual_md5
|
46
54
|
|
47
|
-
|
48
|
-
|
55
|
+
save_file_size = File.size(save_file_path)
|
56
|
+
puts original_file_size + ' --> original_file_size'
|
57
|
+
puts save_file_size.to_s + ' --> save_file_size'
|
58
|
+
|
59
|
+
if original_file_size.to_i == save_file_size
|
60
|
+
puts 'OK! file size'
|
49
61
|
else
|
50
|
-
puts 'BAD
|
51
|
-
end
|
62
|
+
puts 'BAD file size ><'
|
63
|
+
end
|
64
|
+
|
65
|
+
|
66
|
+
#when SLO don't check md5. check file size
|
67
|
+
if (!is_large_object)
|
68
|
+
save_file_md5 = Digest::MD5.file(save_file_path).to_s
|
69
|
+
puts original_file_md5 + ' --> original_file_md5'
|
70
|
+
puts save_file_md5 + ' --> save_file_md5'
|
71
|
+
|
72
|
+
if original_file_md5 == save_file_md5
|
73
|
+
puts 'OK! MD5 checksum'
|
74
|
+
else
|
75
|
+
puts 'BAD MD5 checksum ><'
|
76
|
+
end
|
77
|
+
end
|
78
|
+
|
data/lib/rabbit_swift/client.rb
CHANGED
@@ -10,8 +10,8 @@ module RabbitSwift
|
|
10
10
|
|
11
11
|
class Client
|
12
12
|
|
13
|
-
UPLOAD_SUCCESS_HTTP_STATUS_CODE = 201
|
14
13
|
HEAD_SUCCESS_HTTP_STATUS_CODE = 200
|
14
|
+
UPLOAD_SUCCESS_HTTP_STATUS_CODE = 201
|
15
15
|
DELETE_SUCCESS_HTTP_STATUS_CODE = 204
|
16
16
|
|
17
17
|
@token = nil
|
@@ -80,28 +80,6 @@ module RabbitSwift
|
|
80
80
|
dest_file
|
81
81
|
end
|
82
82
|
|
83
|
-
# TODO
|
84
|
-
def get_static_large_object(token, url, dest_folder = nil)
|
85
|
-
auth_header = {
|
86
|
-
'X-Auth-Token' => token
|
87
|
-
}
|
88
|
-
query = {
|
89
|
-
'format' => 'json'
|
90
|
-
}
|
91
|
-
end
|
92
|
-
|
93
|
-
def list(token, url)
|
94
|
-
auth_header = {
|
95
|
-
'X-Auth-Token' => token
|
96
|
-
}
|
97
|
-
query = {
|
98
|
-
'format' => 'json'
|
99
|
-
}
|
100
|
-
http_client = HTTPClient.new
|
101
|
-
response = http_client.get(URI.parse(URI.encode(url)), query, auth_header)
|
102
|
-
JSON.load(response.body)
|
103
|
-
end
|
104
|
-
|
105
83
|
def get_meta_data(token, url)
|
106
84
|
response = head(token, url)
|
107
85
|
meta_data = {}
|
data/lib/rabbit_swift/version.rb
CHANGED