The following pull request was submitted through Github.
It can be accessed and reviewed at: https://github.com/lxc/lxd/pull/7507

This e-mail was sent by the LXC bot, direct replies will not reach the author
unless they happen to be subscribed to this list.

=== Description (from pull-request) ===
One template per device type.

Signed-off-by: Stéphane Graber <stgra...@ubuntu.com>
From 8e2947a16839968fa728b0b8aa1fb8f90e4d7ffa Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?St=C3=A9phane=20Graber?= <stgra...@ubuntu.com>
Date: Tue, 9 Jun 2020 19:14:45 -0400
Subject: [PATCH] lxd/vm: Move to separate devices
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit

One template per device type.

Signed-off-by: Stéphane Graber <stgra...@ubuntu.com>
---
 lxd/instance/drivers/driver_qemu.go           |  54 +++++++-
 lxd/instance/drivers/driver_qemu_templates.go | 118 ++++++++++--------
 2 files changed, 114 insertions(+), 58 deletions(-)

diff --git a/lxd/instance/drivers/driver_qemu.go 
b/lxd/instance/drivers/driver_qemu.go
index b4f19fd9d7..e67a45950e 100644
--- a/lxd/instance/drivers/driver_qemu.go
+++ b/lxd/instance/drivers/driver_qemu.go
@@ -1552,15 +1552,34 @@ func (vm *qemu) generateQemuConfigFile(devConfs 
[]*deviceConfig.RunConfig, fdFil
        var sb *strings.Builder = &strings.Builder{}
 
        err := qemuBase.Execute(sb, map[string]interface{}{
-               "architecture":     vm.architectureName,
-               "ringbufSizeBytes": qmp.RingbufSize,
-               "spicePath":        vm.spicePath(),
+               "architecture": vm.architectureName,
+               "spicePath":    vm.spicePath(),
        })
        if err != nil {
                return "", err
        }
 
        // Now add the dynamic parts of the config.
+       err = vm.addSerialConfig(sb)
+       if err != nil {
+               return "", err
+       }
+
+       err = vm.addSCSIConfig(sb)
+       if err != nil {
+               return "", err
+       }
+
+       err = vm.addBalloonConfig(sb)
+       if err != nil {
+               return "", err
+       }
+
+       err = vm.addRNGConfig(sb)
+       if err != nil {
+               return "", err
+       }
+
        err = vm.addMemoryConfig(sb)
        if err != nil {
                return "", err
@@ -1688,6 +1707,35 @@ func (vm *qemu) addVsockConfig(sb *strings.Builder) 
error {
        })
 }
 
+// addSerialConfig adds the qemu config required for setting up the host->VM 
vsock socket.
+func (vm *qemu) addSerialConfig(sb *strings.Builder) error {
+       return qemuSerial.Execute(sb, map[string]interface{}{
+               "architecture":     vm.architectureName,
+               "ringbufSizeBytes": qmp.RingbufSize,
+       })
+}
+
+// addSCSIConfig adds the qemu config required for setting up the host->VM 
vsock socket.
+func (vm *qemu) addSCSIConfig(sb *strings.Builder) error {
+       return qemuSCSI.Execute(sb, map[string]interface{}{
+               "architecture": vm.architectureName,
+       })
+}
+
+// addBalloonConfig adds the qemu config required for setting up the host->VM 
vsock socket.
+func (vm *qemu) addBalloonConfig(sb *strings.Builder) error {
+       return qemuBalloon.Execute(sb, map[string]interface{}{
+               "architecture": vm.architectureName,
+       })
+}
+
+// addRNGConfig adds the qemu config required for setting up the host->VM 
vsock socket.
+func (vm *qemu) addRNGConfig(sb *strings.Builder) error {
+       return qemuRNG.Execute(sb, map[string]interface{}{
+               "architecture": vm.architectureName,
+       })
+}
+
 // addVGAConfig adds the qemu config required for setting up the host->VM 
