filbunke 1.6.0 → 1.7.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/VERSION +1 -1
- data/bin/filbunked +27 -13
- data/doc/examples/http_evict_cache.rb +1 -1
- data/doc/examples/http_file_upload.rb +27 -0
- data/filbunke.gemspec +3 -2
- data/lib/filbunke/callbacks.rb +1 -1
- data/lib/filbunke/client.rb +3 -5
- data/lib/filbunke/daemon.rb +9 -11
- data/lib/filbunke/logger.rb +9 -4
- data/lib/filbunke.rb +6 -6
- metadata +4 -3
data/VERSION
CHANGED
@@ -1 +1 @@
|
|
1
|
-
1.
|
1
|
+
1.7.0
|
data/bin/filbunked
CHANGED
@@ -1,13 +1,13 @@
|
|
1
1
|
#!/usr/bin/env ruby
|
2
2
|
$0=File.join(File.dirname(__FILE__), 'filbunked')
|
3
3
|
require 'rubygems'
|
4
|
-
require 'filbunke'
|
5
4
|
require 'yaml'
|
6
5
|
require 'getoptlong'
|
7
6
|
|
8
7
|
raw_opts = GetoptLong.new(
|
9
8
|
[ '--help', '-h', GetoptLong::NO_ARGUMENT ],
|
10
|
-
[ '--config', '-c', GetoptLong::REQUIRED_ARGUMENT ]
|
9
|
+
[ '--config', '-c', GetoptLong::REQUIRED_ARGUMENT ],
|
10
|
+
[ '--dev', '-d', GetoptLong::NO_ARGUMENT]
|
11
11
|
)
|
12
12
|
|
13
13
|
opts = {}
|
@@ -15,21 +15,35 @@ raw_opts.each do |opt, arg|
|
|
15
15
|
opts[opt] = arg
|
16
16
|
end
|
17
17
|
|
18
|
-
if Process.uid != 0 then
|
19
|
-
puts "Filbunke should be started as root!"
|
20
|
-
exit 1
|
21
|
-
end
|
22
|
-
|
23
18
|
if opts['--help'] || opts['--config'] == nil || opts['--config'] == ""
|
24
19
|
puts "Usage: filbunked -c <config_file.yml>"
|
25
20
|
exit 1
|
26
21
|
else
|
27
|
-
|
22
|
+
if opts['--dev'] then
|
23
|
+
require 'lib/filbunke.rb'
|
24
|
+
|
28
25
|
config_file = File.read(opts['--config'])
|
29
26
|
config = YAML.load(config_file)
|
30
|
-
daemon = Filbunke::Daemon.new(config)
|
31
|
-
|
32
|
-
daemon.run!
|
33
|
-
|
34
|
-
|
27
|
+
daemon = Filbunke::Daemon.new(config, true)
|
28
|
+
|
29
|
+
daemon.run!
|
30
|
+
else
|
31
|
+
if Process.uid != 0 then
|
32
|
+
puts "Filbunke should be started as root!"
|
33
|
+
exit 1
|
34
|
+
end
|
35
|
+
|
36
|
+
require 'filbunke'
|
37
|
+
child_process = fork {
|
38
|
+
config_file = File.read(opts['--config'])
|
39
|
+
config = YAML.load(config_file)
|
40
|
+
daemon = Filbunke::Daemon.new(config)
|
41
|
+
Process::UID.change_privilege(Etc.getpwnam(config["user"]).uid)
|
42
|
+
daemon.run!
|
43
|
+
}
|
44
|
+
Process.detach(child_process)
|
45
|
+
|
46
|
+
end
|
47
|
+
|
48
|
+
|
35
49
|
end
|
@@ -0,0 +1,27 @@
|
|
1
|
+
class HttpFileUpload < Filbunke::Callbacks
|
2
|
+
|
3
|
+
def on_update(file, local_file_path)
|
4
|
+
begin
|
5
|
+
basename = ::File.basename(file.path).chomp(".json")
|
6
|
+
basename =~ /(.*)_(\d)/
|
7
|
+
classname = $1
|
8
|
+
id = $2
|
9
|
+
|
10
|
+
upload_path = "/model/update/#{classname}/#{id}"
|
11
|
+
file_contents = ::File.read(local_file_path)
|
12
|
+
|
13
|
+
uri = "http://#{@config['host']}:#{@config['port']}#{upload_path}"
|
14
|
+
response = ::Typhoeus::Request.post(uri, :body => file_contents)
|
15
|
+
|
16
|
+
if response.code.to_i != 200
|
17
|
+
@logger.log "Failed to upload: #{file.path}. Server responded with #{response.code}"
|
18
|
+
end
|
19
|
+
|
20
|
+
rescue StandardError => e
|
21
|
+
@logger.log(e.message)
|
22
|
+
@logger.log("Failed to upload entry: #{file.path}")
|
23
|
+
@logger.log(e.backtrace.join("\n"))
|
24
|
+
end
|
25
|
+
end
|
26
|
+
|
27
|
+
end
|
data/filbunke.gemspec
CHANGED
@@ -5,11 +5,11 @@
|
|
5
5
|
|
6
6
|
Gem::Specification.new do |s|
|
7
7
|
s.name = %q{filbunke}
|
8
|
-
s.version = "1.
|
8
|
+
s.version = "1.7.0"
|
9
9
|
|
10
10
|
s.required_rubygems_version = Gem::Requirement.new(">= 0") if s.respond_to? :required_rubygems_version=
|
11
11
|
s.authors = ["Wouter de Bie"]
|
12
|
-
s.date = %q{
|
12
|
+
s.date = %q{2011-02-14}
|
13
13
|
s.default_executable = %q{filbunked}
|
14
14
|
s.description = %q{Filbunke client and library}
|
15
15
|
s.email = %q{wouter@deltaprojects.se}
|
@@ -23,6 +23,7 @@ Gem::Specification.new do |s|
|
|
23
23
|
"bin/filbunked",
|
24
24
|
"doc/examples/filbunke_config.yml",
|
25
25
|
"doc/examples/http_evict_cache.rb",
|
26
|
+
"doc/examples/http_file_upload.rb",
|
26
27
|
"doc/examples/init_script",
|
27
28
|
"filbunke.gemspec",
|
28
29
|
"lib/filbunke.rb",
|
data/lib/filbunke/callbacks.rb
CHANGED
data/lib/filbunke/client.rb
CHANGED
@@ -61,8 +61,6 @@ module Filbunke
|
|
61
61
|
failure ? last_checkpoint : (new_checkpoint || last_checkpoint)
|
62
62
|
end
|
63
63
|
|
64
|
-
|
65
|
-
|
66
64
|
def update_files!(last_checkpoint)
|
67
65
|
with_updated_files(last_checkpoint) {}
|
68
66
|
end
|
@@ -132,9 +130,9 @@ module Filbunke
|
|
132
130
|
end
|
133
131
|
end
|
134
132
|
|
135
|
-
def run_callbacks(file)
|
133
|
+
def run_callbacks(file, local_file_path)
|
136
134
|
@callbacks.each do |callback|
|
137
|
-
callback.on_update(file)
|
135
|
+
callback.on_update(file, local_file_path)
|
138
136
|
end
|
139
137
|
end
|
140
138
|
|
@@ -191,7 +189,7 @@ module Filbunke
|
|
191
189
|
@logger.log "Failed to update file #{file.url}, error code = #{response.code}"
|
192
190
|
success = false
|
193
191
|
end
|
194
|
-
run_callbacks(file) if success
|
192
|
+
run_callbacks(file, local_file_path) if success
|
195
193
|
rescue StandardError => e
|
196
194
|
@logger.log "Failed to update file #{file.url}: #{e.message}"
|
197
195
|
success = false
|
data/lib/filbunke/daemon.rb
CHANGED
@@ -1,15 +1,15 @@
|
|
1
1
|
module Filbunke
|
2
2
|
class Daemon
|
3
3
|
|
4
|
-
def initialize(config)
|
4
|
+
def initialize(config, local = false)
|
5
5
|
@config = config
|
6
6
|
@clients = []
|
7
|
-
setup_clients!
|
8
|
-
write_pid!(config["pid_file"])
|
7
|
+
setup_clients!(local)
|
8
|
+
write_pid!(config["pid_file"]) unless local
|
9
9
|
end
|
10
10
|
|
11
|
-
def setup_clients!
|
12
|
-
@logger = Logger.new(@config["log_file"])
|
11
|
+
def setup_clients!(local = false)
|
12
|
+
@logger = Logger.new(@config["log_file"], local)
|
13
13
|
@logger.log("Initializing filbunked")
|
14
14
|
@config["repositories"].each do |repository_name, repository_config|
|
15
15
|
@logger.log("Initializing repository: #{repository_name}")
|
@@ -39,12 +39,10 @@ module Filbunke
|
|
39
39
|
@logger.log("Starting filbunked version #{version}")
|
40
40
|
while true
|
41
41
|
begin
|
42
|
-
|
43
|
-
|
44
|
-
|
45
|
-
|
46
|
-
end
|
47
|
-
|
42
|
+
@clients.each do |client|
|
43
|
+
new_checkpoint = client.update_files!(checkpoint_for_repository(client.repository))
|
44
|
+
update_checkpoint_for_repository(client.repository, new_checkpoint)
|
45
|
+
end
|
48
46
|
rescue StandardError => e
|
49
47
|
@logger.log("Died.. #{e.message}")
|
50
48
|
exit 1
|
data/lib/filbunke/logger.rb
CHANGED
@@ -1,13 +1,18 @@
|
|
1
1
|
module Filbunke
|
2
2
|
class Logger
|
3
3
|
|
4
|
-
def initialize(log_file_name)
|
5
|
-
@
|
4
|
+
def initialize(log_file_name, local)
|
5
|
+
@local = local
|
6
|
+
@log_file = ::File.open(log_file_name, "a") unless local
|
6
7
|
end
|
7
8
|
|
8
9
|
def log(msg)
|
9
|
-
@
|
10
|
-
|
10
|
+
if @local then
|
11
|
+
puts "#{Time.now}: #{msg}"
|
12
|
+
else
|
13
|
+
@log_file.write("#{Time.now}: #{msg}\n")
|
14
|
+
@log_file.flush
|
15
|
+
end
|
11
16
|
end
|
12
17
|
|
13
18
|
end
|
data/lib/filbunke.rb
CHANGED
@@ -6,9 +6,9 @@ require 'digest/md5'
|
|
6
6
|
require 'typhoeus'
|
7
7
|
require 'open4'
|
8
8
|
|
9
|
-
require 'filbunke/client.rb'
|
10
|
-
require 'filbunke/file.rb'
|
11
|
-
require 'filbunke/repository.rb'
|
12
|
-
require 'filbunke/callbacks.rb'
|
13
|
-
require 'filbunke/daemon.rb'
|
14
|
-
require 'filbunke/logger.rb'
|
9
|
+
require File.expand_path(File.dirname(__FILE__) + '/filbunke/client.rb')
|
10
|
+
require File.expand_path(File.dirname(__FILE__) + '/filbunke/file.rb')
|
11
|
+
require File.expand_path(File.dirname(__FILE__) + '/filbunke/repository.rb')
|
12
|
+
require File.expand_path(File.dirname(__FILE__) + '/filbunke/callbacks.rb')
|
13
|
+
require File.expand_path(File.dirname(__FILE__) + '/filbunke/daemon.rb')
|
14
|
+
require File.expand_path(File.dirname(__FILE__) + '/filbunke/logger.rb')
|
metadata
CHANGED
@@ -4,9 +4,9 @@ version: !ruby/object:Gem::Version
|
|
4
4
|
prerelease: false
|
5
5
|
segments:
|
6
6
|
- 1
|
7
|
-
-
|
7
|
+
- 7
|
8
8
|
- 0
|
9
|
-
version: 1.
|
9
|
+
version: 1.7.0
|
10
10
|
platform: ruby
|
11
11
|
authors:
|
12
12
|
- Wouter de Bie
|
@@ -14,7 +14,7 @@ autorequire:
|
|
14
14
|
bindir: bin
|
15
15
|
cert_chain: []
|
16
16
|
|
17
|
-
date:
|
17
|
+
date: 2011-02-14 00:00:00 +01:00
|
18
18
|
default_executable: filbunked
|
19
19
|
dependencies:
|
20
20
|
- !ruby/object:Gem::Dependency
|
@@ -88,6 +88,7 @@ files:
|
|
88
88
|
- bin/filbunked
|
89
89
|
- doc/examples/filbunke_config.yml
|
90
90
|
- doc/examples/http_evict_cache.rb
|
91
|
+
- doc/examples/http_file_upload.rb
|
91
92
|
- doc/examples/init_script
|
92
93
|
- filbunke.gemspec
|
93
94
|
- lib/filbunke.rb
|