mogilefs-client 3.2.0.rc1 → 3.2.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- data/GIT-VERSION-GEN +1 -1
- data/lib/mogilefs/admin.rb +48 -13
- data/lib/mogilefs/backend.rb +2 -0
- data/test/fresh.rb +12 -3
- data/test/test_fresh.rb +6 -0
- metadata +125 -179
data/GIT-VERSION-GEN
CHANGED
data/lib/mogilefs/admin.rb
CHANGED
@@ -37,7 +37,7 @@ class MogileFS::Admin < MogileFS::Client
|
|
37
37
|
# "altmask"=>""}]
|
38
38
|
|
39
39
|
def get_hosts(hostid = nil)
|
40
|
-
to_i =
|
40
|
+
to_i = %w(hostid http_port http_get_port)
|
41
41
|
clean('hosts', 'host',
|
42
42
|
@backend.get_hosts(hostid ? { :hostid => hostid } : {}), true, to_i)
|
43
43
|
end
|
@@ -59,16 +59,18 @@ class MogileFS::Admin < MogileFS::Client
|
|
59
59
|
# "mb_total"=>666666}]
|
60
60
|
|
61
61
|
def get_devices(devid = nil)
|
62
|
-
to_i =
|
63
|
-
"mb_asof" => true, "mb_free" => true,
|
64
|
-
"mb_used" => true, "mb_total" => true ,
|
65
|
-
"devid" => true, "weight" => true, "hostid" => true
|
66
|
-
}
|
62
|
+
to_i = %w(mb_asof mb_free mb_used mb_total devid weight hostid)
|
67
63
|
rv = @backend.get_devices(devid ? { :devid => devid } : {})
|
68
64
|
rv = clean('devices', 'dev', rv, true, to_i)
|
69
65
|
rv.each do |row|
|
70
66
|
u = row["utilization"] and
|
71
67
|
row["utilization"] = nil == u ? nil : u.to_f
|
68
|
+
case row["reject_bad_md5"]
|
69
|
+
when "1"
|
70
|
+
row["reject_bad_md5"] = true
|
71
|
+
when "0"
|
72
|
+
row["reject_bad_md5"] = false
|
73
|
+
end
|
72
74
|
end
|
73
75
|
end
|
74
76
|
|
@@ -93,7 +95,7 @@ class MogileFS::Admin < MogileFS::Client
|
|
93
95
|
# "key"=>"new_new_key"}]
|
94
96
|
|
95
97
|
def list_fids(from_fid, count = 100)
|
96
|
-
to_i =
|
98
|
+
to_i = %w(fid devcount length)
|
97
99
|
# :to is now :count internally in mogilefsd
|
98
100
|
clean('fid_count', 'fid_',
|
99
101
|
@backend.list_fids(:from => from_fid, :to => count), true, to_i)
|
@@ -163,7 +165,7 @@ class MogileFS::Admin < MogileFS::Client
|
|
163
165
|
have_replpolicy = false
|
164
166
|
|
165
167
|
domains = {}
|
166
|
-
to_i =
|
168
|
+
to_i = %w(mindevcount)
|
167
169
|
(1..res['domains'].to_i).each do |i|
|
168
170
|
domain = clean "domain#{i}classes", "domain#{i}class", res, false, to_i
|
169
171
|
|
@@ -254,6 +256,26 @@ class MogileFS::Admin < MogileFS::Client
|
|
254
256
|
! @backend.delete_host(:host => host).nil?
|
255
257
|
end
|
256
258
|
|
259
|
+
##
|
260
|
+
# Creates device with Integer +devid+ on +host+
|
261
|
+
# +host+ may be an integer for hostid or String for hostname
|
262
|
+
def create_device(host, devid, opts = {})
|
263
|
+
raise MogileFS::ReadOnlyError if readonly?
|
264
|
+
opts = opts.dup
|
265
|
+
|
266
|
+
case host
|
267
|
+
when Integer
|
268
|
+
opts[:hostid] = host
|
269
|
+
when String
|
270
|
+
opts[:hostname] = host
|
271
|
+
else
|
272
|
+
raise ArgumentError, "host=#{host.inspect} is not a String or Integer"
|
273
|
+
end
|
274
|
+
|
275
|
+
opts[:devid] = devid
|
276
|
+
! @backend.create_device(opts).nil?
|
277
|
+
end
|
278
|
+
|
257
279
|
##
|
258
280
|
# Changes the device status of +device+ on +host+ to +state+ which can be
|
259
281
|
# 'alive', 'down', or 'dead'.
|
@@ -263,6 +285,16 @@ class MogileFS::Admin < MogileFS::Client
|
|
263
285
|
! @backend.set_state(:host => host, :device => device, :state => state).nil?
|
264
286
|
end
|
265
287
|
|
288
|
+
##
|
289
|
+
# Changes the device weight of +device+ on +host+ to +weight+.
|
290
|
+
# +weight+ should be a non-negative Integer. Devices with higher
|
291
|
+
# +weight+ values are more likely to be chosen for reads and writes.
|
292
|
+
def change_device_weight(host, device, weight)
|
293
|
+
raise MogileFS::ReadOnlyError if readonly?
|
294
|
+
opts = { :host => host, :device => device, :weight => weight }
|
295
|
+
! @backend.set_weight(opts).nil?
|
296
|
+
end
|
297
|
+
|
266
298
|
# reschedules all deferred replication, returns a hash with the number
|
267
299
|
# of files rescheduled:
|
268
300
|
#
|
@@ -330,18 +362,21 @@ class MogileFS::Admin < MogileFS::Client
|
|
330
362
|
# Returns:
|
331
363
|
#
|
332
364
|
# [{"status"=>"alive",
|
333
|
-
# "http_get_port"=>
|
334
|
-
# "http_port"=>
|
335
|
-
# "hostid"=>
|
336
|
-
# "hostip"=>"",
|
365
|
+
# "http_get_port"=>nil,
|
366
|
+
# "http_port"=>7600,
|
367
|
+
# "hostid"=>1,
|
368
|
+
# "hostip"=>"192.168.1.3",
|
337
369
|
# "hostname"=>"rur-1",
|
338
|
-
# "remoteroot"=>"/mnt/mogilefs/rur-1",
|
339
370
|
# "altip"=>"",
|
340
371
|
# "altmask"=>""}]
|
341
372
|
|
342
373
|
def clean(count, prefix, res, underscore = true, to_i = [])
|
343
374
|
empty = ""
|
344
375
|
underscore = underscore ? '_' : empty
|
376
|
+
|
377
|
+
# convert array to hash for O(1) lookups
|
378
|
+
to_i = to_i.inject({}) { |m,k| m[k] = m }
|
379
|
+
|
345
380
|
keys = res.keys
|
346
381
|
(1..res[count].to_i).map do |i|
|
347
382
|
re = /^#{prefix}#{i}#{underscore}/
|
data/lib/mogilefs/backend.rb
CHANGED
@@ -114,6 +114,7 @@ class MogileFS::Backend
|
|
114
114
|
add_idempotent_command :list_fids
|
115
115
|
add_idempotent_command :stats
|
116
116
|
add_idempotent_command :get_domains
|
117
|
+
add_command :create_device
|
117
118
|
add_command :create_domain
|
118
119
|
add_command :delete_domain
|
119
120
|
add_command :create_class
|
@@ -124,6 +125,7 @@ class MogileFS::Backend
|
|
124
125
|
add_command :update_host
|
125
126
|
add_command :delete_host
|
126
127
|
add_command :set_state
|
128
|
+
add_command :set_weight
|
127
129
|
add_command :replicate_now
|
128
130
|
|
129
131
|
def shutdown_unlocked(do_raise = false) # :nodoc:
|
data/test/fresh.rb
CHANGED
@@ -124,12 +124,21 @@ EOF
|
|
124
124
|
assert File.directory?("#@docroot/dev2")
|
125
125
|
yield_for_monitor_update { @admin.get_hosts.empty? or break }
|
126
126
|
|
127
|
-
|
128
|
-
|
127
|
+
me = @admin.get_hosts.find { |x| x["hostname"] == "me" }
|
128
|
+
assert_instance_of Hash, me, me.inspect
|
129
|
+
assert_kind_of Integer, me["hostid"], me
|
130
|
+
assert_equal true, @admin.create_device(me["hostid"], 1)
|
129
131
|
yield_for_monitor_update { @admin.get_devices.empty? or break }
|
130
132
|
wait_for_usage_file "dev1"
|
131
|
-
|
133
|
+
assert_equal true, @admin.create_device("me", 2)
|
132
134
|
wait_for_usage_file "dev2"
|
135
|
+
|
136
|
+
# MogileFS::Server 2.60+ shows reject_bad_md5 monitor status
|
137
|
+
dev = @admin.get_devices[0]
|
138
|
+
if dev.include?("reject_bad_md5")
|
139
|
+
assert [true, false].include?(dev["reject_bad_md5"])
|
140
|
+
end
|
141
|
+
|
133
142
|
out = err = nil
|
134
143
|
tries = 0
|
135
144
|
begin
|
data/test/test_fresh.rb
CHANGED
@@ -6,6 +6,12 @@ class TestMogFresh < Test::Unit::TestCase
|
|
6
6
|
alias setup setup_mogilefs
|
7
7
|
alias teardown teardown_mogilefs
|
8
8
|
|
9
|
+
def test_change_device_weight
|
10
|
+
add_host_device_domain
|
11
|
+
assert_equal true, @admin.change_device_weight("me", 1, 50)
|
12
|
+
assert_equal 50, @admin.get_devices(1)[0]["weight"]
|
13
|
+
end
|
14
|
+
|
9
15
|
def test_list_keys_invalid_domain
|
10
16
|
add_host_device_domain
|
11
17
|
domain = @domain + ".non-existent"
|
metadata
CHANGED
@@ -1,208 +1,154 @@
|
|
1
|
-
--- !ruby/object:Gem::Specification
|
1
|
+
--- !ruby/object:Gem::Specification
|
2
2
|
name: mogilefs-client
|
3
|
-
version: !ruby/object:Gem::Version
|
4
|
-
|
5
|
-
|
6
|
-
|
3
|
+
version: !ruby/object:Gem::Version
|
4
|
+
hash: 15
|
5
|
+
prerelease:
|
6
|
+
segments:
|
7
|
+
- 3
|
8
|
+
- 2
|
9
|
+
- 0
|
10
|
+
version: 3.2.0
|
7
11
|
platform: ruby
|
8
|
-
authors:
|
12
|
+
authors:
|
9
13
|
- Eric Wong
|
10
14
|
autorequire:
|
11
15
|
bindir: bin
|
12
16
|
cert_chain: []
|
13
|
-
|
14
|
-
|
15
|
-
|
17
|
+
|
18
|
+
date: 2012-06-29 00:00:00 Z
|
19
|
+
dependencies:
|
20
|
+
- !ruby/object:Gem::Dependency
|
16
21
|
name: hoe
|
17
|
-
requirement: !ruby/object:Gem::Requirement
|
18
|
-
none: false
|
19
|
-
requirements:
|
20
|
-
- - ~>
|
21
|
-
- !ruby/object:Gem::Version
|
22
|
-
version: '2.12'
|
23
|
-
type: :development
|
24
22
|
prerelease: false
|
25
|
-
|
23
|
+
requirement: &id001 !ruby/object:Gem::Requirement
|
26
24
|
none: false
|
27
|
-
requirements:
|
25
|
+
requirements:
|
28
26
|
- - ~>
|
29
|
-
- !ruby/object:Gem::Version
|
30
|
-
|
31
|
-
|
32
|
-
|
33
|
-
|
34
|
-
|
27
|
+
- !ruby/object:Gem::Version
|
28
|
+
hash: 27
|
29
|
+
segments:
|
30
|
+
- 2
|
31
|
+
- 12
|
32
|
+
version: "2.12"
|
33
|
+
type: :development
|
34
|
+
version_requirements: *id001
|
35
|
+
description: |-
|
36
|
+
A MogileFS client library for Ruby. MogileFS is an open source
|
37
|
+
distributed filesystem, see: http://mogilefs.org for more details. This
|
38
|
+
library allows any Ruby application to read, write and delete files in a
|
39
|
+
MogileFS instance.
|
40
|
+
email:
|
35
41
|
- normalperson@yhbt.net
|
36
|
-
executables:
|
37
|
-
-
|
38
|
-
bW9n
|
42
|
+
executables:
|
43
|
+
- mog
|
39
44
|
extensions: []
|
40
|
-
|
41
|
-
|
42
|
-
|
43
|
-
files:
|
44
|
-
-
|
45
|
-
|
46
|
-
-
|
47
|
-
|
48
|
-
-
|
49
|
-
|
50
|
-
-
|
51
|
-
|
52
|
-
-
|
53
|
-
|
54
|
-
-
|
55
|
-
|
56
|
-
-
|
57
|
-
|
58
|
-
-
|
59
|
-
|
60
|
-
-
|
61
|
-
|
62
|
-
-
|
63
|
-
|
64
|
-
-
|
65
|
-
|
66
|
-
-
|
67
|
-
|
68
|
-
-
|
69
|
-
|
70
|
-
-
|
71
|
-
|
72
|
-
-
|
73
|
-
|
74
|
-
-
|
75
|
-
|
76
|
-
-
|
77
|
-
|
78
|
-
-
|
79
|
-
|
80
|
-
-
|
81
|
-
|
82
|
-
-
|
83
|
-
|
84
|
-
-
|
85
|
-
|
86
|
-
-
|
87
|
-
|
88
|
-
-
|
89
|
-
|
90
|
-
-
|
91
|
-
|
92
|
-
-
|
93
|
-
|
94
|
-
-
|
95
|
-
|
96
|
-
-
|
97
|
-
|
98
|
-
-
|
99
|
-
|
100
|
-
-
|
101
|
-
|
102
|
-
-
|
103
|
-
|
104
|
-
-
|
105
|
-
|
106
|
-
-
|
107
|
-
|
108
|
-
-
|
109
|
-
|
110
|
-
-
|
111
|
-
bGliL21vZ2lsZWZzL3NvY2tldC5yYg==
|
112
|
-
- !binary |-
|
113
|
-
bGliL21vZ2lsZWZzL3NvY2tldC9rZ2lvLnJi
|
114
|
-
- !binary |-
|
115
|
-
bGliL21vZ2lsZWZzL3NvY2tldC9wdXJlX3J1YnkucmI=
|
116
|
-
- !binary |-
|
117
|
-
bGliL21vZ2lsZWZzL3NvY2tldF9jb21tb24ucmI=
|
118
|
-
- !binary |-
|
119
|
-
bGliL21vZ2lsZWZzL3V0aWwucmI=
|
120
|
-
- !binary |-
|
121
|
-
c2V0dXAucmI=
|
122
|
-
- !binary |-
|
123
|
-
dGVzdC8uZ2l0aWdub3Jl
|
124
|
-
- !binary |-
|
125
|
-
dGVzdC9hZ2dyZWdhdGUucmI=
|
126
|
-
- !binary |-
|
127
|
-
dGVzdC9leGVjLnJi
|
128
|
-
- !binary |-
|
129
|
-
dGVzdC9mcmVzaC5yYg==
|
130
|
-
- !binary |-
|
131
|
-
dGVzdC9pbnRlZ3JhdGlvbi5yYg==
|
132
|
-
- !binary |-
|
133
|
-
dGVzdC9zZXR1cC5yYg==
|
134
|
-
- !binary |-
|
135
|
-
dGVzdC9zb2NrZXRfdGVzdC5yYg==
|
136
|
-
- !binary |-
|
137
|
-
dGVzdC90ZXN0X2FkbWluLnJi
|
138
|
-
- !binary |-
|
139
|
-
dGVzdC90ZXN0X2JhY2tlbmQucmI=
|
140
|
-
- !binary |-
|
141
|
-
dGVzdC90ZXN0X2JpZ2ZpbGUucmI=
|
142
|
-
- !binary |-
|
143
|
-
dGVzdC90ZXN0X2NsaWVudC5yYg==
|
144
|
-
- !binary |-
|
145
|
-
dGVzdC90ZXN0X2RiX2JhY2tlbmQucmI=
|
146
|
-
- !binary |-
|
147
|
-
dGVzdC90ZXN0X2ZyZXNoLnJi
|
148
|
-
- !binary |-
|
149
|
-
dGVzdC90ZXN0X2h0dHBfcmVhZGVyLnJi
|
150
|
-
- !binary |-
|
151
|
-
dGVzdC90ZXN0X21vZ2lsZWZzLnJi
|
152
|
-
- !binary |-
|
153
|
-
dGVzdC90ZXN0X21vZ2lsZWZzX2ludGVncmF0aW9uLnJi
|
154
|
-
- !binary |-
|
155
|
-
dGVzdC90ZXN0X21vZ2lsZWZzX2ludGVncmF0aW9uX2xhcmdlX3BpcGUucmI=
|
156
|
-
- !binary |-
|
157
|
-
dGVzdC90ZXN0X21vZ2lsZWZzX2ludGVncmF0aW9uX2xpc3Rfa2V5cy5yYg==
|
158
|
-
- !binary |-
|
159
|
-
dGVzdC90ZXN0X21vZ2lsZWZzX3NvY2tldF9rZ2lvLnJi
|
160
|
-
- !binary |-
|
161
|
-
dGVzdC90ZXN0X21vZ2lsZWZzX3NvY2tldF9wdXJlLnJi
|
162
|
-
- !binary |-
|
163
|
-
dGVzdC90ZXN0X21vZ3N0b3JlZF9yYWNrLnJi
|
164
|
-
- !binary |-
|
165
|
-
dGVzdC90ZXN0X21vZ3Rvb2xfYmlnZmlsZS5yYg==
|
166
|
-
- !binary |-
|
167
|
-
dGVzdC90ZXN0X215c3FsLnJi
|
168
|
-
- !binary |-
|
169
|
-
dGVzdC90ZXN0X3Bvb2wucmI=
|
170
|
-
- !binary |-
|
171
|
-
TWFuaWZlc3QudHh0
|
172
|
-
- !binary |-
|
173
|
-
Q2hhbmdlTG9n
|
174
|
-
- !binary |-
|
175
|
-
TkVXUw==
|
176
|
-
- !binary |-
|
177
|
-
bGliL21vZ2lsZWZzL3ZlcnNpb24ucmI=
|
45
|
+
|
46
|
+
extra_rdoc_files:
|
47
|
+
- Manifest.txt
|
48
|
+
files:
|
49
|
+
- .document
|
50
|
+
- .gitignore
|
51
|
+
- .wrongdoc.yml
|
52
|
+
- GIT-VERSION-GEN
|
53
|
+
- GNUmakefile
|
54
|
+
- HACKING
|
55
|
+
- History
|
56
|
+
- LICENSE
|
57
|
+
- README
|
58
|
+
- Rakefile
|
59
|
+
- TODO
|
60
|
+
- bin/mog
|
61
|
+
- examples/stale_fid_checker.rb
|
62
|
+
- lib/mogilefs.rb
|
63
|
+
- lib/mogilefs/admin.rb
|
64
|
+
- lib/mogilefs/backend.rb
|
65
|
+
- lib/mogilefs/bigfile.rb
|
66
|
+
- lib/mogilefs/bigfile/filter.rb
|
67
|
+
- lib/mogilefs/chunker.rb
|
68
|
+
- lib/mogilefs/client.rb
|
69
|
+
- lib/mogilefs/copy_stream.rb
|
70
|
+
- lib/mogilefs/http_file.rb
|
71
|
+
- lib/mogilefs/http_reader.rb
|
72
|
+
- lib/mogilefs/mogilefs.rb
|
73
|
+
- lib/mogilefs/mysql.rb
|
74
|
+
- lib/mogilefs/new_file.rb
|
75
|
+
- lib/mogilefs/new_file/common.rb
|
76
|
+
- lib/mogilefs/new_file/content_range.rb
|
77
|
+
- lib/mogilefs/new_file/stream.rb
|
78
|
+
- lib/mogilefs/new_file/tempfile.rb
|
79
|
+
- lib/mogilefs/new_file/writer.rb
|
80
|
+
- lib/mogilefs/paths_size.rb
|
81
|
+
- lib/mogilefs/pool.rb
|
82
|
+
- lib/mogilefs/socket.rb
|
83
|
+
- lib/mogilefs/socket/kgio.rb
|
84
|
+
- lib/mogilefs/socket/pure_ruby.rb
|
85
|
+
- lib/mogilefs/socket_common.rb
|
86
|
+
- lib/mogilefs/util.rb
|
87
|
+
- setup.rb
|
88
|
+
- test/.gitignore
|
89
|
+
- test/aggregate.rb
|
90
|
+
- test/exec.rb
|
91
|
+
- test/fresh.rb
|
92
|
+
- test/integration.rb
|
93
|
+
- test/setup.rb
|
94
|
+
- test/socket_test.rb
|
95
|
+
- test/test_admin.rb
|
96
|
+
- test/test_backend.rb
|
97
|
+
- test/test_bigfile.rb
|
98
|
+
- test/test_client.rb
|
99
|
+
- test/test_db_backend.rb
|
100
|
+
- test/test_fresh.rb
|
101
|
+
- test/test_http_reader.rb
|
102
|
+
- test/test_mogilefs.rb
|
103
|
+
- test/test_mogilefs_integration.rb
|
104
|
+
- test/test_mogilefs_integration_large_pipe.rb
|
105
|
+
- test/test_mogilefs_integration_list_keys.rb
|
106
|
+
- test/test_mogilefs_socket_kgio.rb
|
107
|
+
- test/test_mogilefs_socket_pure.rb
|
108
|
+
- test/test_mogstored_rack.rb
|
109
|
+
- test/test_mogtool_bigfile.rb
|
110
|
+
- test/test_mysql.rb
|
111
|
+
- test/test_pool.rb
|
112
|
+
- Manifest.txt
|
113
|
+
- ChangeLog
|
114
|
+
- NEWS
|
115
|
+
- lib/mogilefs/version.rb
|
178
116
|
- .gemtest
|
179
117
|
homepage: http://bogomips.org/mogilefs-client
|
180
118
|
licenses: []
|
119
|
+
|
181
120
|
post_install_message:
|
182
|
-
rdoc_options:
|
121
|
+
rdoc_options:
|
183
122
|
- --main
|
184
123
|
- README
|
185
|
-
require_paths:
|
124
|
+
require_paths:
|
186
125
|
- lib
|
187
|
-
required_ruby_version: !ruby/object:Gem::Requirement
|
126
|
+
required_ruby_version: !ruby/object:Gem::Requirement
|
188
127
|
none: false
|
189
|
-
requirements:
|
190
|
-
- -
|
191
|
-
- !ruby/object:Gem::Version
|
192
|
-
|
193
|
-
|
128
|
+
requirements:
|
129
|
+
- - ">="
|
130
|
+
- !ruby/object:Gem::Version
|
131
|
+
hash: 3
|
132
|
+
segments:
|
133
|
+
- 0
|
134
|
+
version: "0"
|
135
|
+
required_rubygems_version: !ruby/object:Gem::Requirement
|
194
136
|
none: false
|
195
|
-
requirements:
|
196
|
-
- -
|
197
|
-
- !ruby/object:Gem::Version
|
198
|
-
|
137
|
+
requirements:
|
138
|
+
- - ">="
|
139
|
+
- !ruby/object:Gem::Version
|
140
|
+
hash: 3
|
141
|
+
segments:
|
142
|
+
- 0
|
143
|
+
version: "0"
|
199
144
|
requirements: []
|
145
|
+
|
200
146
|
rubyforge_project: seattlerb
|
201
|
-
rubygems_version: 1.8.
|
147
|
+
rubygems_version: 1.8.24
|
202
148
|
signing_key:
|
203
149
|
specification_version: 3
|
204
150
|
summary: MogileFS client library for Ruby
|
205
|
-
test_files:
|
151
|
+
test_files:
|
206
152
|
- test/test_http_reader.rb
|
207
153
|
- test/test_mogilefs_integration_list_keys.rb
|
208
154
|
- test/test_db_backend.rb
|