vsock socket.
 func (vm *qemu) addVGAConfig(sb *strings.Builder, chassisIndex int) error {
        return qemuVGA.Execute(sb, map[string]interface{}{
diff --git a/lxd/instance/drivers/driver_qemu_templates.go 
b/lxd/instance/drivers/driver_qemu_templates.go
index 69e80ac8cc..5e2a540c39 100644
--- a/lxd/instance/drivers/driver_qemu_templates.go
+++ b/lxd/instance/drivers/driver_qemu_templates.go
@@ -41,6 +41,50 @@ value = "1"
 [boot-opts]
 strict = "on"
 
+# Console
+[chardev "console"]
+backend = "pty"
+
+# Graphical console
+[spice]
+unix = "on"
+addr = "{{.spicePath}}"
+disable-ticketing = "on"
+`))
+
+var qemuMemory = template.Must(template.New("qemuMemory").Parse(`
+# Memory
+[memory]
+size = "{{.memSizeBytes}}B"
+`))
+
+var qemuVsock = template.Must(template.New("qemuVsock").Parse(`
+# Vsock
+{{if eq .architecture "x86_64" "aarch64" -}}
+[device "qemu_pcie4"]
+driver = "pcie-root-port"
+port = "0x13"
+chassis = "4"
+bus = "pcie.0"
+addr = "0x2.0x3"
+{{- end }}
+
+[device]
+guest-cid = "{{.vsockID}}"
+{{if ne .architecture "s390x" -}}
+driver = "vhost-vsock-pci"
+{{if eq .architecture "ppc64le" -}}
+bus = "pci.0"
+{{else -}}
+bus = "qemu_pcie4"
+addr = "0x0"
+{{end -}}
+{{- else}}
+driver = "vhost-vsock-ccw"
+{{- end}}
+`))
+
+var qemuSerial = template.Must(template.New("qemuSerial").Parse(`
 # LXD serial identifier
 [device]
 driver = "virtio-serial"
@@ -53,7 +97,9 @@ chardev = "vserial"
 [chardev "vserial"]
 backend = "ringbuf"
 size = "{{.ringbufSizeBytes}}B"
+`))
 
+var qemuSCSI = template.Must(template.New("qemuSCSI").Parse(`
 # SCSI controller
 {{- if eq .architecture "x86_64" "aarch64" }}
 [device "qemu_pcie1"]
@@ -77,30 +123,9 @@ addr = "0x0"
 {{- else}}
 driver = "virtio-scsi-ccw"
 {{- end}}
+`))
 
-# Balloon driver
-{{- if eq .architecture "x86_64" "aarch64" }}
-[device "qemu_pcie2"]
-driver = "pcie-root-port"
-port = "0x11"
-chassis = "2"
-bus = "pcie.0"
-addr = "0x2.0x1"
-{{- end }}
-
-[device "qemu_ballon"]
-{{- if ne .architecture "s390x"}}
-driver = "virtio-balloon-pci"
-{{- if eq .architecture "ppc64le" }}
-bus = "pci.0"
-{{- else}}
-bus = "qemu_pcie2"
-addr = "0x0"
-{{- end}}
-{{- else}}
-driver = "virtio-balloon-ccw"
-{{- end}}
-
+var qemuRNG = template.Must(template.New("qemuRNG").Parse(`
 # Random number generator
 [object "qemu_rng"]
 qom-type = "rng-random"
@@ -128,47 +153,30 @@ addr = "0x0"
 {{- else}}
 driver = "virtio-rng-ccw"
 {{- end}}
-
-# Console
-[chardev "console"]
-backend = "pty"
-
-# Graphical console
-[spice]
-unix = "on"
-addr = "{{.spicePath}}"
-disable-ticketing = "on"
-`))
-
-var qemuMemory = template.Must(template.New("qemuMemory").Parse(`
-# Memory
-[memory]
-size = "{{.memSizeBytes}}B"
 `))
 
-var qemuVsock = template.Must(template.New("qemuVsock").Parse(`
-# Vsock
-{{if eq .architecture "x86_64" "aarch64" -}}
-[device "qemu_pcie4"]
+var qemuBalloon = template.Must(template.New("qemuBalloon").Parse(`
+# Balloon driver
+{{- if eq .architecture "x86_64" "aarch64" }}
+[device "qemu_pcie2"]
 driver = "pcie-root-port"
-port = "0x13"
-chassis = "4"
+port = "0x11"
+chassis = "2"
 bus = "pcie.0"
-addr = "0x2.0x3"
+addr = "0x2.0x1"
 {{- end }}
 
-[device]
-guest-cid = "{{.vsockID}}"
-{{if ne .architecture "s390x" -}}
-driver = "vhost-vsock-pci"
-{{if eq .architecture "ppc64le" -}}
+[device "qemu_ballon"]
+{{- if ne .architecture "s390x"}}
+driver = "virtio-balloon-pci"
+{{- if eq .architecture "ppc64le" }}
 bus = "pci.0"
-{{else -}}
-bus = "qemu_pcie4"
+{{- else}}
+bus = "qemu_pcie2"
 addr = "0x0"
-{{end -}}
+{{- end}}
 {{- else}}
-driver = "vhost-vsock-ccw"
+driver = "virtio-balloon-ccw"
 {{- end}}
 `))
 
_______________________________________________
lxc-devel mailing list
lxc-devel@lists.linuxcontainers.org
http://lists.linuxcontainers.org/listinfo/lxc-devel

Reply via email to