class LeoManager::Client
Constants
- CMD_ADD_BUCKET
- CMD_COMPACT_RESUME
- CMD_COMPACT_START
- CMD_COMPACT_START_ALL
- CMD_COMPACT_STATUS
- CMD_COMPACT_SUSPEND
- CMD_CRE_USER
- CMD_DELETE_BUCKET
- CMD_DEL_ENDPOINT
- CMD_DEL_USER
- CMD_DETACH
- CMD_DU
- CMD_GET_BUCKETS
- CMD_GET_ENDPOINTS
- CMD_GET_USERS
- CMD_LOGIN
- CMD_PURGE
- CMD_REBALANCE
- CMD_RECOVER_FILE
- CMD_RECOVER_NODE
- CMD_RECOVER_RING
- CMD_RESUME
- CMD_SET_ENDPOINT
- CMD_START
- CMD_STATUS
- CMD_SUSPEND
- CMD_UPDATE_ACL
- CMD_UPD_USER_PASS
- CMD_UPD_USER_ROLE
- CMD_VERSION
- CMD_WHEREIS
- USER_ROLES
Attributes
current_server[R]
the server currently connected
servers[R]
servers to connect
Public Class Methods
Public Instance Methods
add_bucket(bucket_name, access_key_id)
click to toggle source
compact_resume(node)
click to toggle source
compact_start(node, num_of_targets_or_all, num_of_concurrents=nil)
click to toggle source
Execute data comaction in a storage node
Args¶ ↑
node :: a storage node num_of_targets_or_all :: a number of targets - [integer | all] num_of_concurrents :: a number of concurrents
Return¶ ↑
Result
# File lib/leo_manager_client.rb, line 177 def compact_start(node, num_of_targets_or_all, num_of_concurrents=nil) case num_of_targets_or_all.to_s when /^all$/i Result.new(call(CMD_COMPACT_START_ALL % node)) else num_of_concurrents = num_of_concurrents ? Integer(num_of_concurrents) : "" Result.new(call(CMD_COMPACT_START % [node, Integer(num_of_targets_or_all), num_of_concurrents])) end end
compact_status(node)
click to toggle source
compact_suspend(node)
click to toggle source
create_user(user_id, password=nil)
click to toggle source
delete_bucket(bucket_name, access_key_id)
click to toggle source
delete_endpoint(endpoint)
click to toggle source
Remove an endpoint from the system
Args¶ ↑
endpoint :: an endpoint
Return¶ ↑
nil
# File lib/leo_manager_client.rb, line 287 def delete_endpoint(endpoint) Result.new(call(CMD_DEL_ENDPOINT % endpoint)) end
Also aliased as: del_endpoint
delete_user(user_id)
click to toggle source
detach(node)
click to toggle source
disconnect!()
click to toggle source
du(node)
click to toggle source
get_buckets()
click to toggle source
get_endpoints()
click to toggle source
get_users()
click to toggle source
login(user_id, password)
click to toggle source
purge(path)
click to toggle source
rebalance()
click to toggle source
recover_file(path)
click to toggle source
recover_node(node)
click to toggle source
recover_ring(node)
click to toggle source
resume(node)
click to toggle source
set_endpoint(endpoint)
click to toggle source
start()
click to toggle source
status(node=nil)
click to toggle source
suspend(node)
click to toggle source
update_acl(bucket, accesskey, acl)
click to toggle source
update_user_password(user_id, new_password)
click to toggle source
update_user_role(user_id, role)
click to toggle source
Update role of a user
Args¶ ↑
user_id :: user id role :: operation role of a user
Return¶ ↑
Result
# File lib/leo_manager_client.rb, line 240 def update_user_role(user_id, role) role = role.to_sym if role.is_a? String role = USER_ROLES[role] if role.is_a? Symbol Result.new(call(CMD_UPD_USER_ROLE % [user_id, role])) end
version()
click to toggle source
whereis(path)
click to toggle source
Private Instance Methods
call(command)
click to toggle source
Send a request to LeoFS Manager
- Return
-
Hash
# File lib/leo_manager_client.rb, line 434 def call(command) response = nil begin @mutex.synchronize do @socket.print "#{command}\r\n" line = @socket.readline warn line if $DEBUG response = JSON.parse(line, symbolize_names: true) end rescue EOFError => ex warn "EOFError occured (server: #{@current_server})" reconnect rescue => ex reconnect raise "An Error occured: #{ex.class} (server: #{@current_server})\n#{ex.message}" else raise response[:error] if response.has_key?(:error) return response end end
connect()
click to toggle source
Connect to LeoFS Manager
# File lib/leo_manager_client.rb, line 401 def connect retry_count = 0 begin @socket = TCPSocket.new(@current_server[:host], @current_server[:port]) rescue => ex warn "Faild to connect: #{ex.class} (server: #{@current_server})" warn ex.message retry_count += 1 if retry_count > 3 set_current_server warn "Connecting another server: #{@current_server}" retry_count = 0 end sleep 1 retry end @socket.autoclose = true nil end
disconnect()
click to toggle source
# File lib/leo_manager_client.rb, line 421 def disconnect @socket.close if @socket && !@socket.closed? end
parse_servers(servers)
click to toggle source
¶ ↑
PRIVATE
¶ ↑
# File lib/leo_manager_client.rb, line 379 def parse_servers(servers) servers.map do |server| if server.is_a? String m = server.match(/(?<host>.+):(?<port>[0-9]{1,5})/) host = m[:host] port = Integer(m[:port]) raise "Invalid Port Number: #{port}" unless 0 <= port && port <= 65535 { :host => host, :port => port, :retry_count => 0 } else server end end end
reconnect()
click to toggle source
# File lib/leo_manager_client.rb, line 425 def reconnect disconnect sleep 1 connect end
set_current_server()
click to toggle source
# File lib/leo_manager_client.rb, line 394 def set_current_server @servers.delete(@current_server) if @current_server raise "No servers to connect" if @servers.empty? @current_server = @servers.first end