mirror of https://github.com/kubernetes/kops.git
Replace (some) deprecated ResourceHolder with Resource
This removes more of the deprecated type, but it also simplifies refactoring the GCE InstanceTemplate.
This commit is contained in:
parent
9561ed38c5
commit
45d11ba12c
|
@ -187,14 +187,14 @@ 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 *BootstrapScriptBuilder) ResourceNodeUp(c *fi.ModelBuilderContext, ig *kops.InstanceGroup) (*fi.ResourceHolder, error) {
|
||||
func (b *BootstrapScriptBuilder) ResourceNodeUp(c *fi.ModelBuilderContext, ig *kops.InstanceGroup) (fi.Resource, 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)
|
||||
if err != nil {
|
||||
return nil, err
|
||||
}
|
||||
return fi.WrapResource(templateResource), nil
|
||||
return templateResource, nil
|
||||
}
|
||||
|
||||
task := &BootstrapScript{
|
||||
|
@ -204,7 +204,7 @@ func (b *BootstrapScriptBuilder) ResourceNodeUp(c *fi.ModelBuilderContext, ig *k
|
|||
}
|
||||
task.resource.Task = task
|
||||
c.AddTask(task)
|
||||
return fi.WrapResource(&task.resource), nil
|
||||
return &task.resource, nil
|
||||
}
|
||||
|
||||
func (b *BootstrapScript) GetName() *string {
|
||||
|
|
|
@ -150,7 +150,7 @@ func TestBootstrapUserData(t *testing.T) {
|
|||
err = c.Tasks["BootstrapScript/testIG"].Run(&fi.Context{Cluster: cluster})
|
||||
require.NoError(t, err, "running task")
|
||||
|
||||
actual, err := res.AsString()
|
||||
actual, err := fi.ResourceAsString(res)
|
||||
if err != nil {
|
||||
t.Errorf("case %d failed to render nodeup resource. error: %s", i, err)
|
||||
continue
|
||||
|
|
|
@ -89,11 +89,11 @@ func (b *AutoscalingGroupModelBuilder) Build(c *fi.ModelBuilderContext) error {
|
|||
"monitoring",
|
||||
"logging-write",
|
||||
},
|
||||
Metadata: map[string]*fi.ResourceHolder{
|
||||
Metadata: map[string]fi.Resource{
|
||||
"startup-script": startupScript,
|
||||
//"config": resources/config.yaml $nodeset.Name
|
||||
"cluster-name": fi.WrapResource(fi.NewStringResource(b.ClusterName())),
|
||||
nodeidentitygce.MetadataKeyInstanceGroupName: fi.WrapResource(fi.NewStringResource(ig.Name)),
|
||||
"cluster-name": fi.NewStringResource(b.ClusterName()),
|
||||
nodeidentitygce.MetadataKeyInstanceGroupName: fi.NewStringResource(ig.Name),
|
||||
},
|
||||
}
|
||||
|
||||
|
|
|
@ -65,7 +65,7 @@ type LaunchConfiguration struct {
|
|||
RAMRole *RAMRole
|
||||
ScalingGroup *ScalingGroup
|
||||
SSHKey *SSHKey
|
||||
UserData *fi.ResourceHolder
|
||||
UserData fi.Resource
|
||||
SecurityGroup *SecurityGroup
|
||||
|
||||
Tags map[string]string
|
||||
|
@ -246,7 +246,7 @@ func (_ *LaunchConfiguration) RenderALI(t *aliup.ALIAPITarget, a, e, changes *La
|
|||
}
|
||||
|
||||
if e.UserData != nil {
|
||||
userData, err := e.UserData.AsString()
|
||||
userData, err := fi.ResourceAsString(e.UserData)
|
||||
if err != nil {
|
||||
return fmt.Errorf("error rendering ScalingLaunchConfiguration UserData: %v", err)
|
||||
}
|
||||
|
@ -314,7 +314,7 @@ type terraformLaunchConfiguration struct {
|
|||
}
|
||||
|
||||
func (_ *LaunchConfiguration) RenderTerraform(t *terraform.TerraformTarget, a, e, changes *LaunchConfiguration) error {
|
||||
data, err := e.UserData.AsBytes()
|
||||
data, err := fi.ResourceAsBytes(e.UserData)
|
||||
if err != nil {
|
||||
return fmt.Errorf("error rendering ScalingLaunchConfiguration UserData: %v", err)
|
||||
}
|
||||
|
|
|
@ -95,7 +95,7 @@ type LaunchConfiguration struct {
|
|||
// Tenancy. Can be either default or dedicated.
|
||||
Tenancy *string
|
||||
// UserData is the user data configuration
|
||||
UserData *fi.ResourceHolder
|
||||
UserData fi.Resource
|
||||
}
|
||||
|
||||
var _ fi.CompareWithID = &LaunchConfiguration{}
|
||||
|
@ -349,7 +349,7 @@ func (_ *LaunchConfiguration) RenderAWS(t *awsup.AWSAPITarget, a, e, changes *La
|
|||
}
|
||||
|
||||
if e.UserData != nil {
|
||||
d, err := e.UserData.AsBytes()
|
||||
d, err := fi.ResourceAsBytes(e.UserData)
|
||||
if err != nil {
|
||||
return fmt.Errorf("error rendering AutoScalingLaunchConfiguration UserData: %v", err)
|
||||
}
|
||||
|
@ -694,7 +694,7 @@ func (_ *LaunchConfiguration) RenderCloudformation(t *cloudformation.Cloudformat
|
|||
}
|
||||
|
||||
if e.UserData != nil {
|
||||
d, err := e.UserData.AsBytes()
|
||||
d, err := fi.ResourceAsBytes(e.UserData)
|
||||
if err != nil {
|
||||
return fmt.Errorf("error rendering AutoScalingLaunchConfiguration UserData: %v", err)
|
||||
}
|
||||
|
|
|
@ -79,7 +79,7 @@ type LaunchTemplate struct {
|
|||
// Tenancy. Can be either default or dedicated.
|
||||
Tenancy *string
|
||||
// UserData is the user data configuration
|
||||
UserData *fi.ResourceHolder
|
||||
UserData fi.Resource
|
||||
}
|
||||
|
||||
var (
|
||||
|
|
|
@ -117,7 +117,7 @@ func (t *LaunchTemplate) RenderAWS(c *awsup.AWSAPITarget, a, e, changes *LaunchT
|
|||
}
|
||||
// @step: add the userdata
|
||||
if t.UserData != nil {
|
||||
d, err := t.UserData.AsBytes()
|
||||
d, err := fi.ResourceAsBytes(t.UserData)
|
||||
if err != nil {
|
||||
return fmt.Errorf("error rendering LaunchTemplate UserData: %v", err)
|
||||
}
|
||||
|
|
|
@ -232,7 +232,7 @@ func (t *LaunchTemplate) RenderCloudformation(target *cloudformation.Cloudformat
|
|||
}
|
||||
}
|
||||
if e.UserData != nil {
|
||||
d, err := e.UserData.AsBytes()
|
||||
d, err := fi.ResourceAsBytes(e.UserData)
|
||||
if err != nil {
|
||||
return err
|
||||
}
|
||||
|
|
|
@ -235,7 +235,7 @@ func (t *LaunchTemplate) RenderTerraform(target *terraform.TerraformTarget, a, e
|
|||
}
|
||||
}
|
||||
if e.UserData != nil {
|
||||
d, err := e.UserData.AsBytes()
|
||||
d, err := fi.ResourceAsBytes(e.UserData)
|
||||
if err != nil {
|
||||
return err
|
||||
}
|
||||
|
|
|
@ -42,7 +42,7 @@ type Droplet struct {
|
|||
SSHKey *string
|
||||
Tags []string
|
||||
Count int
|
||||
UserData *fi.ResourceHolder
|
||||
UserData fi.Resource
|
||||
}
|
||||
|
||||
var _ fi.Task = &Droplet{}
|
||||
|
@ -120,7 +120,7 @@ func (d *Droplet) Run(c *fi.Context) error {
|
|||
}
|
||||
|
||||
func (_ *Droplet) RenderDO(t *do.DOAPITarget, a, e, changes *Droplet) error {
|
||||
userData, err := e.UserData.AsString()
|
||||
userData, err := fi.ResourceAsString(e.UserData)
|
||||
if err != nil {
|
||||
return err
|
||||
}
|
||||
|
|
|
@ -61,7 +61,7 @@ type InstanceTemplate struct {
|
|||
Scopes []string
|
||||
ServiceAccounts []string
|
||||
|
||||
Metadata map[string]*fi.ResourceHolder
|
||||
Metadata map[string]fi.Resource
|
||||
MachineType *string
|
||||
|
||||
// ID is the actual name
|
||||
|
@ -166,7 +166,7 @@ func (e *InstanceTemplate) Find(c *fi.Context) (*InstanceTemplate, error) {
|
|||
//}
|
||||
|
||||
if p.Metadata != nil {
|
||||
actual.Metadata = make(map[string]*fi.ResourceHolder)
|
||||
actual.Metadata = make(map[string]fi.Resource)
|
||||
for _, meta := range p.Metadata.Items {
|
||||
actual.Metadata[meta.Key] = fi.WrapResource(fi.NewStringResource(fi.StringValue(meta.Value)))
|
||||
}
|
||||
|
@ -301,7 +301,7 @@ func (e *InstanceTemplate) mapToGCE(project string, region string) (*compute.Ins
|
|||
|
||||
var metadataItems []*compute.MetadataItems
|
||||
for key, r := range e.Metadata {
|
||||
v, err := r.AsString()
|
||||
v, err := fi.ResourceAsString(r)
|
||||
if err != nil {
|
||||
return nil, fmt.Errorf("error rendering InstanceTemplate metadata %q: %v", key, err)
|
||||
}
|
||||
|
|
|
@ -43,7 +43,7 @@ type Instance struct {
|
|||
SSHKey *string
|
||||
ServerGroup *ServerGroup
|
||||
Role *string
|
||||
UserData *fi.ResourceHolder
|
||||
UserData fi.Resource
|
||||
Metadata map[string]string
|
||||
AvailabilityZone *string
|
||||
SecurityGroups []string
|
||||
|
@ -73,7 +73,7 @@ func (e *Instance) GetDependencies(tasks map[string]fi.Task) []fi.Task {
|
|||
}
|
||||
|
||||
if e.UserData != nil {
|
||||
deps = append(deps, e.UserData.GetDependencies(tasks)...)
|
||||
deps = append(deps, fi.FindDependencies(tasks, e.UserData)...)
|
||||
}
|
||||
|
||||
return deps
|
||||
|
@ -266,7 +266,7 @@ func (_ *Instance) RenderOpenstack(t *openstack.OpenstackAPITarget, a, e, change
|
|||
SecurityGroups: e.SecurityGroups,
|
||||
}
|
||||
if e.UserData != nil {
|
||||
bytes, err := e.UserData.AsBytes()
|
||||
bytes, err := fi.ResourceAsBytes(e.UserData)
|
||||
if err != nil {
|
||||
return err
|
||||
}
|
||||
|
|
|
@ -58,7 +58,7 @@ type Elastigroup struct {
|
|||
Product *string
|
||||
Orientation *string
|
||||
Tags map[string]string
|
||||
UserData *fi.ResourceHolder
|
||||
UserData fi.Resource
|
||||
ImageID *string
|
||||
OnDemandInstanceType *string
|
||||
SpotInstanceTypes []string
|
||||
|
@ -147,7 +147,7 @@ func (e *Elastigroup) GetDependencies(tasks map[string]fi.Task) []fi.Task {
|
|||
}
|
||||
|
||||
if e.UserData != nil {
|
||||
deps = append(deps, e.UserData.GetDependencies(tasks)...)
|
||||
deps = append(deps, fi.FindDependencies(tasks, e.UserData)...)
|
||||
}
|
||||
|
||||
return deps
|
||||
|
@ -584,7 +584,7 @@ func (_ *Elastigroup) create(cloud awsup.AWSCloud, a, e, changes *Elastigroup) e
|
|||
// User data.
|
||||
{
|
||||
if e.UserData != nil {
|
||||
userData, err := e.UserData.AsString()
|
||||
userData, err := fi.ResourceAsString(e.UserData)
|
||||
if err != nil {
|
||||
return err
|
||||
}
|
||||
|
@ -953,7 +953,7 @@ func (_ *Elastigroup) update(cloud awsup.AWSCloud, a, e, changes *Elastigroup) e
|
|||
// User data.
|
||||
{
|
||||
if changes.UserData != nil {
|
||||
userData, err := e.UserData.AsString()
|
||||
userData, err := fi.ResourceAsString(e.UserData)
|
||||
if err != nil {
|
||||
return err
|
||||
}
|
||||
|
|
|
@ -40,7 +40,7 @@ type LaunchSpec struct {
|
|||
Lifecycle *fi.Lifecycle
|
||||
|
||||
ID *string
|
||||
UserData *fi.ResourceHolder
|
||||
UserData fi.Resource
|
||||
SecurityGroups []*awstasks.SecurityGroup
|
||||
Subnets []*awstasks.Subnet
|
||||
IAMInstanceProfile *awstasks.IAMInstanceProfile
|
||||
|
@ -85,7 +85,7 @@ func (o *LaunchSpec) GetDependencies(tasks map[string]fi.Task) []fi.Task {
|
|||
}
|
||||
|
||||
if o.UserData != nil {
|
||||
deps = append(deps, o.UserData.GetDependencies(tasks)...)
|
||||
deps = append(deps, fi.FindDependencies(tasks, o.UserData)...)
|
||||
}
|
||||
|
||||
return deps
|
||||
|
@ -330,7 +330,7 @@ func (_ *LaunchSpec) create(cloud awsup.AWSCloud, a, e, changes *LaunchSpec) err
|
|||
// User data.
|
||||
{
|
||||
if e.UserData != nil {
|
||||
userData, err := e.UserData.AsString()
|
||||
userData, err := fi.ResourceAsString(e.UserData)
|
||||
if err != nil {
|
||||
return err
|
||||
}
|
||||
|
@ -491,7 +491,7 @@ func (_ *LaunchSpec) update(cloud awsup.AWSCloud, a, e, changes *LaunchSpec) err
|
|||
// User data.
|
||||
{
|
||||
if changes.UserData != nil {
|
||||
userData, err := e.UserData.AsString()
|
||||
userData, err := fi.ResourceAsString(e.UserData)
|
||||
if err != nil {
|
||||
return err
|
||||
}
|
||||
|
|
|
@ -52,7 +52,7 @@ type Ocean struct {
|
|||
InstanceTypesWhitelist []string
|
||||
InstanceTypesBlacklist []string
|
||||
Tags map[string]string
|
||||
UserData *fi.ResourceHolder
|
||||
UserData fi.Resource
|
||||
ImageID *string
|
||||
IAMInstanceProfile *awstasks.IAMInstanceProfile
|
||||
SSHKey *awstasks.SSHKey
|
||||
|
@ -96,7 +96,7 @@ func (o *Ocean) GetDependencies(tasks map[string]fi.Task) []fi.Task {
|
|||
}
|
||||
|
||||
if o.UserData != nil {
|
||||
deps = append(deps, o.UserData.GetDependencies(tasks)...)
|
||||
deps = append(deps, fi.FindDependencies(tasks, o.UserData)...)
|
||||
}
|
||||
|
||||
return deps
|
||||
|
@ -451,7 +451,7 @@ func (_ *Ocean) create(cloud awsup.AWSCloud, a, e, changes *Ocean) error {
|
|||
// User data.
|
||||
{
|
||||
if e.UserData != nil {
|
||||
userData, err := e.UserData.AsString()
|
||||
userData, err := fi.ResourceAsString(e.UserData)
|
||||
if err != nil {
|
||||
return err
|
||||
}
|
||||
|
@ -756,7 +756,7 @@ func (_ *Ocean) update(cloud awsup.AWSCloud, a, e, changes *Ocean) error {
|
|||
// User data.
|
||||
{
|
||||
if changes.UserData != nil {
|
||||
userData, err := e.UserData.AsString()
|
||||
userData, err := fi.ResourceAsString(e.UserData)
|
||||
if err != nil {
|
||||
return err
|
||||
}
|
||||
|
|
|
@ -81,6 +81,16 @@ func reflectForDependencies(tasks map[string]Task, task Task) []Task {
|
|||
return getDependencies(tasks, v)
|
||||
}
|
||||
|
||||
// FindDependencies will try to infer dependencies for an arbitrary object
|
||||
func FindDependencies(tasks map[string]Task, o interface{}) []Task {
|
||||
if hd, ok := o.(HasDependencies); ok {
|
||||
return hd.GetDependencies(tasks)
|
||||
}
|
||||
|
||||
v := reflect.ValueOf(o).Elem()
|
||||
return getDependencies(tasks, v)
|
||||
}
|
||||
|
||||
func getDependencies(tasks map[string]Task, v reflect.Value) []Task {
|
||||
var dependencies []Task
|
||||
|
||||
|
|
Loading…
Reference in New Issue