33 lines
1.0 KiB
Ruby
33 lines
1.0 KiB
Ruby
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
|