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