-
Notifications
You must be signed in to change notification settings - Fork 277
/
entry.go
95 lines (86 loc) · 2.33 KB
/
entry.go
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
package snow
import (
"context"
"github.com/aws/eks-anywhere/pkg/cluster"
)
type ConfigManager struct {
validator *Validator
defaulters *Defaulters
}
// NewConfigManager returns a new snow config manager.
func NewConfigManager(defaulters *Defaulters, validators *Validator) *ConfigManager {
return &ConfigManager{
validator: validators,
defaulters: defaulters,
}
}
func (cm *ConfigManager) SetDefaultsAndValidate(ctx context.Context, config *cluster.Config) error {
configManager := cluster.NewConfigManager()
if err := configManager.Register(cm.snowEntry(ctx)); err != nil {
return err
}
if err := configManager.SetDefaults(config); err != nil {
return err
}
if err := configManager.Validate(config); err != nil {
return err
}
return nil
}
func (cm *ConfigManager) snowEntry(ctx context.Context) *cluster.ConfigManagerEntry {
return &cluster.ConfigManagerEntry{
Defaulters: []cluster.Defaulter{
func(c *cluster.Config) error {
return cm.defaulters.GenerateDefaultSSHKeys(ctx, c.SnowMachineConfigs, c.Cluster.Name)
},
func(c *cluster.Config) error {
return SetupEksaCredentialsSecret(c)
},
},
Validations: []cluster.Validation{
func(c *cluster.Config) error {
for _, m := range c.SnowMachineConfigs {
if err := cm.validator.ValidateEC2ImageExistsOnDevice(ctx, m); err != nil {
return err
}
}
return nil
},
func(c *cluster.Config) error {
for _, m := range c.SnowMachineConfigs {
if err := cm.validator.ValidateEC2SshKeyNameExists(ctx, m); err != nil {
return err
}
}
return nil
},
func(c *cluster.Config) error {
for _, m := range c.SnowMachineConfigs {
if err := cm.validator.ValidateDeviceIsUnlocked(ctx, m); err != nil {
return err
}
}
return nil
},
func(c *cluster.Config) error {
for _, m := range c.SnowMachineConfigs {
if err := cm.validator.ValidateInstanceType(ctx, m); err != nil {
return err
}
}
return nil
},
func(c *cluster.Config) error {
for _, m := range c.SnowMachineConfigs {
if err := cm.validator.ValidateDeviceSoftware(ctx, m); err != nil {
return err
}
}
return nil
},
func(c *cluster.Config) error {
return cm.validator.ValidateControlPlaneIP(ctx, c.Cluster.Spec.ControlPlaneConfiguration.Endpoint.Host)
},
},
}
}