Skip to content

Commit c173901

Browse files
committed
++ hide new liveMigration settings in ModuleConfig until more thorough research
Signed-off-by: Ivan Mikheykin <ivan.mikheykin@flant.com>
1 parent 20c9a3b commit c173901

4 files changed

Lines changed: 33 additions & 69 deletions

File tree

images/virtualization-artifact/pkg/controller/livemigration/internal/dynamic_settings_handler.go

Lines changed: 14 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -19,6 +19,7 @@ package internal
1919
import (
2020
"context"
2121

22+
"k8s.io/apimachinery/pkg/types"
2223
virtv1 "kubevirt.io/api/core/v1"
2324
"sigs.k8s.io/controller-runtime/pkg/client"
2425
"sigs.k8s.io/controller-runtime/pkg/reconcile"
@@ -57,6 +58,18 @@ func (h *DynamicSettingsHandler) Handle(ctx context.Context, kvvmi *virtv1.Virtu
5758
return reconcile.Result{}, err
5859
}
5960

61+
// TODO Temporary fix to have liveMigration settings in one place.
62+
// TODO Remove after implementing liveMigration settings.
63+
var kvconfig virtv1.KubeVirt
64+
configKey := types.NamespacedName{
65+
Namespace: "d8-virtualization",
66+
Name: "config",
67+
}
68+
err = h.client.Get(ctx, configKey, &kvconfig)
69+
if err != nil {
70+
return reconcile.Result{}, err
71+
}
72+
6073
// Fetch InProgress vmop
6174
vmopInProgress, err := h.getVMOPInProgressForVM(ctx, vmKey)
6275
if err != nil {
@@ -68,7 +81,7 @@ func (h *DynamicSettingsHandler) Handle(ctx context.Context, kvvmi *virtv1.Virtu
6881
return reconcile.Result{}, err
6982
}
7083

71-
conf := livemigration.NewMigrationConfiguration(h.moduleSettings, autoConverge)
84+
conf := livemigration.NewMigrationConfiguration(h.moduleSettings, autoConverge, kvconfig)
7285

7386
kvvmi.Status.MigrationState.MigrationConfiguration = conf
7487

images/virtualization-artifact/pkg/livemigration/migration_configuration.go

Lines changed: 19 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -37,21 +37,35 @@ const (
3737
MigrationAllowPostCopy bool = false
3838
)
3939

40-
func NewMigrationConfiguration(moduleSettings config.LiveMigrationSettings, allowAutoConverge bool) *virtv1.MigrationConfiguration {
41-
parallelMigrationsPerClusterDefault := ParallelMigrationsPerClusterDefault
40+
func NewMigrationConfiguration(moduleSettings config.LiveMigrationSettings, allowAutoConverge bool, kvconfig virtv1.KubeVirt) *virtv1.MigrationConfiguration {
41+
// TODO rework below section after proper implementation of liveMigration settings in ModuleConfig.
42+
parallelMigrationsPerCluster := ParallelMigrationsPerClusterDefault
43+
if kvconfig.Spec.Configuration.MigrationConfiguration.ParallelMigrationsPerCluster != nil {
44+
parallelMigrationsPerCluster = *kvconfig.Spec.Configuration.MigrationConfiguration.ParallelMigrationsPerCluster
45+
}
46+
// Reuse default value of MaxMigrationsPerNode as parallelOutboundMigrationsPerNode.
4247
parallelOutboundMigrationsPerNode := uint32(moduleSettings.MaxMigrationsPerNode)
48+
if kvconfig.Spec.Configuration.MigrationConfiguration.ParallelOutboundMigrationsPerNode != nil {
49+
parallelOutboundMigrationsPerNode = *kvconfig.Spec.Configuration.MigrationConfiguration.ParallelOutboundMigrationsPerNode
50+
}
51+
// Reuse default value of BandwidthPerNode as bandwidthPerMigration.
52+
bandwidthPerMigration := moduleSettings.BandwidthPerNode.DeepCopy()
53+
if kvconfig.Spec.Configuration.MigrationConfiguration.BandwidthPerMigration != nil {
54+
bandwidthPerMigration = kvconfig.Spec.Configuration.MigrationConfiguration.BandwidthPerMigration.DeepCopy()
55+
}
56+
57+
// Just use defaults from KubeVirt.
4358
nodeDrainTaintDefaultKey := NodeDrainTaintDefaultKey
44-
bandwidthPerMigrationDefault := moduleSettings.BandwidthPerNode.DeepCopy()
4559
progressTimeout := MigrationProgressTimeout
4660
completionTimeoutPerGiB := MigrationCompletionTimeoutPerGiB
4761
defaultUnsafeMigrationOverride := DefaultUnsafeMigrationOverride
4862
allowPostCopy := MigrationAllowPostCopy
4963

5064
return &virtv1.MigrationConfiguration{
51-
ParallelMigrationsPerCluster: &parallelMigrationsPerClusterDefault,
65+
ParallelMigrationsPerCluster: &parallelMigrationsPerCluster,
5266
ParallelOutboundMigrationsPerNode: &parallelOutboundMigrationsPerNode,
5367
NodeDrainTaintKey: &nodeDrainTaintDefaultKey,
54-
BandwidthPerMigration: &bandwidthPerMigrationDefault,
68+
BandwidthPerMigration: &bandwidthPerMigration,
5569
ProgressTimeout: &progressTimeout,
5670
CompletionTimeoutPerGiB: &completionTimeoutPerGiB,
5771
UnsafeMigrationOverride: &defaultUnsafeMigrationOverride,

openapi/config-values.yaml

Lines changed: 0 additions & 35 deletions
Original file line numberDiff line numberDiff line change
@@ -223,41 +223,6 @@ properties:
223223
items:
224224
type: string
225225
x-examples: ["sc-1", "sc-2"]
226-
liveMigration:
227-
type: object
228-
description: |
229-
Live migration settings.
230-
properties:
231-
bandwidthPerNode:
232-
type: string
233-
pattern: "^[1-9][0-9]+([kMGTP]i)?$"
234-
description: |
235-
Maximum aggregated network bandwidth for migrations from one Node.
236-
maxMigrationsPerNode:
237-
type: integer
238-
description: |
239-
Maximum number of simultaneous migrations from one Node.
240-
network:
241-
type: string
242-
description: |
243-
Network type for migrations:
244-
- `Shared` — use the same network with virtual machines.
245-
- `Dedicated` — use a separated network for migrations. Specify interface in `dedicated` section.
246-
enum:
247-
- "Shared"
248-
- "Dedicated"
249-
dedicated:
250-
type: object
251-
description: |
252-
Settings for the dedicated network.
253-
properties:
254-
interfaceName:
255-
type: string
256-
x-examples:
257-
- "eth0"
258-
- "veth2"
259-
description: |
260-
Interface name for the dedicated network.
261226
logLevel:
262227
type: string
263228
description: |

openapi/doc-ru-config-values.yaml

Lines changed: 0 additions & 28 deletions
Original file line numberDiff line numberDiff line change
@@ -132,34 +132,6 @@ properties:
132132
type: array
133133
items:
134134
type: string
135-
liveMigration:
136-
type: object
137-
description: |
138-
Настройки живой миграции.
139-
properties:
140-
bandwidthPerNode:
141-
type: string
142-
description: |
143-
Максимальная ширина полосы пропускания сети на узле в процессе миграции.
144-
maxMigrationsPerNode:
145-
type: integer
146-
description: |
147-
Максимальное количество одновременно запущенных миграций на узле.
148-
network:
149-
type: string
150-
description: |
151-
Тип сети для миграции:
152-
- `Shared` — использовать ту же сеть, которая выделена для виртуальных машин.
153-
- `Dedicated` — использовать выделенную сеть для миграций. Укажите имя интерфейса в поле `dedicated`.
154-
dedicated:
155-
type: object
156-
description: |
157-
Настройки выделенной сети для миграций.
158-
properties:
159-
interfaceName:
160-
type: string
161-
description: |
162-
Имя интерфейса выделенной сети.
163135
logLevel:
164136
type: string
165137
description: |

0 commit comments

Comments
 (0)