Skip to content

Commit ad88712

Browse files
committed
++ remove LiveMigrationSettings struct and its boilerplate.
Signed-off-by: Ivan Mikheykin <ivan.mikheykin@flant.com>
1 parent 0df8669 commit ad88712

6 files changed

Lines changed: 23 additions & 118 deletions

File tree

images/virtualization-artifact/cmd/virtualization-controller/main.go

Lines changed: 1 addition & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -164,12 +164,6 @@ func main() {
164164
os.Exit(1)
165165
}
166166

167-
liveMigrationSettings, err := appconfig.LoadLiveMigrationSettings()
168-
if err != nil {
169-
log.Error(err.Error())
170-
os.Exit(1)
171-
}
172-
173167
viStorageClassSettings := appconfig.LoadVirtualImageStorageClassSettings()
174168
vdStorageClassSettings := appconfig.LoadVirtualDiskStorageClassSettings()
175169

@@ -352,7 +346,7 @@ func main() {
352346
}
353347

354348
liveMigrationLogger := logger.NewControllerLogger(livemigration.ControllerName, logLevel, logOutput, logDebugVerbosity, logDebugControllerList)
355-
if err = livemigration.SetupController(ctx, mgr, liveMigrationLogger, liveMigrationSettings); err != nil {
349+
if err = livemigration.SetupController(ctx, mgr, liveMigrationLogger); err != nil {
356350
log.Error(err.Error())
357351
os.Exit(1)
358352
}

images/virtualization-artifact/pkg/config/load_live_migration_settings.go

Lines changed: 2 additions & 86 deletions
Original file line numberDiff line numberDiff line change
@@ -17,95 +17,11 @@ limitations under the License.
1717
package config
1818

1919
import (
20-
"fmt"
21-
"os"
22-
"strconv"
23-
24-
"k8s.io/apimachinery/pkg/api/resource"
25-
2620
"github.com/deckhouse/virtualization/api/core/v1alpha2"
2721
)
2822

29-
const (
30-
LiveMigrationBandwidthPerNodeEnv = "LIVE_MIGRATION_BANDWIDTH_PER_NODE"
31-
LiveMigrationMaxMigrationsPerNodeEnv = "LIVE_MIGRATION_MAX_MIGRATIONS_PER_NODE"
32-
LiveMigrationNetworkEnv = "LIVE_MIGRATION_NETWORK"
33-
LiveMigrationDedicatedInterfaceNameEnv = "LIVE_MIGRATION_DEDICATED_INTERFACE_NAME"
34-
)
35-
36-
type LiveMigrationNetwork string
23+
// TODO(future) live migration settings will be here. Now just a place for the default policy.
3724

38-
// These constants should be in sync with liveMigration.network field enum in config-values.yaml
3925
const (
40-
LiveMigrationNetworkShared LiveMigrationNetwork = "Shared"
41-
LiveMigrationNetworkDedicated LiveMigrationNetwork = "Dedicated"
26+
DefaultLiveMigrationPolicy = v1alpha2.PreferSafeMigrationPolicy
4227
)
43-
44-
const (
45-
DefaultBandwidthPerNode = "64Mi"
46-
DefaultMaxMigrationsPerNode = 2
47-
DefaultNetwork = LiveMigrationNetworkShared
48-
DefaultLiveMigrationPolicy = v1alpha2.PreferSafeMigrationPolicy
49-
)
50-
51-
type LiveMigrationSettings struct {
52-
BandwidthPerNode resource.Quantity
53-
MaxMigrationsPerNode int
54-
Network LiveMigrationNetwork
55-
DedicatedInterfaceName string
56-
}
57-
58-
func LoadLiveMigrationSettings() (LiveMigrationSettings, error) {
59-
settings := NewDefaultLiveMigrationSettings()
60-
61-
if val, ok := os.LookupEnv(LiveMigrationBandwidthPerNodeEnv); ok && val != "" {
62-
bandwidth, err := resource.ParseQuantity(val)
63-
if err != nil {
64-
return settings, fmt.Errorf("parse %s: %s should be bandwidth quantity: %w", LiveMigrationBandwidthPerNodeEnv, val, err)
65-
}
66-
settings.BandwidthPerNode = bandwidth
67-
}
68-
69-
if val, ok := os.LookupEnv(LiveMigrationMaxMigrationsPerNodeEnv); ok && val != "" {
70-
maxPerNode, err := strconv.ParseUint(val, 10, 32)
71-
if err != nil {
72-
return settings, fmt.Errorf("parse %s: %s should be numberic value: %w", LiveMigrationMaxMigrationsPerNodeEnv, val, err)
73-
}
74-
settings.MaxMigrationsPerNode = int(maxPerNode)
75-
}
76-
77-
if val, ok := os.LookupEnv(LiveMigrationNetworkEnv); ok && val != "" {
78-
switch val {
79-
case string(LiveMigrationNetworkShared):
80-
settings.Network = LiveMigrationNetworkShared
81-
case string(LiveMigrationNetworkDedicated):
82-
settings.Network = LiveMigrationNetworkDedicated
83-
default:
84-
return settings, fmt.Errorf("parse %s: %s is unsupported value, should be one of [%s, %s]",
85-
LiveMigrationNetworkEnv, val,
86-
LiveMigrationNetworkShared, LiveMigrationNetworkDedicated,
87-
)
88-
}
89-
}
90-
91-
if val, ok := os.LookupEnv(LiveMigrationDedicatedInterfaceNameEnv); ok && val != "" {
92-
settings.DedicatedInterfaceName = val
93-
}
94-
95-
return settings, nil
96-
}
97-
98-
// defaultBandwidthPerNode is an error eater for hardcoded quantity.
99-
// Parsing of DefaultBandwidthPerNode should be tested.
100-
func defaultBandwidthPerNode() resource.Quantity {
101-
bandwidth, _ := resource.ParseQuantity(DefaultBandwidthPerNode)
102-
return bandwidth
103-
}
104-
105-
func NewDefaultLiveMigrationSettings() LiveMigrationSettings {
106-
return LiveMigrationSettings{
107-
BandwidthPerNode: defaultBandwidthPerNode(),
108-
MaxMigrationsPerNode: DefaultMaxMigrationsPerNode,
109-
Network: DefaultNetwork,
110-
}
111-
}

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

Lines changed: 4 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -24,24 +24,21 @@ import (
2424
"sigs.k8s.io/controller-runtime/pkg/client"
2525
"sigs.k8s.io/controller-runtime/pkg/reconcile"
2626

27-
"github.com/deckhouse/virtualization-controller/pkg/config"
2827
"github.com/deckhouse/virtualization-controller/pkg/livemigration"
2928
"github.com/deckhouse/virtualization-controller/pkg/logger"
3029
"github.com/deckhouse/virtualization/api/core/v1alpha2"
3130
)
3231

3332
const dynamicSettingsHandlerName = "DynamicSettingsHandler"
3433

35-
func NewDynamicSettingsHandler(client client.Client, liveMigrationSettings config.LiveMigrationSettings) *DynamicSettingsHandler {
34+
func NewDynamicSettingsHandler(client client.Client) *DynamicSettingsHandler {
3635
return &DynamicSettingsHandler{
37-
client: client,
38-
moduleSettings: liveMigrationSettings,
36+
client: client,
3937
}
4038
}
4139

4240
type DynamicSettingsHandler struct {
43-
client client.Client
44-
moduleSettings config.LiveMigrationSettings
41+
client client.Client
4542
}
4643

4744
func (h *DynamicSettingsHandler) Handle(ctx context.Context, kvvmi *virtv1.VirtualMachineInstance) (reconcile.Result, error) {
@@ -82,7 +79,7 @@ func (h *DynamicSettingsHandler) Handle(ctx context.Context, kvvmi *virtv1.Virtu
8279
return reconcile.Result{}, err
8380
}
8481

85-
conf := livemigration.NewMigrationConfiguration(h.moduleSettings, autoConverge, kvconfig)
82+
conf := livemigration.NewMigrationConfiguration(autoConverge, kvconfig)
8683

8784
kvvmi.Status.MigrationState.MigrationConfiguration = conf
8885

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

Lines changed: 3 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -25,7 +25,6 @@ import (
2525

2626
vmbuilder "github.com/deckhouse/virtualization-controller/pkg/builder/vm"
2727
"github.com/deckhouse/virtualization-controller/pkg/common/testutil"
28-
"github.com/deckhouse/virtualization-controller/pkg/config"
2928
"github.com/deckhouse/virtualization/api/core/v1alpha2"
3029
)
3130

@@ -103,7 +102,7 @@ var _ = Describe("TestDynamicSettingsHandler", func() {
103102
kvvmi.Status.MigrationState = &virtv1.VirtualMachineInstanceMigrationState{}
104103

105104
fakeClient := setupEnvironment(kvvmi, vm, newKVConfig())
106-
h := NewDynamicSettingsHandler(fakeClient, config.NewDefaultLiveMigrationSettings())
105+
h := NewDynamicSettingsHandler(fakeClient)
107106
_, err := h.Handle(ctx, kvvmi)
108107
Expect(err).NotTo(HaveOccurred())
109108

@@ -121,7 +120,7 @@ var _ = Describe("TestDynamicSettingsHandler", func() {
121120
}
122121

123122
fakeClient := setupEnvironment(kvvmi, vm, newKVConfig())
124-
h := NewDynamicSettingsHandler(fakeClient, config.NewDefaultLiveMigrationSettings())
123+
h := NewDynamicSettingsHandler(fakeClient)
125124
_, err := h.Handle(ctx, kvvmi)
126125
Expect(err).NotTo(HaveOccurred())
127126

@@ -140,7 +139,7 @@ var _ = Describe("TestDynamicSettingsHandler", func() {
140139
vmop := newVMOPEvict(force)
141140

142141
fakeClient := setupEnvironment(kvvmi, vm, vmop, newKVConfig())
143-
h := NewDynamicSettingsHandler(fakeClient, config.NewDefaultLiveMigrationSettings())
142+
h := NewDynamicSettingsHandler(fakeClient)
144143
_, err := h.Handle(ctx, kvvmi)
145144
Expect(err).NotTo(HaveOccurred())
146145

images/virtualization-artifact/pkg/controller/livemigration/live_migration_controller.go

Lines changed: 1 addition & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -25,7 +25,6 @@ import (
2525
"sigs.k8s.io/controller-runtime/pkg/manager"
2626

2727
"github.com/deckhouse/deckhouse/pkg/log"
28-
"github.com/deckhouse/virtualization-controller/pkg/config"
2928
"github.com/deckhouse/virtualization-controller/pkg/controller/livemigration/internal"
3029
"github.com/deckhouse/virtualization-controller/pkg/logger"
3130
)
@@ -38,12 +37,11 @@ func SetupController(
3837
ctx context.Context,
3938
mgr manager.Manager,
4039
log *log.Logger,
41-
liveMigrationSettings config.LiveMigrationSettings,
4240
) error {
4341
client := mgr.GetClient()
4442

4543
handlers := []Handler{
46-
internal.NewDynamicSettingsHandler(client, liveMigrationSettings),
44+
internal.NewDynamicSettingsHandler(client),
4745
}
4846
r := NewReconciler(client, handlers...)
4947

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

Lines changed: 12 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -21,35 +21,36 @@ import (
2121
"fmt"
2222
"reflect"
2323

24+
"k8s.io/apimachinery/pkg/api/resource"
2425
virtv1 "kubevirt.io/api/core/v1"
25-
26-
"github.com/deckhouse/virtualization-controller/pkg/config"
2726
)
2827

2928
// Live migration defaults from kubevirt
3029

3130
const (
32-
ParallelMigrationsPerClusterDefault uint32 = 5
33-
NodeDrainTaintDefaultKey string = "kubevirt.io/drain"
34-
MigrationProgressTimeout int64 = 150
35-
MigrationCompletionTimeoutPerGiB int64 = 800
36-
DefaultUnsafeMigrationOverride bool = false
37-
MigrationAllowPostCopy bool = false
31+
ParallelOutboundMigrationsPerNodeDefault uint32 = 2
32+
ParallelMigrationsPerClusterDefault uint32 = 5
33+
BandwidthPerMigrationDefault = "0Mi"
34+
NodeDrainTaintDefaultKey string = "kubevirt.io/drain"
35+
MigrationProgressTimeout int64 = 150
36+
MigrationCompletionTimeoutPerGiB int64 = 800
37+
DefaultUnsafeMigrationOverride bool = false
38+
MigrationAllowPostCopy bool = false
3839
)
3940

40-
func NewMigrationConfiguration(moduleSettings config.LiveMigrationSettings, allowAutoConverge bool, kvconfig virtv1.KubeVirt) *virtv1.MigrationConfiguration {
41+
func NewMigrationConfiguration(allowAutoConverge bool, kvconfig virtv1.KubeVirt) *virtv1.MigrationConfiguration {
4142
// TODO rework below section after proper implementation of liveMigration settings in ModuleConfig.
4243
parallelMigrationsPerCluster := ParallelMigrationsPerClusterDefault
4344
if kvconfig.Spec.Configuration.MigrationConfiguration != nil && kvconfig.Spec.Configuration.MigrationConfiguration.ParallelMigrationsPerCluster != nil {
4445
parallelMigrationsPerCluster = *kvconfig.Spec.Configuration.MigrationConfiguration.ParallelMigrationsPerCluster
4546
}
4647
// Reuse default value of MaxMigrationsPerNode as parallelOutboundMigrationsPerNode.
47-
parallelOutboundMigrationsPerNode := uint32(moduleSettings.MaxMigrationsPerNode)
48+
parallelOutboundMigrationsPerNode := ParallelOutboundMigrationsPerNodeDefault
4849
if kvconfig.Spec.Configuration.MigrationConfiguration != nil && kvconfig.Spec.Configuration.MigrationConfiguration.ParallelOutboundMigrationsPerNode != nil {
4950
parallelOutboundMigrationsPerNode = *kvconfig.Spec.Configuration.MigrationConfiguration.ParallelOutboundMigrationsPerNode
5051
}
5152
// Reuse default value of BandwidthPerNode as bandwidthPerMigration.
52-
bandwidthPerMigration := moduleSettings.BandwidthPerNode.DeepCopy()
53+
bandwidthPerMigration := resource.MustParse(BandwidthPerMigrationDefault)
5354
if kvconfig.Spec.Configuration.MigrationConfiguration != nil && kvconfig.Spec.Configuration.MigrationConfiguration.BandwidthPerMigration != nil {
5455
bandwidthPerMigration = kvconfig.Spec.Configuration.MigrationConfiguration.BandwidthPerMigration.DeepCopy()
5556
}

0 commit comments

Comments
 (0)