pve/lib/pve/cli/node.rb

47 lines
1.4 KiB
Ruby

class PVE::Cli
def cli_node
cli.sub :node, "Nodes" do |nod_cli|
nod_cli.cmd :status, "Lists nodes with status", aliases: [nil], &lambda {|node=nil|
connect
to = TablizedOutput.new %w[Status Node Uptime CPU Mem/MiB Disk/MiB]
nodes = Proxmox::Node.all
nodes = nodes.select {|n| node == n.name } if node
nodes.each do |n|
to.push [
n.status,
n.node,
Measured.seconds( n.uptime),
"%.02f/%d" % [n.cpu, n.maxcpu],
"#{Measured.bytes( n.mem)}/#{Measured.bytes( n.maxmem)}",
"#{Measured.bytes( n.disk)}/#{Measured.bytes( n.maxdisk)}",
]
end
to.print order: [1]
}
nod_cli.cmd :exec, "Executes command on node", min: 4 do |name, *args|
connect
STDERR.puts "! #{$?.exitstatus}" unless Proxmox::Node.find_by_name!( name).exec *args
end
nod_cli.cmd :enter, "Enter Console of node" do |name, *args|
connect
STDERR.puts "! #{$?.exitstatus}" unless Proxmox::Node.find_by_name!( name).enter *args
end
nod_cli.sub :task, "Inspect tasks" do |tcli|
tcli.cmd :list, "List done tasks", aliases: [nil, 'ls'], &lambda {|node|
connect
Proxmox::Node.find_by_name!( node).
tasks.
map( &:upid).
sort.
each {|upid| puts upid }
}
end
nod_cli.cmd( 'help', '', aliases: ['-h', '--help']) {|*args| help nod_cli, *args }
end
end
end