Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
26 commits
Select commit Hold shift + click to select a range
c5ec00f
fix(ci): add wait condition to E2E error messages (#1514)
loktev-d Oct 3, 2025
a055725
fix(vd): respect user-specified storage class when restoring from sna…
loktev-d Oct 6, 2025
50682cd
fix(test): Fuzzing testing fail (#1261)
danilrwx Oct 6, 2025
a247f82
chore(ci): import glib2, libxkbcommon, libstdc++6 (#1447)
nevermarine Oct 6, 2025
c95f6ff
chore: skip VirtualMachineLiveMigrationTCPSession test (#1537)
LopatinDmitr Oct 6, 2025
b1f9cde
chore: skip for VirtualImageCreation blinking test (#1539)
eofff Oct 6, 2025
83bb148
chore: skip vd snapshots blinking error (#1540)
eofff Oct 6, 2025
346a237
fix(vmop): add validation rules for clone naming (#1522)
LopatinDmitr Oct 7, 2025
5ee22d4
fix(vmip): add validation when updating the vmip (#1530)
LopatinDmitr Oct 7, 2025
a668de2
fix(e2e): panic when controller pod is completed (#1535)
danilrwx Oct 7, 2025
2737fd7
feat(core): promote vd/vi import error if url is broken (#1534)
eofff Oct 7, 2025
867cc71
fix(vm): prohibit duplicating networks in the VirtualMachine `.spec` …
LopatinDmitr Oct 8, 2025
337d25d
chore: remove e2e log filter of fixed error: "found new finalizers" (…
eofff Oct 8, 2025
0ccf98d
fix(core): fix setting LastTransitionTime in condition if reason chan…
eofff Oct 8, 2025
8f9d3fd
feat(observability): add snapshots info prometheus metrics (#1555)
eofff Oct 10, 2025
42ec98d
fix(tests): Kill workers if main fuzz process don't kill they (#1560)
danilrwx Oct 10, 2025
4e0bc40
[cse] fixed path to source code (#1551)
alexey-gavrilov-flant Oct 10, 2025
5bb340c
fix(ci): resolve issue with table rendering (#1565)
universal-itengineer Oct 13, 2025
1748602
fix(ci): fix mirrord health probes and certificate paths (#1547)
loktev-d Oct 13, 2025
87ee975
fix(vmbda): resolve terminating status issue (#1542)
hardcoretime Oct 13, 2025
ae3e491
fix(vm): add hiding of the NetworkReady condition when its status is …
LopatinDmitr Oct 14, 2025
4988095
fix(vi): respect storageClassName when creating from snapshot (#1533)
loktev-d Oct 14, 2025
559bd42
chore(core): fix run with ro rootfs (port to upstream from #1526) (#1…
diafour Oct 15, 2025
f0b0dd1
chore(module): use golang-1.24 instead 1.23 (port to upstream from #1…
diafour Oct 15, 2025
1b6702f
chore(core): more renames for containers (#1579)
diafour Oct 15, 2025
c38b507
fix(core): fix go sum for virtualization artifacts
Isteb4k Oct 15, 2025
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
2 changes: 1 addition & 1 deletion .github/workflows/nightly_e2e_tests_report.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -45,7 +45,7 @@ jobs:
markdown_table=""

header="| CSI | Status | Passed | Failed | Pending | Skipped | Date | Time | Branch|\n"
separator="|---|---|---|---|---|---|---|---|\n"
separator="|---|---|---|---|---|---|---|---|---|\n"

markdown_table+="$header"
markdown_table+="$separator"
Expand Down
8 changes: 6 additions & 2 deletions api/core/v1alpha2/virtual_machine_operation.go
Original file line number Diff line number Diff line change
Expand Up @@ -69,22 +69,26 @@ type VirtualMachineOperationRestoreSpec struct {
VirtualMachineSnapshotName string `json:"virtualMachineSnapshotName"`
}

// +kubebuilder:validation:XValidation:rule="(has(self.customization) && ((has(self.customization.namePrefix) && size(self.customization.namePrefix) > 0) || (has(self.customization.nameSuffix) && size(self.customization.nameSuffix) > 0))) || (has(self.nameReplacement) && size(self.nameReplacement) > 0)",message="At least one of customization.namePrefix, customization.nameSuffix, or nameReplacement must be set"
// VirtualMachineOperationCloneSpec defines the clone operation.
type VirtualMachineOperationCloneSpec struct {
Mode VMOPRestoreMode `json:"mode"`
// NameReplacement defines rules for renaming resources during cloning.
// +kubebuilder:validation:XValidation:rule="self.all(nr, has(nr.to) && size(nr.to) >= 1 && size(nr.to) <= 59)",message="Each nameReplacement.to must be between 1 and 59 characters"
NameReplacement []NameReplacement `json:"nameReplacement,omitempty"`
// Customization defines customization options for cloning.
Customization *VirtualMachineOperationCloneCustomization `json:"customization,omitempty"`
}

// +kubebuilder:validation:XValidation:rule="!has(self.namePrefix) || (size(self.namePrefix) >= 1 && size(self.namePrefix) <= 59)",message="namePrefix length must be between 1 and 59 characters if set"
// +kubebuilder:validation:XValidation:rule="!has(self.nameSuffix) || (size(self.nameSuffix) >= 1 && size(self.nameSuffix) <= 59)",message="nameSuffix length must be between 1 and 59 characters if set"
// VirtualMachineOperationCloneCustomization defines customization options for cloning.
type VirtualMachineOperationCloneCustomization struct {
// NamePrefix adds a prefix to resource names during cloning.
// Applied to VirtualDisk, VirtualMachineIPAddress, VirtualMachineMACAddress, and Secret resources.
// Applied to VirtualMachine, VirtualDisk, VirtualMachineBlockDeviceAttachment, and Secret resources.
NamePrefix string `json:"namePrefix,omitempty"`
// NameSuffix adds a suffix to resource names during cloning.
// Applied to VirtualDisk, VirtualMachineIPAddress, VirtualMachineMACAddress, and Secret resources.
// Applied to VirtualMachine, VirtualDisk, VirtualMachineBlockDeviceAttachment, and Secret resources.
NameSuffix string `json:"nameSuffix,omitempty"`
}

Expand Down
7 changes: 4 additions & 3 deletions build/components/versions.yml
Original file line number Diff line number Diff line change
Expand Up @@ -4,7 +4,7 @@ firmware:
edk2: stable202411
core:
3p-kubevirt: v1.3.1-v12n.17
3p-containerized-data-importer: v1.60.3-v12n.11
3p-containerized-data-importer: v1.60.3-v12n.12
distribution: 2.8.3
package:
acl: v2.3.1
Expand All @@ -13,7 +13,7 @@ package:
dtc: v1.7.2
e2fsprogs: v1.47.1
file: FILE5_45
gcc: releases/gcc-14.2.0
gcc: releases/gcc-13.2.0
glib2: 2.84.2
glibc: glibc-2.38
libgmp: 6.3.0
Expand Down Expand Up @@ -84,8 +84,9 @@ package:
readline: readline-8.2
cyrus-sasl2: cyrus-sasl-2.1.28 # libsasl2-3
libseccomp: v2.6.0
selinux: 3.6
selinux: 3.8
libslirp: v4.8.0
libxkbcommon: xkbcommon-1.10.0
snappy: 1.2.2 # libsnappy
systemd: v255
zlib: v1.3.1
Expand Down
27 changes: 27 additions & 0 deletions crds/virtualmachineoperations.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -81,6 +81,19 @@ spec:
Applied to VirtualMachine, VirtualDisk, VirtualMachineBlockDeviceAttachment, and Secret resources.
type: string
type: object
x-kubernetes-validations:
- message:
namePrefix length must be between 1 and 59 characters
if set
rule:
"!has(self.namePrefix) || (size(self.namePrefix) >= 1
&& size(self.namePrefix) <= 59)"
- message:
nameSuffix length must be between 1 and 59 characters
if set
rule:
"!has(self.nameSuffix) || (size(self.nameSuffix) >= 1
&& size(self.nameSuffix) <= 59)"
mode:
description: |-
VMOPRestoreMode defines the kind of the restore operation.
Expand Down Expand Up @@ -121,9 +134,23 @@ spec:
- to
type: object
type: array
x-kubernetes-validations:
- message: Each nameReplacement.to must be between 1 and 59 characters
rule:
self.all(nr, has(nr.to) && size(nr.to) >= 1 && size(nr.to)
<= 59)
required:
- mode
type: object
x-kubernetes-validations:
- message:
At least one of customization.namePrefix, customization.nameSuffix,
or nameReplacement must be set
rule:
(has(self.customization) && ((has(self.customization.namePrefix)
&& size(self.customization.namePrefix) > 0) || (has(self.customization.nameSuffix)
&& size(self.customization.nameSuffix) > 0))) || (has(self.nameReplacement)
&& size(self.nameReplacement) > 0)
force:
description: |-
Force execution of an operation.
Expand Down
19 changes: 1 addition & 18 deletions docs/USER_GUIDE.md
Original file line number Diff line number Diff line change
Expand Up @@ -2492,26 +2492,12 @@ spec:
name: user-net # Network name
```

It is allowed to connect a VM to the same network multiple times. Example:

```yaml
spec:
networks:
- type: Main # Must always be specified first
- type: Network
name: user-net # Network name
- type: Network
name: user-net # Network name
```

Example of connecting to the cluster network `corp-net`:

```yaml
spec:
networks:
- type: Main # Must always be specified first
- type: Network
name: user-net
- type: Network
name: user-net
- type: ClusterNetwork
Expand All @@ -2527,12 +2513,9 @@ status:
- type: Network
name: user-net
macAddress: aa:bb:cc:dd:ee:01
- type: Network
name: user-net
macAddress: aa:bb:cc:dd:ee:02
- type: ClusterNetwork
name: corp-net
macAddress: aa:bb:cc:dd:ee:03
macAddress: aa:bb:cc:dd:ee:02
```

For each additional network interface, a unique MAC address is automatically generated and reserved to avoid collisions. The following resources are used for this: `VirtualMachineMACAddress` (`vmmac`) and `VirtualMachineMACAddressLease` (`vmmacl`).
Expand Down
19 changes: 1 addition & 18 deletions docs/USER_GUIDE.ru.md
Original file line number Diff line number Diff line change
Expand Up @@ -2524,26 +2524,12 @@ spec:
name: user-net # Название сети
```

Допускается подключать одну ВМ к одной и той же сети несколько раз. Пример:

```yaml
spec:
networks:
- type: Main # Обязательно указывать первым
- type: Network
name: user-net # Название сети
- type: Network
name: user-net # Название сети
```

Пример подключения кластерной сети `corp-net`:

```yaml
spec:
networks:
- type: Main # Обязательно указывать первым
- type: Network
name: user-net
- type: Network
name: user-net
- type: ClusterNetwork
Expand All @@ -2559,12 +2545,9 @@ status:
- type: Network
name: user-net
macAddress: aa:bb:cc:dd:ee:01
- type: Network
name: user-net
macAddress: aa:bb:cc:dd:ee:02
- type: ClusterNetwork
name: corp-net
macAddress: aa:bb:cc:dd:ee:03
macAddress: aa:bb:cc:dd:ee:02
```

Для каждого дополнительного сетевого интерфейса автоматически создается и резервируется уникальный MAC-адрес, что обеспечивает отсутствие коллизий MAC-адресов. Для этих целей используются ресурсы: `VirtualMachineMACAddress` (`vmmac`) и `VirtualMachineMACAddressLease` (`vmmacl`).
Expand Down
2 changes: 1 addition & 1 deletion images/bounder/werf.inc.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -12,7 +12,7 @@ imageSpec:
---
image: {{ .ModuleNamePrefix }}{{ .ImageName }}-cbuilder
final: false
fromImage: builder/golang-bookworm-1.23
fromImage: builder/golang-bookworm-1.24
git:
- add: {{ .ModuleDir }}/images/{{ .ImageName }}/static_binaries
to: /static_binaries
Expand Down
2 changes: 1 addition & 1 deletion images/cdi-artifact/werf.inc.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -143,7 +143,7 @@ shell:
---
image: {{ .ModuleNamePrefix }}{{ .ImageName }}-cbuilder
final: false
fromImage: {{ eq $.SVACE_ENABLED "false" | ternary "builder/golang-bookworm-1.23" "builder/alt-go-svace" }}
fromImage: {{ eq $.SVACE_ENABLED "false" | ternary "builder/golang-bookworm-1.24" "builder/alt-go-svace" }}
git:
- add: {{ .ModuleDir }}/images/{{ .ImageName }}
to: /
Expand Down
2 changes: 1 addition & 1 deletion images/cdi-cloner/werf.inc.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -53,7 +53,7 @@ shell:
---
image: {{ .ModuleNamePrefix }}{{ .ImageName }}-gobuild
final: false
fromImage: {{ eq $.SVACE_ENABLED "false" | ternary "builder/golang-bookworm-1.23" "builder/alt-go-svace" }}
fromImage: {{ eq $.SVACE_ENABLED "false" | ternary "builder/golang-bookworm-1.24" "builder/alt-go-svace" }}
git:
- add: {{ .ModuleDir }}/images/{{ .ImageName }}/cloner-startup
to: /app
Expand Down
2 changes: 2 additions & 0 deletions images/dvcr-artifact/docker-fuzz.sh
Original file line number Diff line number Diff line change
Expand Up @@ -62,6 +62,8 @@ echo

docker run --rm \
--platform linux/amd64 \
-v $(pwd)/fuzzartifact/.cache/go-build:/root/.cache/go-build \
-v $(pwd)/fuzzartifact/logs:/tmp/fuzz \
$(docker build --platform linux/amd64 -q -f "$DOCKERFILE" .)

echo
Expand Down
5 changes: 3 additions & 2 deletions images/dvcr-artifact/fuzz.Dockerfile
Original file line number Diff line number Diff line change
@@ -1,8 +1,9 @@
FROM golang:1.23-bookworm
FROM golang:1.24-bookworm

RUN apt update -y && apt install -y \
build-essential \
libnbd-dev
libnbd-dev \
qemu-utils

WORKDIR /app

Expand Down
12 changes: 6 additions & 6 deletions images/dvcr-artifact/fuzz.sh
Original file line number Diff line number Diff line change
Expand Up @@ -32,10 +32,10 @@ cleanup() {
done

# kill workers if they are still running
pids=$(ps aux | grep 'fuzzworker' | awk '{print $2}')
pids=$(pgrep -f fuzzworker)
if [[ ! -z "$pids" ]]; then
echo "$pids" | xargs kill 2>/dev/null || true
sleep 1 # wait a moment for them to terminate
echo "$pids" | xargs kill -2 2>/dev/null || true
sleep 10 # wait a moment for them to terminate
echo "$pids" | xargs kill -9 2>/dev/null || true
fi

Expand Down Expand Up @@ -85,10 +85,10 @@ for file in ${files}; do
wait "$fuzz_pid" 2>/dev/null || true

# kill workers if they are still running
pids=$(ps aux | grep 'fuzzworker' | awk '{print $2}')
pids=$(pgrep -f fuzzworker)
if [[ ! -z "$pids" ]]; then
echo "$pids" | xargs kill 2>/dev/null || true
sleep 1 # wait a moment for them to terminate
echo "$pids" | xargs kill -2 2>/dev/null || true
sleep 10 # wait a moment for them to terminate
echo "$pids" | xargs kill -9 2>/dev/null || true
fi

Expand Down
Loading
Loading