diff --git a/cli/internal/cmd/init_test.go b/cli/internal/cmd/init_test.go index 582ad9a2b..7b401fd05 100644 --- a/cli/internal/cmd/init_test.go +++ b/cli/internal/cmd/init_test.go @@ -601,6 +601,8 @@ func (m *stubMerger) kubeconfigEnvVar() string { func defaultConfigWithExpectedMeasurements(t *testing.T, conf *config.Config, csp cloudprovider.Provider) *config.Config { t.Helper() + conf.RemoveProviderAndAttestationExcept(csp) + conf.Image = constants.BinaryVersion().String() conf.Name = "kubernetes" diff --git a/internal/config/BUILD.bazel b/internal/config/BUILD.bazel index 340ad682e..4385f89a4 100644 --- a/internal/config/BUILD.bazel +++ b/internal/config/BUILD.bazel @@ -25,10 +25,12 @@ go_library( "//internal/attestation/variant", "//internal/cloud/cloudprovider", "//internal/compatibility", + "//internal/config/disktypes", "//internal/config/imageversion", "//internal/config/instancetypes", "//internal/constants", "//internal/file", + "//internal/role", "//internal/semver", "//internal/versions", "@com_github_go_playground_locales//en", diff --git a/internal/config/config_test.go b/internal/config/config_test.go index 720b5b532..c066b92cf 100644 --- a/internal/config/config_test.go +++ b/internal/config/config_test.go @@ -149,6 +149,24 @@ func modifyConfigForAzureToPassValidate(c *Config) { c.Attestation.AzureSEVSNP.Measurements = measurements.M{ 0: measurements.WithAllBytes(0x00, measurements.Enforce, measurements.PCRMeasurementLength), } + c.NodeGroups = map[string]NodeGroup{ + constants.ControlPlaneDefault: { + Role: "control-plane", + Zone: "", + InstanceType: "Standard_DC4as_v5", + StateDiskSizeGB: 30, + StateDiskType: "StandardSSD_LRS", + InitialCount: 3, + }, + constants.WorkerDefault: { + Role: "worker", + Zone: "", + InstanceType: "Standard_DC4as_v5", + StateDiskSizeGB: 30, + StateDiskType: "StandardSSD_LRS", + InitialCount: 3, + }, + } } func TestReadConfigFile(t *testing.T) { @@ -233,11 +251,12 @@ func TestFromFile(t *testing.T) { }, "custom config from default file": { config: &Config{ - Version: Version3, + Version: Version4, }, configName: constants.ConfigFilename, wantResult: &Config{ - Version: Version3, + Version: Version4, + NodeGroups: map[string]NodeGroup{}, }, }, "modify default config": { @@ -280,10 +299,10 @@ func TestFromFile(t *testing.T) { } func TestValidate(t *testing.T) { - const defaultErrCount = 33 // expect this number of error messages by default because user-specific values are not set and multiple providers are defined by default + const defaultErrCount = 37 // expect this number of error messages by default because user-specific values are not set and multiple providers are defined by default const azErrCount = 7 - const awsErrCount = 6 - const gcpErrCount = 6 + const awsErrCount = 8 + const gcpErrCount = 8 // TODO(AB#3132,3u13r): refactor config validation tests // Note that the `cnf.Image = ""` is a hack to align `bazel test` with `go test` behavior @@ -337,12 +356,12 @@ func TestValidate(t *testing.T) { wantErr: true, wantErrCount: defaultErrCount + 1, }, - "v0 and negative state disk are two errors": { + "v0 and long name are two errors": { cnf: func() *Config { cnf := Default() cnf.Image = "" cnf.Version = "v0" - cnf.StateDiskSizeGB = -1 + cnf.Name = "aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa" return cnf }(), wantErr: true, @@ -374,6 +393,7 @@ func TestValidate(t *testing.T) { cnf.Attestation.AzureSEVSNP.Measurements = measurements.M{ 0: measurements.WithAllBytes(0x00, measurements.Enforce, measurements.PCRMeasurementLength), } + modifyConfigForAzureToPassValidate(cnf) return cnf }(), }, @@ -395,7 +415,7 @@ func TestValidate(t *testing.T) { return cnf }(), wantErr: true, - wantErrCount: awsErrCount - 2, + wantErrCount: awsErrCount - 4, }, "AWS config with wrong region and zone format": { cnf: func() *Config { @@ -434,6 +454,24 @@ func TestValidate(t *testing.T) { cnf.Attestation.GCPSEVES.Measurements = measurements.M{ 0: measurements.WithAllBytes(0x00, measurements.Enforce, measurements.PCRMeasurementLength), } + cnf.NodeGroups = map[string]NodeGroup{ + constants.ControlPlaneDefault: { + Role: "control-plane", + Zone: "europe-west1-b", + InstanceType: "n2d-standard-4", + StateDiskSizeGB: 30, + StateDiskType: "pd-ssd", + InitialCount: 3, + }, + constants.WorkerDefault: { + Role: "worker", + Zone: "europe-west1-b", + InstanceType: "n2d-standard-4", + StateDiskSizeGB: 30, + StateDiskType: "pd-ssd", + InitialCount: 3, + }, + } return cnf }(), }, @@ -889,7 +927,7 @@ func TestValidateProvider(t *testing.T) { } func TestConfigVersionCompatibility(t *testing.T) { - t.Skip() // TODO(daniel-weisse): re-enable and re-write for config v3 + t.Skip() // TODO(daniel-weisse): re-enable and re-write for config v4 testCases := map[string]struct { config string expectedConfig *Config @@ -899,7 +937,6 @@ func TestConfigVersionCompatibility(t *testing.T) { expectedConfig: &Config{ Version: "v2", Image: "v2.5.0", - StateDiskSizeGB: 16, KubernetesVersion: "1.23", DebugCluster: toPtr(false), Provider: ProviderConfig{ @@ -908,8 +945,6 @@ func TestConfigVersionCompatibility(t *testing.T) { Region: "europe-west3", Zone: "europe-west3-b", ServiceAccountKeyPath: "serviceAccountKey.json", - InstanceType: "n2d-standard-4", - StateDiskType: "pd-ssd", DeployCSIDriver: toPtr(true), }, }, @@ -920,15 +955,12 @@ func TestConfigVersionCompatibility(t *testing.T) { expectedConfig: &Config{ Version: "v2", Image: "v2.5.0", - StateDiskSizeGB: 16, KubernetesVersion: "1.23", DebugCluster: toPtr(false), Provider: ProviderConfig{ AWS: &AWSConfig{ Region: "us-east-2", Zone: "us-east-2a", - InstanceType: "c5.xlarge", - StateDiskType: "gp2", IAMProfileControlPlane: "control_plane_instance_profile", IAMProfileWorkerNodes: "node_instance_profile", },