47 lines
1.4 KiB
Ruby
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
|