Rename BootstrapScript to BootstrapScriptBuilder

This commit is contained in:
John Gardiner Myers 2020-06-26 10:57:36 -07:00
parent 87446f8894
commit cef5b175c7
10 changed files with 61 additions and 61 deletions

View File

@ -33,9 +33,9 @@ const DefaultInstanceType = "ecs.n2.medium"
type ScalingGroupModelBuilder struct {
*ALIModelContext
BootstrapScript *model.BootstrapScript
Lifecycle *fi.Lifecycle
SecurityLifecycle *fi.Lifecycle
BootstrapScriptBuilder *model.BootstrapScriptBuilder
Lifecycle *fi.Lifecycle
SecurityLifecycle *fi.Lifecycle
}
var _ fi.ModelBuilder = &ScalingGroupModelBuilder{}
@ -129,7 +129,7 @@ func (b *ScalingGroupModelBuilder) Build(c *fi.ModelBuilderContext) error {
return err
}
launchConfiguration.SSHKey = b.LinkToSSHKey()
if launchConfiguration.UserData, err = b.BootstrapScript.ResourceNodeUp(ig, b.Cluster); err != nil {
if launchConfiguration.UserData, err = b.BootstrapScriptBuilder.ResourceNodeUp(ig, b.Cluster); err != nil {
return err
}
}

View File

