Skip to content

Commit e8be52f

Browse files
author
Misha Sakhnov
authored
Merge branch 'main' into sharnoff/plugin-init-metrics
2 parents deb0a43 + e9e73d4 commit e8be52f

File tree

15 files changed

+150
-35
lines changed

15 files changed

+150
-35
lines changed

Makefile

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -140,7 +140,7 @@ run-test:
140140
# otherwise it fails with actions/checkout on self-hosted GitHub runners
141141
# ref: https://github.com/kubernetes-sigs/controller-runtime/pull/2245
142142
export KUBEBUILDER_ASSETS="$(shell $(ENVTEST) use $(ENVTEST_K8S_VERSION) --bin-dir $(LOCALBIN) -p path)"; \
143-
find $(KUBEBUILDER_ASSETS) -type d -exec chmod 0755 {} \; ; \
143+
find . $(KUBEBUILDER_ASSETS) -type d -exec chmod 0755 {} \; ; \
144144
CGO_ENABLED=0 \
145145
go test $(TESTARGS) -coverprofile cover.out
146146

@@ -165,7 +165,7 @@ build: vet bin/vm-builder ## Build all neonvm binaries.
165165

166166
.PHONY: bin/vm-builder
167167
bin/vm-builder: ## Build vm-builder binary.
168-
GOOS=linux CGO_ENABLED=0 go build -o bin/vm-builder -ldflags "-X main.Version=${GIT_INFO} -X main.NeonvmDaemonImage=${IMG_DAEMON}" vm-builder/main.go
168+
CGO_ENABLED=0 go build -o bin/vm-builder -ldflags "-X main.Version=${GIT_INFO} -X main.NeonvmDaemonImage=${IMG_DAEMON}" vm-builder/main.go
169169
.PHONY: run
170170
run: vet ## Run a controller from your host.
171171
go run ./neonvm/main.go
@@ -605,7 +605,7 @@ $(ETCD): $(LOCALBIN)
605605
.PHONY: yq
606606
yq: $(YQ) ## Download yq locally if necessary.
607607
$(YQ): $(LOCALBIN)
608-
test -s $(LOCALBIN)/yq || { curl -sfSLo $(YQ) https://github.com/mikefarah/yq/releases/download/$(YQ_VERSION)/yq_linux_$(TARGET_ARCH) && chmod +x $(YQ); }
608+
test -s $(LOCALBIN)/yq || { curl -sfSLo $(YQ) https://github.com/mikefarah/yq/releases/download/$(YQ_VERSION)/yq_$(GOOS)_$(TARGET_ARCH) && chmod +x $(YQ); }
609609

610610
# modify suites to work on arm64
611611
# Set cpuScalingMode to SysfsScaling

go.mod

Lines changed: 6 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -72,10 +72,10 @@ require (
7272
github.com/vishvananda/netlink v1.1.1-0.20220125195016-0639e7e787ba
7373
go.uber.org/multierr v1.11.0
7474
go.uber.org/zap v1.27.0
75-
golang.org/x/crypto v0.35.0
75+
golang.org/x/crypto v0.36.0
7676
golang.org/x/exp v0.0.0-20240719175910-8a7402abbf56
77-
golang.org/x/sync v0.11.0
78-
golang.org/x/term v0.29.0
77+
golang.org/x/sync v0.12.0
78+
golang.org/x/term v0.30.0
7979
gopkg.in/yaml.v3 v3.0.1
8080
k8s.io/api v0.31.7
8181
k8s.io/apimachinery v0.31.7
@@ -192,10 +192,10 @@ require (
192192
go.opentelemetry.io/otel/trace v1.29.0 // indirect
193193
go.opentelemetry.io/proto/otlp v1.3.1 // indirect
194194
golang.org/x/mod v0.20.0 // indirect
195-
golang.org/x/net v0.36.0 // indirect
195+
golang.org/x/net v0.38.0 // indirect
196196
golang.org/x/oauth2 v0.23.0 // indirect
197-
golang.org/x/sys v0.30.0 // indirect
198-
golang.org/x/text v0.22.0 // indirect
197+
golang.org/x/sys v0.31.0 // indirect
198+
golang.org/x/text v0.23.0 // indirect
199199
golang.org/x/time v0.6.0 // indirect
200200
golang.org/x/tools v0.24.0 // indirect
201201
gomodules.xyz/jsonpatch/v2 v2.4.0 // indirect

go.sum

Lines changed: 12 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -443,8 +443,8 @@ golang.org/x/crypto v0.0.0-20210921155107-089bfa567519/go.mod h1:GvvjBRRGRdwPK5y
443443
golang.org/x/crypto v0.6.0/go.mod h1:OFC/31mSvZgRz0V1QTNCzfAI1aIRzbiufJtkMIlEp58=
444444
golang.org/x/crypto v0.19.0/go.mod h1:Iy9bg/ha4yyC70EfRS8jz+B6ybOBKMaSxLj6P6oBDfU=
445445
golang.org/x/crypto v0.21.0/go.mod h1:0BP7YvVV9gBbVKyeTG0Gyn+gZm94bibOW5BjDEYAOMs=
446-
golang.org/x/crypto v0.35.0 h1:b15kiHdrGCHrP6LvwaQ3c03kgNhhiMgvlhxHQhmg2Xs=
447-
golang.org/x/crypto v0.35.0/go.mod h1:dy7dXNW32cAb/6/PRuTNsix8T+vJAqvuIy5Bli/x0YQ=
446+
golang.org/x/crypto v0.36.0 h1:AnAEvhDddvBdpY+uR+MyHmuZzzNqXSe/GvuDeob5L34=
447+
golang.org/x/crypto v0.36.0/go.mod h1:Y4J0ReaxCR1IMaabaSMugxJES1EpwhBHhv2bDHklZvc=
448448
golang.org/x/exp v0.0.0-20240719175910-8a7402abbf56 h1:2dVuKD2vS7b0QIHQbpyTISPd0LeHDbnYEryqj5Q1ug8=
449449
golang.org/x/exp v0.0.0-20240719175910-8a7402abbf56/go.mod h1:M4RDyNAINzryxdtnbRXRL/OHtkFuWGRjvuhBJpk2IlY=
450450
golang.org/x/mod v0.2.0/go.mod h1:s0Qsj1ACt9ePp/hMypM3fl4fZqREWJwdYDEqhRiZZUA=
@@ -470,8 +470,8 @@ golang.org/x/net v0.7.0/go.mod h1:2Tu9+aMcznHK/AK1HMvgo6xiTLG5rD5rZLDS+rp2Bjs=
470470
golang.org/x/net v0.10.0/go.mod h1:0qNGK6F8kojg2nk9dLZ2mShWaEBan6FAoqfSigmmuDg=
471471
golang.org/x/net v0.21.0/go.mod h1:bIjVDfnllIU7BJ2DNgfnXvpSvtn8VRwhlsaeUTyUS44=
472472
golang.org/x/net v0.22.0/go.mod h1:JKghWKKOSdJwpW2GEx0Ja7fmaKnMsbu+MWVZTokSYmg=
473-
golang.org/x/net v0.36.0 h1:vWF2fRbw4qslQsQzgFqZff+BItCvGFQqKzKIzx1rmoA=
474-
golang.org/x/net v0.36.0/go.mod h1:bFmbeoIPfrw4sMHNhb4J9f6+tPziuGjq7Jk/38fxi1I=
473+
golang.org/x/net v0.38.0 h1:vRMAPTMaeGqVhG5QyLJHqNDwecKTomGeqbnfZyKlBI8=
474+
golang.org/x/net v0.38.0/go.mod h1:ivrbrMbzFq5J41QOQh0siUuly180yBYtLp+CKbEaFx8=
475475
golang.org/x/oauth2 v0.23.0 h1:PbgcYx2W7i4LvjJWEbf0ngHV6qJYr86PkAV3bXdLEbs=
476476
golang.org/x/oauth2 v0.23.0/go.mod h1:XYTD2NtWslqkgxebSiOHnXEap4TF09sJSc7H1sXbhtI=
477477
golang.org/x/sync v0.0.0-20180314180146-1d60e4601c6f/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM=
@@ -481,8 +481,8 @@ golang.org/x/sync v0.0.0-20201020160332-67f06af15bc9/go.mod h1:RxMgew5VJxzue5/jJ
481481
golang.org/x/sync v0.0.0-20210220032951-036812b2e83c/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM=
482482
golang.org/x/sync v0.0.0-20220722155255-886fb9371eb4/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM=
483483
golang.org/x/sync v0.1.0/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM=
484-
golang.org/x/sync v0.11.0 h1:GGz8+XQP4FvTTrjZPzNKTMFtSXH80RAzG+5ghFPgK9w=
485-
golang.org/x/sync v0.11.0/go.mod h1:Czt+wKu1gCyEFDUtn0jG5QVvpJ6rzVqr5aXyt9drQfk=
484+
golang.org/x/sync v0.12.0 h1:MHc5BpPuC30uJk597Ri8TV3CNZcTLu6B6z4lJy+g6Jw=
485+
golang.org/x/sync v0.12.0/go.mod h1:1dzgHSNfp02xaA81J2MS99Qcpr2w7fw1gpm99rleRqA=
486486
golang.org/x/sys v0.0.0-20180909124046-d0be0721c37e/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY=
487487
golang.org/x/sys v0.0.0-20190215142949-d0b11bdaac8a/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY=
488488
golang.org/x/sys v0.0.0-20190412213103-97732733099d/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
@@ -510,16 +510,16 @@ golang.org/x/sys v0.5.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg=
510510
golang.org/x/sys v0.8.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg=
511511
golang.org/x/sys v0.17.0/go.mod h1:/VUhepiaJMQUp4+oa/7Zr1D23ma6VTLIYjOOTFZPUcA=
512512
golang.org/x/sys v0.18.0/go.mod h1:/VUhepiaJMQUp4+oa/7Zr1D23ma6VTLIYjOOTFZPUcA=
513-
golang.org/x/sys v0.30.0 h1:QjkSwP/36a20jFYWkSue1YwXzLmsV5Gfq7Eiy72C1uc=
514-
golang.org/x/sys v0.30.0/go.mod h1:/VUhepiaJMQUp4+oa/7Zr1D23ma6VTLIYjOOTFZPUcA=
513+
golang.org/x/sys v0.31.0 h1:ioabZlmFYtWhL+TRYpcnNlLwhyxaM9kWTDEmfnprqik=
514+
golang.org/x/sys v0.31.0/go.mod h1:BJP2sWEmIv4KK5OTEluFJCKSidICx8ciO85XgH3Ak8k=
515515
golang.org/x/term v0.0.0-20201126162022-7de9c90e9dd1/go.mod h1:bj7SfCRtBDWHUb9snDiAeCFNEtKQo2Wmx5Cou7ajbmo=
516516
golang.org/x/term v0.0.0-20210927222741-03fcf44c2211/go.mod h1:jbD1KX2456YbFQfuXm/mYQcufACuNUgVhRMnK/tPxf8=
517517
golang.org/x/term v0.5.0/go.mod h1:jMB1sMXY+tzblOD4FWmEbocvup2/aLOaQEp7JmGp78k=
518518
golang.org/x/term v0.8.0/go.mod h1:xPskH00ivmX89bAKVGSKKtLOWNx2+17Eiy94tnKShWo=
519519
golang.org/x/term v0.17.0/go.mod h1:lLRBjIVuehSbZlaOtGMbcMncT+aqLLLmKrsjNrUguwk=
520520
golang.org/x/term v0.18.0/go.mod h1:ILwASektA3OnRv7amZ1xhE/KTR+u50pbXfZ03+6Nx58=
521-
golang.org/x/term v0.29.0 h1:L6pJp37ocefwRRtYPKSWOWzOtWSxVajvz2ldH/xi3iU=
522-
golang.org/x/term v0.29.0/go.mod h1:6bl4lRlvVuDgSf3179VpIxBF0o10JUpXWOnI7nErv7s=
521+
golang.org/x/term v0.30.0 h1:PQ39fJZ+mfadBm0y5WlL4vlM7Sx1Hgf13sMIY2+QS9Y=
522+
golang.org/x/term v0.30.0/go.mod h1:NYYFdzHoI5wRh/h5tDMdMqCqPJZEuNqVR5xJLd/n67g=
523523
golang.org/x/text v0.3.0/go.mod h1:NqM8EUOU14njkJ3fqMW+pc6Ldnwhi/IjpwHt7yyuwOQ=
524524
golang.org/x/text v0.3.2/go.mod h1:bEr9sfX3Q8Zfm5fL9x+3itogRgK3+ptLWKqgva+5dAk=
525525
golang.org/x/text v0.3.3/go.mod h1:5Zoc/QRtKVWzQhOtBMvqHzDpF6irO9z98xDceosuGiQ=
@@ -528,8 +528,8 @@ golang.org/x/text v0.3.7/go.mod h1:u+2+/6zg+i71rQMx5EYifcz6MCKuco9NR6JIITiCfzQ=
528528
golang.org/x/text v0.7.0/go.mod h1:mrYo+phRRbMaCq/xk9113O4dZlRixOauAjOtrjsXDZ8=
529529
golang.org/x/text v0.9.0/go.mod h1:e1OnstbJyHTd6l/uOt8jFFHp6TRDWZR/bV3emEE/zU8=
530530
golang.org/x/text v0.14.0/go.mod h1:18ZOQIKpY8NJVqYksKHtTdi31H5itFRjB5/qKTNYzSU=
531-
golang.org/x/text v0.22.0 h1:bofq7m3/HAFvbF51jz3Q9wLg3jkvSPuiZu/pD1XwgtM=
532-
golang.org/x/text v0.22.0/go.mod h1:YRoo4H8PVmsu+E3Ou7cqLVH8oXWIHVoX0jqUWALQhfY=
531+
golang.org/x/text v0.23.0 h1:D71I7dUrlY+VX0gQShAThNGHFxZ13dGLBHQLVl1mJlY=
532+
golang.org/x/text v0.23.0/go.mod h1:/BLNzu4aZCJ1+kcD0DNRotWKage4q2rGVAg4o22unh4=
533533
golang.org/x/time v0.0.0-20191024005414-555d28b269f0/go.mod h1:tRJNPiyCQ0inRvYxbN9jk5I+vvW/OXSQhTDSoE431IQ=
534534
golang.org/x/time v0.6.0 h1:eTDhh4ZXt5Qf0augr54TN6suAUudPcawVZeIAPU7D4U=
535535
golang.org/x/time v0.6.0/go.mod h1:3BpzKBy/shNhVucY/MWOyx10tF3SFh9QdLuxbVysPQM=

neonvm-controller/cmd/main.go

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -105,6 +105,7 @@ func main() {
105105
var failurePendingPeriod time.Duration
106106
var failingRefreshInterval time.Duration
107107
var atMostOnePod bool
108+
var useVirtioConsole bool
108109
flag.StringVar(&metricsAddr, "metrics-bind-address", ":8080", "The address the metric endpoint binds to.")
109110
flag.StringVar(&probeAddr, "health-probe-bind-address", ":8081", "The address the probe endpoint binds to.")
110111
flag.BoolVar(&enableLeaderElection, "leader-elect", false,
@@ -148,6 +149,8 @@ func main() {
148149
flag.BoolVar(&atMostOnePod, "at-most-one-pod", false,
149150
"If true, the controller will ensure that at most one pod is running at a time. "+
150151
"Otherwise, the outdated pod might be left to terminate, while the new one is already running.")
152+
flag.BoolVar(&useVirtioConsole, "use-virtio-console", false,
153+
"If true, the controller will set up the runner to use virtio console instead of serial console.")
151154
flag.Parse()
152155

153156
logConfig := zap.NewProductionConfig()
@@ -200,6 +203,7 @@ func main() {
200203
AtMostOnePod: atMostOnePod,
201204
DefaultCPUScalingMode: defaultCpuScalingMode,
202205
NADConfig: controllers.GetNADConfig(),
206+
UseVirtioConsole: useVirtioConsole,
203207
}
204208

205209
ipam, err := ipam.New(ipam.IPAMParams{

neonvm-controller/deployment.yaml

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -56,12 +56,13 @@ spec:
5656
- "--skip-update-validation-for="
5757
- "--disable-runner-cgroup"
5858
- "--default-cpu-scaling-mode=QmpScaling"
59+
- "--use-virtio-console=true"
5960
# See #775 and its links.
6061
# * cache.writeback=on - don't set O_DSYNC (don't flush every write)
6162
# * cache.direct=on - use O_DIRECT (don't abuse host's page cache!)
6263
# * cache.no-flush=on - ignores disk flush operations (not needed; our disks are ephemeral)
6364
- "--qemu-disk-cache-settings=cache.writeback=on,cache.direct=on,cache.no-flush=on"
64-
- "--memhp-auto-movable-ratio=801" # for virtio-mem, set memory_hotplug.auto_movable_ratio=801
65+
- "--memhp-auto-movable-ratio=401" # for virtio-mem, set memory_hotplug.auto_movable_ratio=401
6566
- "--failure-pending-period=1m"
6667
- "--failing-refresh-interval=15s"
6768
env:

neonvm-runner/cmd/main.go

Lines changed: 27 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -33,6 +33,7 @@ import (
3333

3434
vmv1 "github.com/neondatabase/autoscaling/neonvm/apis/neonvm/v1"
3535
"github.com/neondatabase/autoscaling/pkg/util"
36+
"github.com/neondatabase/autoscaling/pkg/util/gzip64"
3637
"github.com/neondatabase/autoscaling/pkg/util/taskgroup"
3738
)
3839

@@ -112,6 +113,8 @@ type Config struct {
112113
cpuScalingMode vmv1.CpuScalingMode
113114
// System CPU architecture. Set automatically equal to runtime.GOARCH.
114115
architecture string
116+
// useVirtioConsole is a flag to use virtio console instead of serial console.
117+
useVirtioConsole bool
115118
}
116119

117120
func newConfig(logger *zap.Logger) *Config {
@@ -125,11 +128,12 @@ func newConfig(logger *zap.Logger) *Config {
125128
autoMovableRatio: "",
126129
cpuScalingMode: "",
127130
architecture: runtime.GOARCH,
131+
useVirtioConsole: false,
128132
}
129133
flag.StringVar(&cfg.vmSpecDump, "vmspec", cfg.vmSpecDump,
130-
"Base64 encoded VirtualMachine json specification")
134+
"Base64 gzip compressed VirtualMachine json specification")
131135
flag.StringVar(&cfg.vmStatusDump, "vmstatus", cfg.vmStatusDump,
132-
"Base64 encoded VirtualMachine json status")
136+
"Base64 gzip compressed VirtualMachine json status")
133137
flag.StringVar(&cfg.kernelPath, "kernelpath", cfg.kernelPath,
134138
"Override path for kernel to use")
135139
flag.StringVar(&cfg.appendKernelCmdline, "appendKernelCmdline",
@@ -142,6 +146,8 @@ func newConfig(logger *zap.Logger) *Config {
142146
flag.StringVar(&cfg.autoMovableRatio, "memhp-auto-movable-ratio",
143147
cfg.autoMovableRatio, "Set value of kernel's memory_hotplug.auto_movable_ratio [virtio-mem only]")
144148
flag.Func("cpu-scaling-mode", "Set CPU scaling mode", cfg.cpuScalingMode.FlagFunc)
149+
flag.BoolVar(&cfg.useVirtioConsole, "use-virtio-console",
150+
cfg.useVirtioConsole, "Use virtio console instead of serial console")
145151
flag.Parse()
146152

147153
if cfg.autoMovableRatio == "" {
@@ -165,11 +171,11 @@ func main() {
165171
func run(logger *zap.Logger) error {
166172
cfg := newConfig(logger)
167173

168-
vmSpecJson, err := base64.StdEncoding.DecodeString(cfg.vmSpecDump)
174+
vmSpecJson, err := gzip64.Decode(cfg.vmSpecDump)
169175
if err != nil {
170176
return fmt.Errorf("failed to decode VirtualMachine Spec dump: %w", err)
171177
}
172-
vmStatusJson, err := base64.StdEncoding.DecodeString(cfg.vmStatusDump)
178+
vmStatusJson, err := gzip64.Decode(cfg.vmStatusDump)
173179
if err != nil {
174180
return fmt.Errorf("failed to decode VirtualMachine Status dump: %w", err)
175181
}
@@ -331,8 +337,17 @@ func buildQEMUCmd(
331337
"-device", "virtconsole,chardev=virtio-console",
332338
)
333339
case architectureAmd64:
334-
// on amd we have multiple UART ports so we can just use serial stdio
335-
qemuCmd = append(qemuCmd, "-serial", "stdio")
340+
// UART port is used by default but it has performance issues.
341+
// Virtio console is more performant.
342+
if cfg.useVirtioConsole {
343+
qemuCmd = append(qemuCmd,
344+
"-chardev", "stdio,id=virtio-console",
345+
"-device", "virtconsole,chardev=virtio-console",
346+
)
347+
} else {
348+
// on amd we have multiple UART ports so we can just use serial stdio
349+
qemuCmd = append(qemuCmd, "-serial", "stdio")
350+
}
336351
default:
337352
logger.Fatal("unsupported architecture", zap.String("architecture", cfg.architecture))
338353
}
@@ -449,7 +464,12 @@ func makeKernelCmdline(cfg *Config, logger *zap.Logger, vmSpec *vmv1.VirtualMach
449464
// use virtio-serial device kernel console
450465
cmdlineParts = append(cmdlineParts, "console=hvc0")
451466
case architectureAmd64:
452-
cmdlineParts = append(cmdlineParts, "console=ttyS1")
467+
// use virtio-serial device if virtio console is enabled
468+
if cfg.useVirtioConsole {
469+
cmdlineParts = append(cmdlineParts, "console=hvc0")
470+
} else {
471+
cmdlineParts = append(cmdlineParts, "console=ttyS1")
472+
}
453473
default:
454474
logger.Fatal("unsupported architecture", zap.String("architecture", cfg.architecture))
455475
}

pkg/neonvm/controllers/config.go

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -19,6 +19,9 @@ type ReconcilerConfig struct {
1919
// to neonvm-runner.
2020
DisableRunnerCgroup bool
2121

22+
// UseVirtioConsole, if true, uses virtio console instead of serial console.
23+
UseVirtioConsole bool
24+
2225
MaxConcurrentReconciles int
2326

2427
// SkipUpdateValidationFor is the set of object names that we should ignore when doing webhook

pkg/neonvm/controllers/functests/vm_controller_test.go

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -115,6 +115,7 @@ var _ = Describe("VirtualMachine controller", func() {
115115
AtMostOnePod: false,
116116
DefaultCPUScalingMode: vmv1.CpuScalingModeQMP,
117117
NADConfig: nil,
118+
UseVirtioConsole: true,
118119
},
119120
IPAM: nil,
120121
}

pkg/neonvm/controllers/vm_controller.go

Lines changed: 7 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -21,7 +21,6 @@ import (
2121
"crypto"
2222
"crypto/ed25519"
2323
"crypto/rand"
24-
"encoding/base64"
2524
"encoding/json"
2625
"encoding/pem"
2726
"errors"
@@ -55,6 +54,7 @@ import (
5554
"github.com/neondatabase/autoscaling/pkg/api"
5655
"github.com/neondatabase/autoscaling/pkg/neonvm/controllers/buildtag"
5756
"github.com/neondatabase/autoscaling/pkg/neonvm/ipam"
57+
"github.com/neondatabase/autoscaling/pkg/util/gzip64"
5858
"github.com/neondatabase/autoscaling/pkg/util/patch"
5959
)
6060

@@ -1385,6 +1385,10 @@ func podSpec(
13851385
cmd = append(cmd, "-skip-cgroup-management")
13861386
}
13871387

1388+
if config.UseVirtioConsole {
1389+
cmd = append(cmd, "-use-virtio-console")
1390+
}
1391+
13881392
memhpAutoMovableRatio := config.MemhpAutoMovableRatio
13891393
if specValue := vm.Spec.Guest.MemhpAutoMovableRatio; specValue != nil {
13901394
memhpAutoMovableRatio = *specValue
@@ -1399,8 +1403,8 @@ func podSpec(
13991403
// can get quite large)
14001404
cmd = append(
14011405
cmd,
1402-
"-vmspec", base64.StdEncoding.EncodeToString(vmSpecJson),
1403-
"-vmstatus", base64.StdEncoding.EncodeToString(vmStatusJson),
1406+
"-vmspec", gzip64.Encode(vmSpecJson),
1407+
"-vmstatus", gzip64.Encode(vmStatusJson),
14041408
)
14051409
// NB: We don't need to check if the value is nil because the default value
14061410
// was set in Reconcile

pkg/neonvm/controllers/vm_controller_unit_test.go

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -107,6 +107,7 @@ func newTestParams(t *testing.T) *testParams {
107107
AtMostOnePod: false,
108108
DefaultCPUScalingMode: vmv1.CpuScalingModeQMP,
109109
NADConfig: nil,
110+
UseVirtioConsole: false,
110111
},
111112
Metrics: testReconcilerMetrics,
112113
IPAM: nil,

0 commit comments

Comments
 (0)