filecluster 0.3.10 → 0.3.11
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/bin/fc-manage +9 -0
- data/lib/daemon/global_daemon_thread.rb +0 -3
- data/lib/fc/item.rb +1 -1
- data/lib/fc/version.rb +1 -1
- data/lib/manage/item.rb +96 -0
- data/lib/manage.rb +1 -0
- metadata +5 -4
data/bin/fc-manage
CHANGED
@@ -64,6 +64,15 @@ Command:
|
|
64
64
|
list show all FC::Var-s
|
65
65
|
show <variable> show current value for variable
|
66
66
|
change <variable> change variable
|
67
|
+
}],
|
68
|
+
'item' => [
|
69
|
+
'show and manage items',
|
70
|
+
%q{Usage: fc-manage [options] item <command>
|
71
|
+
Command:
|
72
|
+
info <name> show item info, name can contain ? and *
|
73
|
+
add_local <storage name> <path> <policy id/name> add file in local storage as item (as <path> name) with policy
|
74
|
+
add <path> <name> <policy id/name> add file as item <name> with policy
|
75
|
+
rm <name> delete item
|
67
76
|
}]
|
68
77
|
}
|
69
78
|
desc = %q{Get info and manage for storages, policies and items.
|
@@ -60,9 +60,6 @@ class GlobalDaemonThread < BaseThread
|
|
60
60
|
storage = src_storage.get_proper_storage_for_copy(row['size'], item_storages) unless storage
|
61
61
|
end
|
62
62
|
if storage
|
63
|
-
puts row
|
64
|
-
puts src_storage.name+'>'
|
65
|
-
puts storage.name
|
66
63
|
FC::Item.new(:id => row['item_id']).make_item_storage(storage, 'copy')
|
67
64
|
else
|
68
65
|
error 'No available storage', :item_id => row['item_id']
|
data/lib/fc/item.rb
CHANGED
@@ -24,7 +24,7 @@ module FC
|
|
24
24
|
raise 'Name is empty' if item_params[:name].empty?
|
25
25
|
raise 'Zero size path' if item_params[:size] == 0
|
26
26
|
|
27
|
-
if local_path.include?(item_name)
|
27
|
+
if local_path.include?(item_name) && !options[:not_local]
|
28
28
|
storage = policy.get_create_storages.detect do |s|
|
29
29
|
s.host == FC::Storage.curr_host && local_path.index(s.path) == 0 && local_path.sub(s.path, '') == item_params[:name]
|
30
30
|
end
|
data/lib/fc/version.rb
CHANGED
data/lib/manage/item.rb
ADDED
@@ -0,0 +1,96 @@
|
|
1
|
+
def item_info
|
2
|
+
name = ARGV[2] || ''
|
3
|
+
name = name.gsub('_', '\\_').gsub('%', '\\%').gsub('?', '_').gsub('*', '%')
|
4
|
+
count = FC::DB.query("SELECT count(*) as cnt FROM #{FC::Item.table_name} WHERE name like '#{name}'").first['cnt']
|
5
|
+
puts "Find #{count} items:"
|
6
|
+
if (count > 1)
|
7
|
+
items = FC::DB.query("SELECT name FROM #{FC::Item.table_name} WHERE name like '#{name}' ORDER BY id DESC LIMIT 100")
|
8
|
+
items.each{|r| puts r["name"]}
|
9
|
+
puts "Last item:"
|
10
|
+
end
|
11
|
+
item = FC::DB.query("SELECT i.id, i.name, tag, outer_id, p.name as policy, size, status, time, i.copies FROM #{FC::Item.table_name} as i, #{FC::Policy.table_name} as p WHERE i.name like '#{name}' AND p.id=policy_id ORDER BY i.id DESC LIMIT 1").first
|
12
|
+
if item
|
13
|
+
item_storages = FC::DB.query("SELECT storage_name, status, time FROM #{FC::ItemStorage.table_name} WHERE item_id=#{item["id"]}")
|
14
|
+
puts %Q{
|
15
|
+
ID: #{item["id"]}
|
16
|
+
Outer id: #{item["outer_id"]}
|
17
|
+
Name: #{item["name"]}
|
18
|
+
Status: #{item["status"]}
|
19
|
+
Tag: #{item["tag"]}
|
20
|
+
Policy: #{item["policy"]}
|
21
|
+
Size: #{size_to_human(item["size"])}
|
22
|
+
Time: #{Time.at(item["time"])}
|
23
|
+
Copies: #{item["copies"]}}
|
24
|
+
if item_storages.size > 0
|
25
|
+
puts "Item on storages:"
|
26
|
+
item_storages.each do |r|
|
27
|
+
s = " #{r["storage_name"]}:"
|
28
|
+
s << " "*[(22-s.length), 1].max
|
29
|
+
s << case r["status"]
|
30
|
+
when "ready" then colorize_string("ready", :green)
|
31
|
+
when "error" then colorize_string("ready", :red)
|
32
|
+
else r["status"]
|
33
|
+
end
|
34
|
+
s << " - #{Time.at(r["time"])}"
|
35
|
+
puts s
|
36
|
+
end
|
37
|
+
end
|
38
|
+
end
|
39
|
+
end
|
40
|
+
|
41
|
+
def item_add
|
42
|
+
path = ARGV[2] || ''
|
43
|
+
name = ARGV[3] || ''
|
44
|
+
policy = FC::Policy.where('id = ?', ARGV[4]).first
|
45
|
+
policy = FC::Policy.where('name = ?', ARGV[4]).first unless policy
|
46
|
+
puts "Policy #{ARGV[4]} not found." unless policy
|
47
|
+
|
48
|
+
if policy
|
49
|
+
begin
|
50
|
+
item = FC::Item.create_from_local(path, name, policy, :tag => 'fc-manage-add', :replace => true, :not_local => true)
|
51
|
+
item_storage = item.get_item_storages.first
|
52
|
+
storage = FC::Storage.where('name = ?', item_storage.storage_name).first
|
53
|
+
puts "Saved as #{storage.name+':'+storage.path+item.name}"
|
54
|
+
rescue Exception => e
|
55
|
+
puts e.message
|
56
|
+
end
|
57
|
+
end
|
58
|
+
end
|
59
|
+
|
60
|
+
def item_add_local
|
61
|
+
storage = FC::Storage.where('name = ?', ARGV[2]).first
|
62
|
+
puts "Storage #{ARGV[2]} not found." unless storage
|
63
|
+
name = ARGV[3] || ''
|
64
|
+
policy = FC::Policy.where('id = ?', ARGV[4]).first
|
65
|
+
policy = FC::Policy.where('name = ?', ARGV[4]).first unless policy
|
66
|
+
puts "Policy #{ARGV[4]} not found." unless policy
|
67
|
+
|
68
|
+
if policy && storage
|
69
|
+
path = (storage.path+name).gsub('//', '/') unless name.index(storage.path) == 0
|
70
|
+
begin
|
71
|
+
item = FC::Item.create_from_local(path, name, policy, :tag => 'fc-manage-add-local', :replace => true)
|
72
|
+
item_storage = item.get_item_storages.first
|
73
|
+
storage = FC::Storage.where('name = ?', item_storage.storage_name).first
|
74
|
+
puts "Saved as #{storage.name+':'+storage.path+item.name}"
|
75
|
+
rescue Exception => e
|
76
|
+
puts e.message
|
77
|
+
end
|
78
|
+
end
|
79
|
+
end
|
80
|
+
|
81
|
+
def item_rm
|
82
|
+
name = ARGV[2] || ''
|
83
|
+
item = FC::Item.where('name = ?', name).first
|
84
|
+
if !item
|
85
|
+
puts "Item #{name} not found."
|
86
|
+
else
|
87
|
+
s = Readline.readline("Delete? (y/n) ", false).strip.downcase
|
88
|
+
puts ""
|
89
|
+
if s == "y" || s == "yes"
|
90
|
+
item.mark_deleted
|
91
|
+
puts "ok"
|
92
|
+
else
|
93
|
+
puts "Canceled."
|
94
|
+
end
|
95
|
+
end
|
96
|
+
end
|
data/lib/manage.rb
CHANGED
metadata
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: filecluster
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.3.
|
4
|
+
version: 0.3.11
|
5
5
|
prerelease:
|
6
6
|
platform: ruby
|
7
7
|
authors:
|
@@ -9,7 +9,7 @@ authors:
|
|
9
9
|
autorequire:
|
10
10
|
bindir: bin
|
11
11
|
cert_chain: []
|
12
|
-
date: 2014-
|
12
|
+
date: 2014-09-18 00:00:00.000000000 Z
|
13
13
|
dependencies:
|
14
14
|
- !ruby/object:Gem::Dependency
|
15
15
|
name: mysql2
|
@@ -148,6 +148,7 @@ files:
|
|
148
148
|
- lib/filecluster.rb
|
149
149
|
- lib/manage.rb
|
150
150
|
- lib/manage/copy_rules.rb
|
151
|
+
- lib/manage/item.rb
|
151
152
|
- lib/manage/policies.rb
|
152
153
|
- lib/manage/show.rb
|
153
154
|
- lib/manage/storages.rb
|
@@ -180,7 +181,7 @@ required_ruby_version: !ruby/object:Gem::Requirement
|
|
180
181
|
version: '0'
|
181
182
|
segments:
|
182
183
|
- 0
|
183
|
-
hash:
|
184
|
+
hash: -2994617914936702479
|
184
185
|
required_rubygems_version: !ruby/object:Gem::Requirement
|
185
186
|
none: false
|
186
187
|
requirements:
|
@@ -189,7 +190,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
|
|
189
190
|
version: '0'
|
190
191
|
segments:
|
191
192
|
- 0
|
192
|
-
hash:
|
193
|
+
hash: -2994617914936702479
|
193
194
|
requirements: []
|
194
195
|
rubyforge_project:
|
195
196
|
rubygems_version: 1.8.24
|