diff --git a/PKGBUILD b/PKGBUILD index 5ac54da..a70e0d7 100644 --- a/PKGBUILD +++ b/PKGBUILD @@ -1,6 +1,6 @@ # Maintainer: Yi-Ting Shih pkgname=vm -pkgver=1.0.0rc2 +pkgver=1.0.0rc3 pkgrel=1 pkgdesc="A QEMU VM management tool" arch=("x86_64") diff --git a/src/etc/config.jsonnet b/src/etc/config.jsonnet index 1235a0b..2384987 100644 --- a/src/etc/config.jsonnet +++ b/src/etc/config.jsonnet @@ -1,35 +1,12 @@ -import 'qemu.libsonnet'; +local qemu = import 'qemu.libsonnet'; { [obj.name]: - default(obj.name) - + resource(obj.cpu, obj.ram) - + net(obj.mac) - + monitor(obj.mac) + qemu.default(obj.name) + + qemu.resource(obj.cpu, obj.ram) + + qemu.net(obj.mac) + + qemu.monitor(obj.mac) for obj in [ - { - name: 'k0scontroller' + i, - cpu: 2, - ram: '2G', - mac: '08:00:00:20:01:1' + i, - } - for i in std.range(1, 3) - ] + [ - { - name: 'k0sworker' + i, - cpu: 4, - ram: '4G', - mac: '08:00:00:20:01:2' + i, - } - for i in std.range(1, 3) - ] + [ - { - name: 'ostest', - cpu: 4, - ram: '8G', - mac: '08:00:00:20:01:73', - }, - ] + [ { name: 'test' + i, cpu: 1, diff --git a/src/lib/qemu.libsonnet b/src/lib/qemu.libsonnet index 6e0dd82..f5fc466 100644 --- a/src/lib/qemu.libsonnet +++ b/src/lib/qemu.libsonnet @@ -1,37 +1,39 @@ -local default(name) = [ - '-enable-kvm', - '-cpu host', - '-drive if=pflash,format=raw,readonly=on,file=/usr/share/edk2/x64/OVMF_CODE.4m.fd', - '-drive if=pflash,format=raw,file=pflash/' + name + '.4m.fd', - '-drive file=img/' + name + '.qcow2,format=qcow2', -]; +{ + default(name):: [ + '-enable-kvm', + '-cpu host', + '-drive if=pflash,format=raw,readonly=on,file=/usr/share/edk2/x64/OVMF_CODE.4m.fd', + '-drive if=pflash,format=raw,file=pflash/' + name + '.4m.fd', + '-drive file=img/' + name + '.qcow2,format=qcow2', + ], -local resource(cpu, ram) = [ - '-smp ' + cpu + ',sockets=1', - '-m ' + ram, -]; + resource(cpu, ram):: [ + '-smp ' + cpu + ',sockets=1', + '-m ' + ram, + ], -local monitor(mac) = [ - '-monitor telnet:localhost:2' + std.split(mac, ':')[4] + std.split(mac, ':')[5] + ',server,nowait,nodelay', -]; + monitor(mac):: [ + '-monitor telnet:localhost:2' + std.split(mac, ':')[4] + std.split(mac, ':')[5] + ',server,nowait,nodelay', + ], -local net(mac, area='test') = [ - '-nic bridge,br=' + area + ',mac=' + mac, -]; + net(mac, area='test'):: [ + '-nic bridge,br=' + area + ',mac=' + mac, + ], -local spice() = [ - '-vga virtio', - '-device virtio-serial-pci', - '-spice port=5555,disable-ticketing=on', - '-device virtserialport,chardev=spicechannel0,name=com.redhat.spice.0', - '-chardev spicevmc,id=spicechannel0,name=vdagent', -]; + spice():: [ + '-vga virtio', + '-device virtio-serial-pci', + '-spice port=5555,disable-ticketing=on', + '-device virtserialport,chardev=spicechannel0,name=com.redhat.spice.0', + '-chardev spicevmc,id=spicechannel0,name=vdagent', + ], -local vnc(display=0) = [ - '-vnc :' + display, -]; + vnc(display=0):: [ + '-vnc :' + display, + ], -local iso(file) = [ - '-boot d', - '-cdrom ' + file, -]; + iso(file):: [ + '-boot d', + '-cdrom ' + file, + ], +}