class PVE::Cli def cli_qm cli.sub :qm, "Virtual Machines", aliases: %w[v vm qemu], &lambda {|qm| qm.cmd :list, "List VM-IDs", aliases: ['ls'], &lambda {|node=nil| connect nodes = Proxmox::Node.all nodes = nodes.select {|n| node == n.name } if node nodes.flat_map do |n| n.qemu.map {|c| c.vmid.to_i } end.sort.each {|c| puts c } } qm.cmd :status, "List VMs with status", aliases: [nil], &lambda {|node=nil| connect to = TablizedOutput.new %w[Status HA ID Name Host Uptime CPU Mem/MiB Disk/MiB] nodes = Proxmox::Node.all nodes = nodes.select {|n| node == n.name } if node nodes.each do |n| n.qemu.each &to.method( :virt) end to.print order: [3] } qm.cmd :exec, "Executes Command in VM via qemu-guest-agent", min: 4, &lambda {|name_or_id, *command| connect STDERR.puts "! #{$?.exitstatus}" unless Proxmox::Qemu.find!( name_or_id).exec *command } qm.cmd 'help', '', aliases: ['-h', '--help'], &lambda {|*args| help qm, *args } } end end