@ -45,9 +45,9 @@ const (
type AutoscalingGroupModelBuilder struct {
*AWSModelContext
BootstrapScript *model.BootstrapScript
Lifecycle *fi.Lifecycle
SecurityLifecycle *fi.Lifecycle
BootstrapScriptBuilder *model.BootstrapScriptBuilder
Lifecycle *fi.Lifecycle
SecurityLifecycle *fi.Lifecycle
}
var _ fi.ModelBuilder = &AutoscalingGroupModelBuilder{}
@ -261,7 +261,7 @@ func (b *AutoscalingGroupModelBuilder) buildLaunchConfigurationTask(c *fi.ModelB
}
// @step: add the instancegroup userdata
if t.UserData, err = b.BootstrapScript.ResourceNodeUp(ig, b.Cluster); err != nil {
if t.UserData, err = b.BootstrapScriptBuilder.ResourceNodeUp(ig, b.Cluster); err != nil {
return nil, err
}

View File

@ -43,15 +43,15 @@ type NodeUpConfigBuilder interface {
BuildConfig(ig *kops.InstanceGroup) (*nodeup.Config, error)
}
// BootstrapScript creates the bootstrap script
type BootstrapScript struct {
// BootstrapScriptBuilder creates the bootstrap script
type BootstrapScriptBuilder struct {
NodeUpSource map[architectures.Architecture]string
NodeUpSourceHash map[architectures.Architecture]string
NodeUpConfigBuilder NodeUpConfigBuilder
}
// kubeEnv returns the nodeup config for the instance group
func (b *BootstrapScript) kubeEnv(ig *kops.InstanceGroup) (string, error) {
func (b *BootstrapScriptBuilder) kubeEnv(ig *kops.InstanceGroup) (string, error) {
config, err := b.NodeUpConfigBuilder.BuildConfig(ig)
if err != nil {
return "", err
@ -65,7 +65,7 @@ func (b *BootstrapScript) kubeEnv(ig *kops.InstanceGroup) (string, error) {
return string(data), nil
}
func (b *BootstrapScript) buildEnvironmentVariables(cluster *kops.Cluster) (map[string]string, error) {
func (b *BootstrapScriptBuilder) buildEnvironmentVariables(cluster *kops.Cluster) (map[string]string, error) {
env := make(map[string]string)
if os.Getenv("GOSSIP_DNS_CONN_LIMIT") != "" {
@ -135,7 +135,7 @@ func (b *BootstrapScript) buildEnvironmentVariables(cluster *kops.Cluster) (map[
// ResourceNodeUp generates and returns a nodeup (bootstrap) script from a
// template file, substituting in specific env vars & cluster spec configuration
func (b *BootstrapScript) ResourceNodeUp(ig *kops.InstanceGroup, cluster *kops.Cluster) (*fi.ResourceHolder, error) {
func (b *BootstrapScriptBuilder) ResourceNodeUp(ig *kops.InstanceGroup, cluster *kops.Cluster) (*fi.ResourceHolder, error) {
// Bastions can have AdditionalUserData, but if there isn't any skip this part
if ig.IsBastion() && len(ig.Spec.AdditionalUserData) == 0 {
templateResource, err := NewTemplateResource("nodeup", "", nil, nil)
@ -299,7 +299,7 @@ func (b *BootstrapScript) ResourceNodeUp(ig *kops.InstanceGroup, cluster *kops.C
// getRelevantHooks returns a list of hooks to be applied to the instance group,
// with the Manifest and ExecContainer Commands fingerprinted to reduce size
func (b *BootstrapScript) getRelevantHooks(allHooks []kops.HookSpec, role kops.InstanceGroupRole) ([]kops.HookSpec, error) {
func (b *BootstrapScriptBuilder) getRelevantHooks(allHooks []kops.HookSpec, role kops.InstanceGroupRole) ([]kops.HookSpec, error) {
relevantHooks := []kops.HookSpec{}
for _, hook := range allHooks {
if len(hook.Roles) == 0 {
@ -349,7 +349,7 @@ func (b *BootstrapScript) getRelevantHooks(allHooks []kops.HookSpec, role kops.I
// getRelevantFileAssets returns a list of file assets to be applied to the
// instance group, with the Content fingerprinted to reduce size
func (b *BootstrapScript) getRelevantFileAssets(allFileAssets []kops.FileAssetSpec, role kops.InstanceGroupRole) ([]kops.FileAssetSpec, error) {
func (b *BootstrapScriptBuilder) getRelevantFileAssets(allFileAssets []kops.FileAssetSpec, role kops.InstanceGroupRole) ([]kops.FileAssetSpec, error) {
relevantFileAssets := []kops.FileAssetSpec{}
for _, fileAsset := range allFileAssets {
if len(fileAsset.Roles) == 0 {
@ -384,7 +384,7 @@ func (b *BootstrapScript) getRelevantFileAssets(allFileAssets []kops.FileAssetSp
}
// computeFingerprint takes a string and returns a base64 encoded fingerprint
func (b *BootstrapScript) computeFingerprint(content string) (string, error) {
func (b *BootstrapScriptBuilder) computeFingerprint(content string) (string, error) {
hasher := sha1.New()
if _, err := hasher.Write([]byte(content)); err != nil {
@ -394,7 +394,7 @@ func (b *BootstrapScript) computeFingerprint(content string) (string, error) {
return base64.StdEncoding.EncodeToString(hasher.Sum(nil)), nil
}
func (b *BootstrapScript) createProxyEnv(ps *kops.EgressProxySpec) string {
func (b *BootstrapScriptBuilder) createProxyEnv(ps *kops.EgressProxySpec) string {
var buffer bytes.Buffer
if ps != nil && ps.HTTPProxy.Host != "" {

View File

@ -27,7 +27,7 @@ import (
)
func Test_ProxyFunc(t *testing.T) {
b := &BootstrapScript{}
b := &BootstrapScriptBuilder{}
ps := &kops.EgressProxySpec{
HTTPProxy: kops.HTTPProxy{
Host: "example.com",
@ -122,7 +122,7 @@ func TestBootstrapUserData(t *testing.T) {
cluster := makeTestCluster(x.HookSpecRoles, x.FileAssetSpecRoles)
group := makeTestInstanceGroup(x.Role, x.HookSpecRoles, x.FileAssetSpecRoles)
bs := &BootstrapScript{
bs := &BootstrapScriptBuilder{
NodeUpConfigBuilder: &nodeupConfigBuilder{cluster: cluster},
NodeUpSource: map[architectures.Architecture]string{
architectures.ArchitectureAmd64: "NUSourceAmd64",

View File

@ -30,8 +30,8 @@ import (
type DropletBuilder struct {
*DOModelContext
BootstrapScript *model.BootstrapScript
Lifecycle *fi.Lifecycle
BootstrapScriptBuilder *model.BootstrapScriptBuilder
Lifecycle *fi.Lifecycle
}
var _ fi.ModelBuilder = &DropletBuilder{}
@ -78,7 +78,7 @@ func (d *DropletBuilder) Build(c *fi.ModelBuilderContext) error {
droplet.Tags = append(droplet.Tags, do.TagKubernetesClusterInstanceGroupPrefix+":"+"nodes")
}
userData, err := d.BootstrapScript.ResourceNodeUp(ig, d.Cluster)
userData, err := d.BootstrapScriptBuilder.ResourceNodeUp(ig, d.Cluster)
if err != nil {
return err
}

View File

@ -40,8 +40,8 @@ const (
type AutoscalingGroupModelBuilder struct {
*GCEModelContext
BootstrapScript *model.BootstrapScript
Lifecycle *fi.Lifecycle
BootstrapScriptBuilder *model.BootstrapScriptBuilder
Lifecycle *fi.Lifecycle
}
var _ fi.ModelBuilder = &AutoscalingGroupModelBuilder{}
@ -50,7 +50,7 @@ func (b *AutoscalingGroupModelBuilder) Build(c *fi.ModelBuilderContext) error {
for _, ig := range b.InstanceGroups {
name := b.SafeObjectName(ig.ObjectMeta.Name)
startupScript, err := b.BootstrapScript.ResourceNodeUp(ig, b.Cluster)
startupScript, err := b.BootstrapScriptBuilder.ResourceNodeUp(ig, b.Cluster)
if err != nil {
return err
}

View File

@ -33,8 +33,8 @@ import (
// ServerGroupModelBuilder configures server group objects
type ServerGroupModelBuilder struct {
*OpenstackModelContext
BootstrapScript *model.BootstrapScript
Lifecycle *fi.Lifecycle
BootstrapScriptBuilder *model.BootstrapScriptBuilder
Lifecycle *fi.Lifecycle
}
var _ fi.ModelBuilder = &ServerGroupModelBuilder{}
@ -76,7 +76,7 @@ func (b *ServerGroupModelBuilder) buildInstances(c *fi.ModelBuilderContext, sg *
igMeta[openstack.BOOT_VOLUME_SIZE] = v
}
startupScript, err := b.BootstrapScript.ResourceNodeUp(ig, b.Cluster)
startupScript, err := b.BootstrapScriptBuilder.ResourceNodeUp(ig, b.Cluster)
if err != nil {
return fmt.Errorf("could not create startup script for instance group %s: %v", ig.Name, err)
}

View File

@ -2712,7 +2712,7 @@ func Test_ServerGroupModelBuilder(t *testing.T) {
for _, testCase := range tests {
t.Run(testCase.desc, func(t *testing.T) {
clusterLifecycle := fi.LifecycleSync
bootstrapScriptBuilder := &model.BootstrapScript{
bootstrapScriptBuilder := &model.BootstrapScriptBuilder{
NodeUpConfigBuilder: &nodeupConfigBuilder{},
NodeUpSource: map[architectures.Architecture]string{
architectures.ArchitectureAmd64: "source-amd64",
@ -2798,7 +2798,7 @@ func Test_ServerGroupModelBuilder(t *testing.T) {
}
}
func createBuilderForCluster(cluster *kops.Cluster, instanceGroups []*kops.InstanceGroup, clusterLifecycle fi.Lifecycle, bootstrapScript *model.BootstrapScript) *ServerGroupModelBuilder {
func createBuilderForCluster(cluster *kops.Cluster, instanceGroups []*kops.InstanceGroup, clusterLifecycle fi.Lifecycle, bootstrapScriptBuilder *model.BootstrapScriptBuilder) *ServerGroupModelBuilder {
sshPublicKey := []byte("ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABAQDF2sghZsClUBXJB4mBMIw8rb0hJWjg1Vz4eUeXwYmTdi92Gf1zNc5xISSip9Y+PWX/jJokPB7tgPnMD/2JOAKhG1bi4ZqB15pYRmbbBekVpM4o4E0dx+czbqjiAm6wlccTrINK5LYenbucAAQt19eH+D0gJwzYUK9SYz1hWnlGS+qurt2bz7rrsG73lN8E2eiNvGtIXqv3GabW/Hea3acOBgCUJQWUDTRu0OmmwxzKbFN/UpNKeRaHlCqwZWjVAsmqA8TX8LIocq7Np7MmIBwt7EpEeZJxThcmC8DEJs9ClAjD+jlLIvMPXKC3JWCPgwCLGxHjy7ckSGFCSzbyPduh")
modelContext := &model.KopsModelContext{
@ -2811,9 +2811,9 @@ func createBuilderForCluster(cluster *kops.Cluster, instanceGroups []*kops.Insta
}
return &ServerGroupModelBuilder{
OpenstackModelContext: openstackModelContext,
BootstrapScript: bootstrapScript,
Lifecycle: &clusterLifecycle,
OpenstackModelContext: openstackModelContext,
BootstrapScriptBuilder: bootstrapScriptBuilder,
Lifecycle: &clusterLifecycle,
}
}
@ -3194,7 +3194,7 @@ func (n *nodeupConfigBuilder) BuildConfig(ig *kops.InstanceGroup) (*nodeup.Confi
}
func mustUserdataForClusterInstance(cluster *kops.Cluster, ig *kops.InstanceGroup) *fi.ResourceHolder {
bootstrapScriptBuilder := &model.BootstrapScript{
bootstrapScriptBuilder := &model.BootstrapScriptBuilder{
NodeUpConfigBuilder: &nodeupConfigBuilder{},
NodeUpSource: map[architectures.Architecture]string{
architectures.ArchitectureAmd64: "source-amd64",

View File

@ -112,9 +112,9 @@ const (
type InstanceGroupModelBuilder struct {
*model.KopsModelContext
BootstrapScript *model.BootstrapScript
Lifecycle *fi.Lifecycle
SecurityLifecycle *fi.Lifecycle
BootstrapScriptBuilder *model.BootstrapScriptBuilder
Lifecycle *fi.Lifecycle
SecurityLifecycle *fi.Lifecycle
}
var _ fi.ModelBuilder = &InstanceGroupModelBuilder{}
@ -267,7 +267,7 @@ func (b *InstanceGroupModelBuilder) buildElastigroup(c *fi.ModelBuilderContext,
}
// User data.
group.UserData, err = b.BootstrapScript.ResourceNodeUp(ig, b.Cluster)
group.UserData, err = b.BootstrapScriptBuilder.ResourceNodeUp(ig, b.Cluster)
if err != nil {
return fmt.Errorf("error building user data: %v", err)
}
@ -422,7 +422,7 @@ func (b *InstanceGroupModelBuilder) buildOcean(c *fi.ModelBuilderContext, igs ..
ocean.Monitoring = ig.Spec.DetailedInstanceMonitoring
// User data.
ocean.UserData, err = b.BootstrapScript.ResourceNodeUp(ig, b.Cluster)
ocean.UserData, err = b.BootstrapScriptBuilder.ResourceNodeUp(ig, b.Cluster)
if err != nil {
return fmt.Errorf("error building user data: %v", err)
}
@ -512,7 +512,7 @@ func (b *InstanceGroupModelBuilder) buildLaunchSpec(c *fi.ModelBuilderContext,
ocean.MaxSize = fi.Int64(fi.Int64Value(ocean.MaxSize) + fi.Int64Value(maxSize))
// User data.
launchSpec.UserData, err = b.BootstrapScript.ResourceNodeUp(ig, b.Cluster)
launchSpec.UserData, err = b.BootstrapScriptBuilder.ResourceNodeUp(ig, b.Cluster)
if err != nil {
return fmt.Errorf("error building user data: %v", err)
}

View File

@ -701,7 +701,7 @@ func (c *ApplyClusterCmd) Run(ctx context.Context) error {
if err != nil {
return err
}
bootstrapScriptBuilder := &model.BootstrapScript{
bootstrapScriptBuilder := &model.BootstrapScriptBuilder{
NodeUpConfigBuilder: configBuilder,
NodeUpSource: c.NodeUpSource,
NodeUpSourceHash: c.NodeUpHash,
@ -714,18 +714,18 @@ func (c *ApplyClusterCmd) Run(ctx context.Context) error {
}
awsModelBuilder := &awsmodel.AutoscalingGroupModelBuilder{
AWSModelContext: awsModelContext,
BootstrapScript: bootstrapScriptBuilder,
Lifecycle: &clusterLifecycle,
SecurityLifecycle: &securityLifecycle,
AWSModelContext: awsModelContext,
BootstrapScriptBuilder: bootstrapScriptBuilder,
Lifecycle: &clusterLifecycle,
SecurityLifecycle: &securityLifecycle,
}
if featureflag.Spotinst.Enabled() {
l.Builders = append(l.Builders, &spotinstmodel.InstanceGroupModelBuilder{
KopsModelContext: modelContext,
BootstrapScript: bootstrapScriptBuilder,
Lifecycle: &clusterLifecycle,
SecurityLifecycle: &securityLifecycle,
KopsModelContext: modelContext,
BootstrapScriptBuilder: bootstrapScriptBuilder,
Lifecycle: &clusterLifecycle,
SecurityLifecycle: &securityLifecycle,
})
if featureflag.SpotinstHybrid.Enabled() {
@ -741,9 +741,9 @@ func (c *ApplyClusterCmd) Run(ctx context.Context) error {
}
l.Builders = append(l.Builders, &domodel.DropletBuilder{
DOModelContext: doModelContext,
BootstrapScript: bootstrapScriptBuilder,
Lifecycle: &clusterLifecycle,
DOModelContext: doModelContext,
BootstrapScriptBuilder: bootstrapScriptBuilder,
Lifecycle: &clusterLifecycle,
})
case kops.CloudProviderGCE:
{
@ -752,9 +752,9 @@ func (c *ApplyClusterCmd) Run(ctx context.Context) error {
}
l.Builders = append(l.Builders, &gcemodel.AutoscalingGroupModelBuilder{
GCEModelContext: gceModelContext,
BootstrapScript: bootstrapScriptBuilder,
Lifecycle: &clusterLifecycle,
GCEModelContext: gceModelContext,
BootstrapScriptBuilder: bootstrapScriptBuilder,
Lifecycle: &clusterLifecycle,
})
}
@ -765,9 +765,9 @@ func (c *ApplyClusterCmd) Run(ctx context.Context) error {
}
l.Builders = append(l.Builders, &alimodel.ScalingGroupModelBuilder{
ALIModelContext: aliModelContext,
BootstrapScript: bootstrapScriptBuilder,
Lifecycle: &clusterLifecycle,
ALIModelContext: aliModelContext,
BootstrapScriptBuilder: bootstrapScriptBuilder,
Lifecycle: &clusterLifecycle,
})
}
@ -777,9 +777,9 @@ func (c *ApplyClusterCmd) Run(ctx context.Context) error {
}
l.Builders = append(l.Builders, &openstackmodel.ServerGroupModelBuilder{
OpenstackModelContext: openstackModelContext,
BootstrapScript: bootstrapScriptBuilder,
Lifecycle: &clusterLifecycle,
OpenstackModelContext: openstackModelContext,
BootstrapScriptBuilder: bootstrapScriptBuilder,
Lifecycle: &clusterLifecycle,
})
default: