in pkg/leadermigration/options/options.go [61:89]
func (o *LeaderMigrationOptions) ApplyTo(cfg *config.GenericControllerManagerConfiguration) error {
if o == nil {
// an nil LeaderMigrationOptions indicates that default options should be used
// in which case leader migration will be disabled
cfg.LeaderMigrationEnabled = false
return nil
}
if o.Enabled && !leadermigration.FeatureEnabled() {
return fmt.Errorf("Leader Migration is not enabled through feature gate")
}
cfg.LeaderMigrationEnabled = o.Enabled
if !cfg.LeaderMigrationEnabled {
return nil
}
if o.ControllerMigrationConfig == "" {
cfg.LeaderMigration = *migrationconfig.DefaultLeaderMigrationConfiguration()
return nil
}
leaderMigrationConfig, err := migrationconfig.ReadLeaderMigrationConfiguration(o.ControllerMigrationConfig)
if err != nil {
return err
}
errs := migrationconfig.ValidateLeaderMigrationConfiguration(leaderMigrationConfig)
if len(errs) != 0 {
return fmt.Errorf("failed to parse leader migration configuration: %v", errs)
}
cfg.LeaderMigration = *leaderMigrationConfig
return nil
}