Include AuxConfig output in TestBootstrapUserData

This commit is contained in:
John Gardiner Myers 2021-05-16 12:05:07 -07:00
parent 9cba5e345d
commit c3c1aca3c1
10 changed files with 43 additions and 22 deletions

View File

@ -44,11 +44,13 @@ func Test_InstanceGroupKubeletMerge(t *testing.T) {
instanceGroup.Spec.Kubelet.NvidiaGPUs = 1
instanceGroup.Spec.Role = kops.InstanceGroupRoleNode
config, auxConfig := nodeup.NewConfig(cluster, instanceGroup)
b := &KubeletBuilder{
&NodeupModelContext{
Cluster: cluster,
InstanceGroup: instanceGroup,
NodeupConfig: nodeup.NewConfig(cluster, instanceGroup),
Cluster: cluster,
InstanceGroup: instanceGroup,
NodeupConfig: config,
NodeupAuxConfig: auxConfig,
},
}
if err := b.Init(); err != nil {
@ -89,11 +91,13 @@ func TestTaintsApplied(t *testing.T) {
cluster := &kops.Cluster{Spec: kops.ClusterSpec{KubernetesVersion: g.version}}
ig := &kops.InstanceGroup{Spec: kops.InstanceGroupSpec{Role: kops.InstanceGroupRoleMaster, Taints: g.taints}}
config, auxConfig := nodeup.NewConfig(cluster, ig)
b := &KubeletBuilder{
&NodeupModelContext{
Cluster: cluster,
InstanceGroup: ig,
NodeupConfig: nodeup.NewConfig(cluster, ig),
Cluster: cluster,
InstanceGroup: ig,
NodeupConfig: config,
NodeupAuxConfig: auxConfig,
},
}
if err := b.Init(); err != nil {
@ -239,7 +243,7 @@ func BuildNodeupModelContext(basedir string) (*NodeupModelContext, error) {
// We tolerate this - not all tests need an instance group
} else if len(model.InstanceGroups) == 1 {
nodeUpModelContext.InstanceGroup = model.InstanceGroups[0]
nodeUpModelContext.NodeupConfig = nodeup.NewConfig(model.Cluster, nodeUpModelContext.InstanceGroup)
nodeUpModelContext.NodeupConfig, nodeUpModelContext.NodeupAuxConfig = nodeup.NewConfig(model.Cluster, nodeUpModelContext.InstanceGroup)
} else {
return nil, fmt.Errorf("unexpected number of instance groups in %s, found %d", basedir, len(model.InstanceGroups))
}

View File

@ -103,7 +103,7 @@ type StaticManifest struct {
Path string `json:"path,omitempty"`
}
func NewConfig(cluster *kops.Cluster, instanceGroup *kops.InstanceGroup) *Config {
func NewConfig(cluster *kops.Cluster, instanceGroup *kops.InstanceGroup) (*Config, *AuxConfig) {
role := instanceGroup.Spec.Role
isMaster := role == kops.InstanceGroupRoleMaster
@ -144,5 +144,5 @@ func NewConfig(cluster *kops.Cluster, instanceGroup *kops.InstanceGroup) *Config
config.DefaultMachineType = fi.String(strings.Split(instanceGroup.Spec.MachineType, ",")[0])
}
return &config
return &config, &AuxConfig{}
}

View File

@ -17,6 +17,7 @@ limitations under the License.
package model
import (
"fmt"
"strings"
"testing"
@ -64,61 +65,62 @@ type nodeupConfigBuilder struct {
}
func (n *nodeupConfigBuilder) BuildConfig(ig *kops.InstanceGroup, apiserverAdditionalIPs []string, ca fi.Resource) (*nodeup.Config, *nodeup.AuxConfig, error) {
return nodeup.NewConfig(n.cluster, ig), &nodeup.AuxConfig{}, nil
config, auxConfig := nodeup.NewConfig(n.cluster, ig)
return config, auxConfig, nil
}
func TestBootstrapUserData(t *testing.T) {
cs := []struct {
Role kops.InstanceGroupRole
ExpectedFilePath string
ExpectedFileIndex int
HookSpecRoles []kops.InstanceGroupRole
FileAssetSpecRoles []kops.InstanceGroupRole
}{
{
Role: "Master",
ExpectedFilePath: "tests/data/bootstrapscript_0.txt",
ExpectedFileIndex: 0,
HookSpecRoles: []kops.InstanceGroupRole{""},
FileAssetSpecRoles: []kops.InstanceGroupRole{""},
},
{
Role: "Master",
ExpectedFilePath: "tests/data/bootstrapscript_0.txt",
ExpectedFileIndex: 0,
HookSpecRoles: []kops.InstanceGroupRole{"Node"},
FileAssetSpecRoles: []kops.InstanceGroupRole{"Node"},
},
{
Role: "Master",
ExpectedFilePath: "tests/data/bootstrapscript_1.txt",
ExpectedFileIndex: 1,
HookSpecRoles: []kops.InstanceGroupRole{"Master"},
FileAssetSpecRoles: []kops.InstanceGroupRole{"Master"},
},
{
Role: "Master",
ExpectedFilePath: "tests/data/bootstrapscript_2.txt",
ExpectedFileIndex: 2,
HookSpecRoles: []kops.InstanceGroupRole{"Master", "Node"},
FileAssetSpecRoles: []kops.InstanceGroupRole{"Master", "Node"},
},
{
Role: "Node",
ExpectedFilePath: "tests/data/bootstrapscript_3.txt",
ExpectedFileIndex: 3,
HookSpecRoles: []kops.InstanceGroupRole{""},
FileAssetSpecRoles: []kops.InstanceGroupRole{""},
},
{
Role: "Node",
ExpectedFilePath: "tests/data/bootstrapscript_4.txt",
ExpectedFileIndex: 4,
HookSpecRoles: []kops.InstanceGroupRole{"Node"},
FileAssetSpecRoles: []kops.InstanceGroupRole{"Node"},
},
{
Role: "Node",
ExpectedFilePath: "tests/data/bootstrapscript_3.txt",
ExpectedFileIndex: 3,
HookSpecRoles: []kops.InstanceGroupRole{"Master"},
FileAssetSpecRoles: []kops.InstanceGroupRole{"Master"},
},
{
Role: "Node",
ExpectedFilePath: "tests/data/bootstrapscript_5.txt",
ExpectedFileIndex: 5,
HookSpecRoles: []kops.InstanceGroupRole{"Master", "Node"},
FileAssetSpecRoles: []kops.InstanceGroupRole{"Master", "Node"},
},
@ -168,7 +170,16 @@ func TestBootstrapUserData(t *testing.T) {
continue
}
golden.AssertMatchesFile(t, actual, x.ExpectedFilePath)
golden.AssertMatchesFile(t, actual, fmt.Sprintf("tests/data/bootstrapscript_%d.txt", x.ExpectedFileIndex))
require.Contains(t, c.Tasks, "ManagedFile/auxconfig-testIG")
actual, err = fi.ResourceAsString(c.Tasks["ManagedFile/auxconfig-testIG"].(*fitasks.ManagedFile).Contents)
if err != nil {
t.Errorf("case %d failed to render auxconfig resource. error: %s", i, err)
continue
}
golden.AssertMatchesFile(t, actual, fmt.Sprintf("tests/data/auxconfig_%d.txt", x.ExpectedFileIndex))
}
}

View File

@ -0,0 +1 @@
{}

View File

@ -0,0 +1 @@
{}

View File

@ -0,0 +1 @@
{}

View File

@ -0,0 +1 @@
{}

View File

@ -0,0 +1 @@
{}

View File

@ -0,0 +1 @@
{}

View File

@ -1310,7 +1310,7 @@ func (n *nodeUpConfigBuilder) BuildConfig(ig *kops.InstanceGroup, apiserverAddit
useGossip := dns.IsGossipHostname(cluster.Spec.MasterInternalName)
isMaster := role == kops.InstanceGroupRoleMaster
config := nodeup.NewConfig(cluster, ig)
config, auxConfig := nodeup.NewConfig(cluster, ig)
config.Assets = make(map[architectures.Architecture][]string)
for _, arch := range architectures.GetSupported() {
config.Assets[arch] = []string{}
@ -1386,5 +1386,5 @@ func (n *nodeUpConfigBuilder) BuildConfig(ig *kops.InstanceGroup, apiserverAddit
config.Channels = n.channels
config.EtcdManifests = n.etcdManifests[role]
return config, &nodeup.AuxConfig{}, nil
return config, auxConfig, nil
}