mirror of https://github.com/kubernetes/kops.git
Make all users of userdata declare it as a dependency
This commit is contained in:
parent
07dc255559
commit
87446f8894
|
@ -50,7 +50,6 @@ func (b *ServerGroupModelBuilder) buildInstances(c *fi.ModelBuilderContext, sg *
|
|||
|
||||
clusterTag := "KubernetesCluster:" + strings.Replace(b.ClusterName(), ".", "-", -1)
|
||||
|
||||
var igUserData *string
|
||||
igMeta := make(map[string]string)
|
||||
|
||||
if ig.Spec.Role != kops.InstanceGroupRoleBastion {
|
||||
|
@ -81,14 +80,6 @@ func (b *ServerGroupModelBuilder) buildInstances(c *fi.ModelBuilderContext, sg *
|
|||
if err != nil {
|
||||
return fmt.Errorf("could not create startup script for instance group %s: %v", ig.Name, err)
|
||||
}
|
||||
if startupScript != nil {
|
||||
// var userData bytes.Buffer
|
||||
startupStr, err := startupScript.AsString()
|
||||
if err != nil {
|
||||
return fmt.Errorf("could not create startup script for instance group %s: %v", ig.Name, err)
|
||||
}
|
||||
igUserData = fi.String(startupStr)
|
||||
}
|
||||
|
||||
var securityGroups []*openstacktasks.SecurityGroup
|
||||
securityGroupName := b.SecurityGroupName(ig.Spec.Role)
|
||||
|
@ -149,13 +140,11 @@ func (b *ServerGroupModelBuilder) buildInstances(c *fi.ModelBuilderContext, sg *
|
|||
Tags: []string{clusterTag},
|
||||
Role: fi.String(string(ig.Spec.Role)),
|
||||
Port: portTask,
|
||||
UserData: startupScript,
|
||||
Metadata: igMeta,
|
||||
SecurityGroups: ig.Spec.AdditionalSecurityGroups,
|
||||
AvailabilityZone: az,
|
||||
}
|
||||
if igUserData != nil {
|
||||
instanceTask.UserData = igUserData
|
||||
}
|
||||
c.AddTask(instanceTask)
|
||||
|
||||
// Associate a floating IP to the master and bastion always if we have external network in router
|
||||
|
|
|
@ -126,7 +126,7 @@ func Test_ServerGroupModelBuilder(t *testing.T) {
|
|||
Tags: []string{"KubernetesCluster:cluster"},
|
||||
Role: s("Master"),
|
||||
Port: masterPort,
|
||||
UserData: s(mustUserdataForClusterInstance(cluster, instanceGroups[0])),
|
||||
UserData: mustUserdataForClusterInstance(cluster, instanceGroups[0]),
|
||||
Metadata: map[string]string{
|
||||
"KubernetesCluster": "cluster",
|
||||
"k8s": "cluster",
|
||||
|
@ -172,7 +172,7 @@ func Test_ServerGroupModelBuilder(t *testing.T) {
|
|||
Tags: []string{"KubernetesCluster:cluster"},
|
||||
Role: s("Node"),
|
||||
Port: nodePort,
|
||||
UserData: s(mustUserdataForClusterInstance(cluster, instanceGroups[1])),
|
||||
UserData: mustUserdataForClusterInstance(cluster, instanceGroups[1]),
|
||||
Metadata: map[string]string{
|
||||
"KubernetesCluster": "cluster",
|
||||
"k8s": "cluster",
|
||||
|
@ -311,7 +311,7 @@ func Test_ServerGroupModelBuilder(t *testing.T) {
|
|||
Tags: []string{"KubernetesCluster:cluster"},
|
||||
Role: s("Master"),
|
||||
Port: masterPort,
|
||||
UserData: s(mustUserdataForClusterInstance(cluster, instanceGroups[0])),
|
||||
UserData: mustUserdataForClusterInstance(cluster, instanceGroups[0]),
|
||||
Metadata: map[string]string{
|
||||
"KubernetesCluster": "cluster",
|
||||
"k8s": "cluster",
|
||||
|
@ -357,7 +357,7 @@ func Test_ServerGroupModelBuilder(t *testing.T) {
|
|||
Tags: []string{"KubernetesCluster:cluster"},
|
||||
Role: s("Node"),
|
||||
Port: nodePort,
|
||||
UserData: s(mustUserdataForClusterInstance(cluster, instanceGroups[1])),
|
||||
UserData: mustUserdataForClusterInstance(cluster, instanceGroups[1]),
|
||||
Metadata: map[string]string{
|
||||
"KubernetesCluster": "cluster",
|
||||
"k8s": "cluster",
|
||||
|
@ -398,7 +398,7 @@ func Test_ServerGroupModelBuilder(t *testing.T) {
|
|||
Tags: []string{"KubernetesCluster:cluster"},
|
||||
Role: s("Bastion"),
|
||||
Port: bastionPort,
|
||||
UserData: s(mustUserdataForClusterInstance(cluster, instanceGroups[2])),
|
||||
UserData: mustUserdataForClusterInstance(cluster, instanceGroups[2]),
|
||||
Metadata: map[string]string{
|
||||
"k8s": "cluster",
|
||||
"KopsInstanceGroup": "bastion",
|
||||
|
@ -578,7 +578,7 @@ func Test_ServerGroupModelBuilder(t *testing.T) {
|
|||
Tags: []string{"KubernetesCluster:cluster"},
|
||||
Role: s("Master"),
|
||||
Port: masterAPort,
|
||||
UserData: s(mustUserdataForClusterInstance(cluster, instanceGroups[0])),
|
||||
UserData: mustUserdataForClusterInstance(cluster, instanceGroups[0]),
|
||||
Metadata: map[string]string{
|
||||
"KubernetesCluster": "cluster",
|
||||
"k8s": "cluster",
|
||||
|
@ -625,7 +625,7 @@ func Test_ServerGroupModelBuilder(t *testing.T) {
|
|||
Tags: []string{"KubernetesCluster:cluster"},
|
||||
Role: s("Master"),
|
||||
Port: masterBPort,
|
||||
UserData: s(mustUserdataForClusterInstance(cluster, instanceGroups[0])),
|
||||
UserData: mustUserdataForClusterInstance(cluster, instanceGroups[0]),
|
||||
Metadata: map[string]string{
|
||||
"KubernetesCluster": "cluster",
|
||||
"k8s": "cluster",
|
||||
|
@ -672,7 +672,7 @@ func Test_ServerGroupModelBuilder(t *testing.T) {
|
|||
Tags: []string{"KubernetesCluster:cluster"},
|
||||
Role: s("Master"),
|
||||
Port: masterCPort,
|
||||
UserData: s(mustUserdataForClusterInstance(cluster, instanceGroups[0])),
|
||||
UserData: mustUserdataForClusterInstance(cluster, instanceGroups[0]),
|
||||
Metadata: map[string]string{
|
||||
"KubernetesCluster": "cluster",
|
||||
"k8s": "cluster",
|
||||
|
@ -718,7 +718,7 @@ func Test_ServerGroupModelBuilder(t *testing.T) {
|
|||
Tags: []string{"KubernetesCluster:cluster"},
|
||||
Role: s("Node"),
|
||||
Port: nodeAPort,
|
||||
UserData: s(mustUserdataForClusterInstance(cluster, instanceGroups[1])),
|
||||
UserData: mustUserdataForClusterInstance(cluster, instanceGroups[1]),
|
||||
Metadata: map[string]string{
|
||||
"KubernetesCluster": "cluster",
|
||||
"k8s": "cluster",
|
||||
|
@ -764,7 +764,7 @@ func Test_ServerGroupModelBuilder(t *testing.T) {
|
|||
Tags: []string{"KubernetesCluster:cluster"},
|
||||
Role: s("Node"),
|
||||
Port: nodeBPort,
|
||||
UserData: s(mustUserdataForClusterInstance(cluster, instanceGroups[1])),
|
||||
UserData: mustUserdataForClusterInstance(cluster, instanceGroups[1]),
|
||||
Metadata: map[string]string{
|
||||
"KubernetesCluster": "cluster",
|
||||
"k8s": "cluster",
|
||||
|
@ -810,7 +810,7 @@ func Test_ServerGroupModelBuilder(t *testing.T) {
|
|||
Tags: []string{"KubernetesCluster:cluster"},
|
||||
Role: s("Node"),
|
||||
Port: nodeCPort,
|
||||
UserData: s(mustUserdataForClusterInstance(cluster, instanceGroups[1])),
|
||||
UserData: mustUserdataForClusterInstance(cluster, instanceGroups[1]),
|
||||
Metadata: map[string]string{
|
||||
"KubernetesCluster": "cluster",
|
||||
"k8s": "cluster",
|
||||
|
@ -1007,7 +1007,7 @@ func Test_ServerGroupModelBuilder(t *testing.T) {
|
|||
Tags: []string{"KubernetesCluster:cluster"},
|
||||
Role: s("Master"),
|
||||
Port: masterAPort,
|
||||
UserData: s(mustUserdataForClusterInstance(cluster, instanceGroups[0])),
|
||||
UserData: mustUserdataForClusterInstance(cluster, instanceGroups[0]),
|
||||
Metadata: map[string]string{
|
||||
"KubernetesCluster": "cluster",
|
||||
"k8s": "cluster",
|
||||
|
@ -1048,7 +1048,7 @@ func Test_ServerGroupModelBuilder(t *testing.T) {
|
|||
Tags: []string{"KubernetesCluster:cluster"},
|
||||
Role: s("Master"),
|
||||
Port: masterBPort,
|
||||
UserData: s(mustUserdataForClusterInstance(cluster, instanceGroups[0])),
|
||||
UserData: mustUserdataForClusterInstance(cluster, instanceGroups[0]),
|
||||
Metadata: map[string]string{
|
||||
"KubernetesCluster": "cluster",
|
||||
"k8s": "cluster",
|
||||
|
@ -1089,7 +1089,7 @@ func Test_ServerGroupModelBuilder(t *testing.T) {
|
|||
Tags: []string{"KubernetesCluster:cluster"},
|
||||
Role: s("Master"),
|
||||
Port: masterCPort,
|
||||
UserData: s(mustUserdataForClusterInstance(cluster, instanceGroups[0])),
|
||||
UserData: mustUserdataForClusterInstance(cluster, instanceGroups[0]),
|
||||
Metadata: map[string]string{
|
||||
"KubernetesCluster": "cluster",
|
||||
"k8s": "cluster",
|
||||
|
@ -1130,7 +1130,7 @@ func Test_ServerGroupModelBuilder(t *testing.T) {
|
|||
Tags: []string{"KubernetesCluster:cluster"},
|
||||
Role: s("Node"),
|
||||
Port: nodeAPort,
|
||||
UserData: s(mustUserdataForClusterInstance(cluster, instanceGroups[1])),
|
||||
UserData: mustUserdataForClusterInstance(cluster, instanceGroups[1]),
|
||||
Metadata: map[string]string{
|
||||
"KubernetesCluster": "cluster",
|
||||
"k8s": "cluster",
|
||||
|
@ -1176,7 +1176,7 @@ func Test_ServerGroupModelBuilder(t *testing.T) {
|
|||
Tags: []string{"KubernetesCluster:cluster"},
|
||||
Role: s("Node"),
|
||||
Port: nodeBPort,
|
||||
UserData: s(mustUserdataForClusterInstance(cluster, instanceGroups[1])),
|
||||
UserData: mustUserdataForClusterInstance(cluster, instanceGroups[1]),
|
||||
Metadata: map[string]string{
|
||||
"KubernetesCluster": "cluster",
|
||||
"k8s": "cluster",
|
||||
|
@ -1222,7 +1222,7 @@ func Test_ServerGroupModelBuilder(t *testing.T) {
|
|||
Tags: []string{"KubernetesCluster:cluster"},
|
||||
Role: s("Node"),
|
||||
Port: nodeCPort,
|
||||
UserData: s(mustUserdataForClusterInstance(cluster, instanceGroups[1])),
|
||||
UserData: mustUserdataForClusterInstance(cluster, instanceGroups[1]),
|
||||
Metadata: map[string]string{
|
||||
"KubernetesCluster": "cluster",
|
||||
"k8s": "cluster",
|
||||
|
@ -1463,7 +1463,7 @@ func Test_ServerGroupModelBuilder(t *testing.T) {
|
|||
Tags: []string{"KubernetesCluster:cluster"},
|
||||
Role: s("Master"),
|
||||
Port: masterAPort,
|
||||
UserData: s(mustUserdataForClusterInstance(cluster, instanceGroups[0])),
|
||||
UserData: mustUserdataForClusterInstance(cluster, instanceGroups[0]),
|
||||
Metadata: map[string]string{
|
||||
"KubernetesCluster": "cluster",
|
||||
"k8s": "cluster",
|
||||
|
@ -1505,7 +1505,7 @@ func Test_ServerGroupModelBuilder(t *testing.T) {
|
|||
Tags: []string{"KubernetesCluster:cluster"},
|
||||
Role: s("Master"),
|
||||
Port: masterBPort,
|
||||
UserData: s(mustUserdataForClusterInstance(cluster, instanceGroups[0])),
|
||||
UserData: mustUserdataForClusterInstance(cluster, instanceGroups[0]),
|
||||
Metadata: map[string]string{
|
||||
"KubernetesCluster": "cluster",
|
||||
"k8s": "cluster",
|
||||
|
@ -1547,7 +1547,7 @@ func Test_ServerGroupModelBuilder(t *testing.T) {
|
|||
Tags: []string{"KubernetesCluster:cluster"},
|
||||
Role: s("Master"),
|
||||
Port: masterCPort,
|
||||
UserData: s(mustUserdataForClusterInstance(cluster, instanceGroups[0])),
|
||||
UserData: mustUserdataForClusterInstance(cluster, instanceGroups[0]),
|
||||
Metadata: map[string]string{
|
||||
"KubernetesCluster": "cluster",
|
||||
"k8s": "cluster",
|
||||
|
@ -1588,7 +1588,7 @@ func Test_ServerGroupModelBuilder(t *testing.T) {
|
|||
Tags: []string{"KubernetesCluster:cluster"},
|
||||
Role: s("Node"),
|
||||
Port: nodeAPort,
|
||||
UserData: s(mustUserdataForClusterInstance(cluster, instanceGroups[1])),
|
||||
UserData: mustUserdataForClusterInstance(cluster, instanceGroups[1]),
|
||||
Metadata: map[string]string{
|
||||
"KubernetesCluster": "cluster",
|
||||
"k8s": "cluster",
|
||||
|
@ -1629,7 +1629,7 @@ func Test_ServerGroupModelBuilder(t *testing.T) {
|
|||
Tags: []string{"KubernetesCluster:cluster"},
|
||||
Role: s("Node"),
|
||||
Port: nodeBPort,
|
||||
UserData: s(mustUserdataForClusterInstance(cluster, instanceGroups[1])),
|
||||
UserData: mustUserdataForClusterInstance(cluster, instanceGroups[1]),
|
||||
Metadata: map[string]string{
|
||||
"KubernetesCluster": "cluster",
|
||||
"k8s": "cluster",
|
||||
|
@ -1670,7 +1670,7 @@ func Test_ServerGroupModelBuilder(t *testing.T) {
|
|||
Tags: []string{"KubernetesCluster:cluster"},
|
||||
Role: s("Node"),
|
||||
Port: nodeCPort,
|
||||
UserData: s(mustUserdataForClusterInstance(cluster, instanceGroups[1])),
|
||||
UserData: mustUserdataForClusterInstance(cluster, instanceGroups[1]),
|
||||
Metadata: map[string]string{
|
||||
"KubernetesCluster": "cluster",
|
||||
"k8s": "cluster",
|
||||
|
@ -1813,7 +1813,7 @@ func Test_ServerGroupModelBuilder(t *testing.T) {
|
|||
Tags: []string{"KubernetesCluster:cluster"},
|
||||
Role: s("Master"),
|
||||
Port: masterAPort,
|
||||
UserData: s(mustUserdataForClusterInstance(cluster, instanceGroups[0])),
|
||||
UserData: mustUserdataForClusterInstance(cluster, instanceGroups[0]),
|
||||
Metadata: map[string]string{
|
||||
"KubernetesCluster": "cluster",
|
||||
"k8s": "cluster",
|
||||
|
@ -1852,7 +1852,7 @@ func Test_ServerGroupModelBuilder(t *testing.T) {
|
|||
Tags: []string{"KubernetesCluster:cluster"},
|
||||
Role: s("Master"),
|
||||
Port: masterBPort,
|
||||
UserData: s(mustUserdataForClusterInstance(cluster, instanceGroups[0])),
|
||||
UserData: mustUserdataForClusterInstance(cluster, instanceGroups[0]),
|
||||
Metadata: map[string]string{
|
||||
"KubernetesCluster": "cluster",
|
||||
"k8s": "cluster",
|
||||
|
@ -1891,7 +1891,7 @@ func Test_ServerGroupModelBuilder(t *testing.T) {
|
|||
Tags: []string{"KubernetesCluster:cluster"},
|
||||
Role: s("Master"),
|
||||
Port: masterCPort,
|
||||
UserData: s(mustUserdataForClusterInstance(cluster, instanceGroups[0])),
|
||||
UserData: mustUserdataForClusterInstance(cluster, instanceGroups[0]),
|
||||
Metadata: map[string]string{
|
||||
"KubernetesCluster": "cluster",
|
||||
"k8s": "cluster",
|
||||
|
@ -1937,7 +1937,7 @@ func Test_ServerGroupModelBuilder(t *testing.T) {
|
|||
Tags: []string{"KubernetesCluster:cluster"},
|
||||
Role: s("Node"),
|
||||
Port: nodeAPort,
|
||||
UserData: s(mustUserdataForClusterInstance(cluster, instanceGroups[1])),
|
||||
UserData: mustUserdataForClusterInstance(cluster, instanceGroups[1]),
|
||||
Metadata: map[string]string{
|
||||
"KubernetesCluster": "cluster",
|
||||
"k8s": "cluster",
|
||||
|
@ -1975,7 +1975,7 @@ func Test_ServerGroupModelBuilder(t *testing.T) {
|
|||
Tags: []string{"KubernetesCluster:cluster"},
|
||||
Role: s("Node"),
|
||||
Port: nodeBPort,
|
||||
UserData: s(mustUserdataForClusterInstance(cluster, instanceGroups[1])),
|
||||
UserData: mustUserdataForClusterInstance(cluster, instanceGroups[1]),
|
||||
Metadata: map[string]string{
|
||||
"KubernetesCluster": "cluster",
|
||||
"k8s": "cluster",
|
||||
|
@ -2013,7 +2013,7 @@ func Test_ServerGroupModelBuilder(t *testing.T) {
|
|||
Tags: []string{"KubernetesCluster:cluster"},
|
||||
Role: s("Node"),
|
||||
Port: nodeCPort,
|
||||
UserData: s(mustUserdataForClusterInstance(cluster, instanceGroups[1])),
|
||||
UserData: mustUserdataForClusterInstance(cluster, instanceGroups[1]),
|
||||
Metadata: map[string]string{
|
||||
"KubernetesCluster": "cluster",
|
||||
"k8s": "cluster",
|
||||
|
@ -2141,7 +2141,7 @@ func Test_ServerGroupModelBuilder(t *testing.T) {
|
|||
Tags: []string{"KubernetesCluster:cluster"},
|
||||
Role: s("Master"),
|
||||
Port: masterPort,
|
||||
UserData: s(mustUserdataForClusterInstance(cluster, instanceGroups[0])),
|
||||
UserData: mustUserdataForClusterInstance(cluster, instanceGroups[0]),
|
||||
Metadata: map[string]string{
|
||||
"KubernetesCluster": "cluster",
|
||||
"k8s": "cluster",
|
||||
|
@ -2182,7 +2182,7 @@ func Test_ServerGroupModelBuilder(t *testing.T) {
|
|||
Tags: []string{"KubernetesCluster:cluster"},
|
||||
Role: s("Node"),
|
||||
Port: nodePort,
|
||||
UserData: s(mustUserdataForClusterInstance(cluster, instanceGroups[1])),
|
||||
UserData: mustUserdataForClusterInstance(cluster, instanceGroups[1]),
|
||||
Metadata: map[string]string{
|
||||
"KubernetesCluster": "cluster",
|
||||
"k8s": "cluster",
|
||||
|
@ -2317,7 +2317,7 @@ func Test_ServerGroupModelBuilder(t *testing.T) {
|
|||
Tags: []string{"KubernetesCluster:cluster"},
|
||||
Role: s("Master"),
|
||||
Port: masterPort,
|
||||
UserData: s(mustUserdataForClusterInstance(cluster, instanceGroups[0])),
|
||||
UserData: mustUserdataForClusterInstance(cluster, instanceGroups[0]),
|
||||
Metadata: map[string]string{
|
||||
"KubernetesCluster": "cluster",
|
||||
"k8s": "cluster",
|
||||
|
@ -2358,7 +2358,7 @@ func Test_ServerGroupModelBuilder(t *testing.T) {
|
|||
Tags: []string{"KubernetesCluster:cluster"},
|
||||
Role: s("Node"),
|
||||
Port: nodePort,
|
||||
UserData: s(mustUserdataForClusterInstance(cluster, instanceGroups[1])),
|
||||
UserData: mustUserdataForClusterInstance(cluster, instanceGroups[1]),
|
||||
Metadata: map[string]string{
|
||||
"KubernetesCluster": "cluster",
|
||||
"k8s": "cluster",
|
||||
|
@ -2399,7 +2399,7 @@ func Test_ServerGroupModelBuilder(t *testing.T) {
|
|||
Tags: []string{"KubernetesCluster:cluster"},
|
||||
Role: s("Bastion"),
|
||||
Port: bastionPort,
|
||||
UserData: s(mustUserdataForClusterInstance(cluster, instanceGroups[2])),
|
||||
UserData: mustUserdataForClusterInstance(cluster, instanceGroups[2]),
|
||||
Metadata: map[string]string{
|
||||
"k8s": "cluster",
|
||||
"KopsInstanceGroup": "bastion",
|
||||
|
@ -2495,7 +2495,7 @@ func Test_ServerGroupModelBuilder(t *testing.T) {
|
|||
Tags: []string{"KubernetesCluster:cluster"},
|
||||
Role: s("Node"),
|
||||
Port: nodePort,
|
||||
UserData: s(mustUserdataForClusterInstance(cluster, instanceGroups[0])),
|
||||
UserData: mustUserdataForClusterInstance(cluster, instanceGroups[0]),
|
||||
Metadata: map[string]string{
|
||||
"KubernetesCluster": "cluster",
|
||||
"k8s": "cluster",
|
||||
|
@ -2591,7 +2591,7 @@ func Test_ServerGroupModelBuilder(t *testing.T) {
|
|||
Tags: []string{"KubernetesCluster:cluster"},
|
||||
Role: s("Node"),
|
||||
Port: nodePort,
|
||||
UserData: s(mustUserdataForClusterInstance(cluster, instanceGroups[0])),
|
||||
UserData: mustUserdataForClusterInstance(cluster, instanceGroups[0]),
|
||||
Metadata: map[string]string{
|
||||
"KubernetesCluster": "cluster",
|
||||
"k8s": "cluster",
|
||||
|
@ -2685,7 +2685,7 @@ func Test_ServerGroupModelBuilder(t *testing.T) {
|
|||
Tags: []string{"KubernetesCluster:cluster"},
|
||||
Role: s("Node"),
|
||||
Port: nodePort,
|
||||
UserData: s(mustUserdataForClusterInstance(cluster, instanceGroups[0])),
|
||||
UserData: mustUserdataForClusterInstance(cluster, instanceGroups[0]),
|
||||
Metadata: map[string]string{
|
||||
"KubernetesCluster": "cluster",
|
||||
"k8s": "cluster",
|
||||
|
@ -3099,18 +3099,25 @@ func compareStrings(t *testing.T, name string, actual, expected *string) {
|
|||
}
|
||||
}
|
||||
|
||||
func compareUserData(t *testing.T, actual, expected *string) {
|
||||
func compareUserData(t *testing.T, actual, expected *fi.ResourceHolder) {
|
||||
t.Helper()
|
||||
if pointersAreBothNil(t, "UserData", actual, expected) {
|
||||
return
|
||||
}
|
||||
if !reflect.DeepEqual(actual, expected) {
|
||||
var a, e string
|
||||
var err error
|
||||
if actual != nil {
|
||||
a = *actual
|
||||
a, err = actual.AsString()
|
||||
if err != nil {
|
||||
t.Errorf("error getting actual: %v", err)
|
||||
}
|
||||
}
|
||||
if expected != nil {
|
||||
e = *expected
|
||||
e, err = expected.AsString()
|
||||
if err != nil {
|
||||
t.Errorf("error getting actual: %v", err)
|
||||
}
|
||||
}
|
||||
aLines := strings.Split(a, "\n")
|
||||
eLines := strings.Split(e, "\n")
|
||||
|
@ -3186,7 +3193,7 @@ func (n *nodeupConfigBuilder) BuildConfig(ig *kops.InstanceGroup) (*nodeup.Confi
|
|||
return &nodeup.Config{}, nil
|
||||
}
|
||||
|
||||
func mustUserdataForClusterInstance(cluster *kops.Cluster, ig *kops.InstanceGroup) string {
|
||||
func mustUserdataForClusterInstance(cluster *kops.Cluster, ig *kops.InstanceGroup) *fi.ResourceHolder {
|
||||
bootstrapScriptBuilder := &model.BootstrapScript{
|
||||
NodeUpConfigBuilder: &nodeupConfigBuilder{},
|
||||
NodeUpSource: map[architectures.Architecture]string{
|
||||
|
@ -3206,5 +3213,5 @@ func mustUserdataForClusterInstance(cluster *kops.Cluster, ig *kops.InstanceGrou
|
|||
if err != nil {
|
||||
panic(fmt.Errorf("error converting userdata to string: %v", err))
|
||||
}
|
||||
return userdata
|
||||
return fi.WrapResource(fi.NewStringResource(userdata))
|
||||
}
|
||||
|
|
|
@ -72,12 +72,18 @@ type LaunchConfiguration struct {
|
|||
Tags map[string]string
|
||||
}
|
||||
|
||||
var _ fi.Task = &LaunchConfiguration{}
|
||||
var _ fi.CompareWithID = &LaunchConfiguration{}
|
||||
var _ fi.HasDependencies = &LaunchConfiguration{}
|
||||
|
||||
func (l *LaunchConfiguration) CompareWithID() *string {
|
||||
return l.ID
|
||||
}
|
||||
|
||||
func (l *LaunchConfiguration) GetDependencies(tasks map[string]fi.Task) []fi.Task {
|
||||
return l.UserData.GetDependencies(tasks)
|
||||
}
|
||||
|
||||
func (l *LaunchConfiguration) Find(c *fi.Context) (*LaunchConfiguration, error) {
|
||||
if l.ScalingGroup == nil || l.ScalingGroup.ScalingGroupId == nil {
|
||||
klog.V(4).Infof("ScalingGroup / ScalingGroupId not found for %s, skipping Find", fi.StringValue(l.Name))
|
||||
|
|
|
@ -94,13 +94,17 @@ type LaunchConfiguration struct {
|
|||
}
|
||||
|
||||
var _ fi.CompareWithID = &LaunchConfiguration{}
|
||||
|
||||
var _ fi.HasDependencies = &LaunchConfiguration{}
|
||||
var _ fi.ProducesDeletions = &LaunchConfiguration{}
|
||||
|
||||
func (e *LaunchConfiguration) CompareWithID() *string {
|
||||
return e.ID
|
||||
}
|
||||
|
||||
func (l *LaunchConfiguration) GetDependencies(tasks map[string]fi.Task) []fi.Task {
|
||||
return l.UserData.GetDependencies(tasks)
|
||||
}
|
||||
|
||||
// findLaunchConfigurations returns matching LaunchConfigurations, sorted by CreatedTime (ascending)
|
||||
func (e *LaunchConfiguration) findLaunchConfigurations(c *fi.Context) ([]*autoscaling.LaunchConfiguration, error) {
|
||||
cloud := c.Cloud.(awsup.AWSCloud)
|
||||
|
|
|
@ -53,6 +53,7 @@ func TestLaunchConfigurationGarbageCollection(t *testing.T) {
|
|||
ImageID: s("ami-12345678"),
|
||||
InstanceType: s("m3.medium"),
|
||||
SecurityGroups: []*SecurityGroup{},
|
||||
UserData: fi.WrapResource(fi.NewStringResource("")),
|
||||
}
|
||||
|
||||
return map[string]fi.Task{
|
||||
|
|
|
@ -45,12 +45,18 @@ type Droplet struct {
|
|||
UserData *fi.ResourceHolder
|
||||
}
|
||||
|
||||
var _ fi.Task = &Droplet{}
|
||||
var _ fi.CompareWithID = &Droplet{}
|
||||
var _ fi.HasDependencies = &Droplet{}
|
||||
|
||||
func (d *Droplet) CompareWithID() *string {
|
||||
return d.Name
|
||||
}
|
||||
|
||||
func (l *Droplet) GetDependencies(tasks map[string]fi.Task) []fi.Task {
|
||||
return l.UserData.GetDependencies(tasks)
|
||||
}
|
||||
|
||||
func (d *Droplet) Find(c *fi.Context) (*Droplet, error) {
|
||||
cloud := c.Cloud.(*digitalocean.Cloud)
|
||||
|
||||
|
|
|
@ -68,12 +68,22 @@ type InstanceTemplate struct {
|
|||
ID *string
|
||||
}
|
||||
|
||||
var _ fi.Task = &InstanceTemplate{}
|
||||
var _ fi.CompareWithID = &InstanceTemplate{}
|
||||
var _ fi.HasDependencies = &InstanceTemplate{}
|
||||
|
||||
func (e *InstanceTemplate) CompareWithID() *string {
|
||||
return e.ID
|
||||
}
|
||||
|
||||
func (l *InstanceTemplate) GetDependencies(tasks map[string]fi.Task) []fi.Task {
|
||||
var deps []fi.Task
|
||||
for _, resource := range l.Metadata {
|
||||
deps = append(deps, resource.GetDependencies(tasks)...)
|
||||
}
|
||||
return deps
|
||||
}
|
||||
|
||||
func (e *InstanceTemplate) Find(c *fi.Context) (*InstanceTemplate, error) {
|
||||
cloud := c.Cloud.(gce.GCECloud)
|
||||
|
||||
|
|
|
@ -41,7 +41,7 @@ type Instance struct {
|
|||
ServerGroup *ServerGroup
|
||||
Tags []string
|
||||
Role *string
|
||||
UserData *string
|
||||
UserData *fi.ResourceHolder
|
||||
Metadata map[string]string
|
||||
AvailabilityZone *string
|
||||
SecurityGroups []string
|
||||
|
@ -49,7 +49,9 @@ type Instance struct {
|
|||
Lifecycle *fi.Lifecycle
|
||||
}
|
||||
|
||||
var _ fi.Task = &Instance{}
|
||||
var _ fi.HasAddress = &Instance{}
|
||||
var _ fi.HasDependencies = &Instance{}
|
||||
|
||||
// GetDependencies returns the dependencies of the Instance task
|
||||
func (e *Instance) GetDependencies(tasks map[string]fi.Task) []fi.Task {
|
||||
|
@ -62,6 +64,11 @@ func (e *Instance) GetDependencies(tasks map[string]fi.Task) []fi.Task {
|
|||
deps = append(deps, task)
|
||||
}
|
||||
}
|
||||
|
||||
if e.UserData != nil {
|
||||
deps = append(deps, e.UserData.GetDependencies(tasks)...)
|
||||
}
|
||||
|
||||
return deps
|
||||
}
|
||||
|
||||
|
@ -169,7 +176,11 @@ func (_ *Instance) RenderOpenstack(t *openstack.OpenstackAPITarget, a, e, change
|
|||
SecurityGroups: e.SecurityGroups,
|
||||
}
|
||||
if e.UserData != nil {
|
||||
opt.UserData = []byte(*e.UserData)
|
||||
bytes, err := e.UserData.AsBytes()
|
||||
if err != nil {
|
||||
return err
|
||||
}
|
||||
opt.UserData = bytes
|
||||
}
|
||||
if e.AvailabilityZone != nil {
|
||||
opt.AvailabilityZone = fi.StringValue(e.AvailabilityZone)
|
||||
|
|
|
@ -100,14 +100,14 @@ type AutoScalerDownOpts struct {
|
|||
EvaluationPeriods *int
|
||||
}
|
||||
|
||||
var _ fi.Task = &Elastigroup{}
|
||||
var _ fi.CompareWithID = &Elastigroup{}
|
||||
var _ fi.HasDependencies = &Elastigroup{}
|
||||
|
||||
func (e *Elastigroup) CompareWithID() *string {
|
||||
return e.Name
|
||||
}
|
||||
|
||||
var _ fi.HasDependencies = &Elastigroup{}
|
||||
|
||||
func (e *Elastigroup) GetDependencies(tasks map[string]fi.Task) []fi.Task {
|
||||
var deps []fi.Task
|
||||
|
||||
|
@ -135,6 +135,10 @@ func (e *Elastigroup) GetDependencies(tasks map[string]fi.Task) []fi.Task {
|
|||
}
|
||||
}
|
||||
|
||||
if e.UserData != nil {
|
||||
deps = append(deps, e.UserData.GetDependencies(tasks)...)
|
||||
}
|
||||
|
||||
return deps
|
||||
}
|
||||
|
||||
|
|
|
@ -51,14 +51,14 @@ type LaunchSpec struct {
|
|||
Ocean *Ocean
|
||||
}
|
||||
|
||||
var _ fi.Task = &LaunchSpec{}
|
||||
var _ fi.CompareWithID = &LaunchSpec{}
|
||||
var _ fi.HasDependencies = &LaunchSpec{}
|
||||
|
||||
func (o *LaunchSpec) CompareWithID() *string {
|
||||
return o.Name
|
||||
}
|
||||
|
||||
var _ fi.HasDependencies = &LaunchSpec{}
|
||||
|
||||
func (o *LaunchSpec) GetDependencies(tasks map[string]fi.Task) []fi.Task {
|
||||
var deps []fi.Task
|
||||
|
||||
|
@ -82,6 +82,10 @@ func (o *LaunchSpec) GetDependencies(tasks map[string]fi.Task) []fi.Task {
|
|||
deps = append(deps, o.Ocean)
|
||||
}
|
||||
|
||||
if o.UserData != nil {
|
||||
deps = append(deps, o.UserData.GetDependencies(tasks)...)
|
||||
}
|
||||
|
||||
return deps
|
||||
}
|
||||
|
||||
|
|
|
@ -64,14 +64,14 @@ type Ocean struct {
|
|||
AutoScalerOpts *AutoScalerOpts
|
||||
}
|
||||
|
||||
var _ fi.Task = &Ocean{}
|
||||
var _ fi.CompareWithID = &Ocean{}
|
||||
var _ fi.HasDependencies = &Ocean{}
|
||||
|
||||
func (o *Ocean) CompareWithID() *string {
|
||||
return o.Name
|
||||
}
|
||||
|
||||
var _ fi.HasDependencies = &Ocean{}
|
||||
|
||||
func (o *Ocean) GetDependencies(tasks map[string]fi.Task) []fi.Task {
|
||||
var deps []fi.Task
|
||||
|
||||
|
@ -95,6 +95,10 @@ func (o *Ocean) GetDependencies(tasks map[string]fi.Task) []fi.Task {
|
|||
}
|
||||
}
|
||||
|
||||
if o.UserData != nil {
|
||||
deps = append(deps, o.UserData.GetDependencies(tasks)...)
|
||||
}
|
||||
|
||||
return deps
|
||||
}
|
||||
|
||||
|
|
Loading…
Reference in New Issue