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
|
// ResourceNodeUp generates and returns a nodeup (bootstrap) script from a
|
||||||
// template file, substituting in specific env vars & cluster spec configuration
|
// 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
|
// Bastions can have AdditionalUserData, but if there isn't any skip this part
|
||||||
if ig.IsBastion() && len(ig.Spec.AdditionalUserData) == 0 {
|
if ig.IsBastion() && len(ig.Spec.AdditionalUserData) == 0 {
|
||||||
templateResource, err := NewTemplateResource("nodeup", "", nil, nil)
|
templateResource, err := NewTemplateResource("nodeup", "", nil, nil)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return nil, err
|
return nil, err
|
||||||
}
|
}
|
||||||
return fi.WrapResource(templateResource), nil
|
return templateResource, nil
|
||||||
}
|
}
|
||||||
|
|
||||||
task := &BootstrapScript{
|
task := &BootstrapScript{
|
||||||
|
|
@ -204,7 +204,7 @@ func (b *BootstrapScriptBuilder) ResourceNodeUp(c *fi.ModelBuilderContext, ig *k
|
||||||
}
|
}
|
||||||
task.resource.Task = task
|
task.resource.Task = task
|
||||||
c.AddTask(task)
|
c.AddTask(task)
|
||||||
return fi.WrapResource(&task.resource), nil
|
return &task.resource, nil
|
||||||
}
|
}
|
||||||
|
|
||||||
func (b *BootstrapScript) GetName() *string {
|
func (b *BootstrapScript) GetName() *string {
|
||||||
|
|
|
||||||
|
|
@ -150,7 +150,7 @@ func TestBootstrapUserData(t *testing.T) {
|
||||||
err = c.Tasks["BootstrapScript/testIG"].Run(&fi.Context{Cluster: cluster})
|
err = c.Tasks["BootstrapScript/testIG"].Run(&fi.Context{Cluster: cluster})
|
||||||
require.NoError(t, err, "running task")
|
require.NoError(t, err, "running task")
|
||||||
|
|
||||||
actual, err := res.AsString()
|
actual, err := fi.ResourceAsString(res)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
t.Errorf("case %d failed to render nodeup resource. error: %s", i, err)
|
t.Errorf("case %d failed to render nodeup resource. error: %s", i, err)
|
||||||
continue
|
continue
|
||||||
|
|
|
||||||
|
|
@ -89,11 +89,11 @@ func (b *AutoscalingGroupModelBuilder) Build(c *fi.ModelBuilderContext) error {
|
||||||
"monitoring",
|
"monitoring",
|
||||||
"logging-write",
|
"logging-write",
|
||||||
},
|
},
|
||||||
Metadata: map[string]*fi.ResourceHolder{
|
Metadata: map[string]fi.Resource{
|
||||||
"startup-script": startupScript,
|
"startup-script": startupScript,
|
||||||
//"config": resources/config.yaml $nodeset.Name
|
//"config": resources/config.yaml $nodeset.Name
|
||||||
"cluster-name": fi.WrapResource(fi.NewStringResource(b.ClusterName())),
|
"cluster-name": fi.NewStringResource(b.ClusterName()),
|
||||||
nodeidentitygce.MetadataKeyInstanceGroupName: fi.WrapResource(fi.NewStringResource(ig.Name)),
|
nodeidentitygce.MetadataKeyInstanceGroupName: fi.NewStringResource(ig.Name),
|
||||||
},
|
},
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -65,7 +65,7 @@ type LaunchConfiguration struct {
|
||||||
RAMRole *RAMRole
|
RAMRole *RAMRole
|
||||||
ScalingGroup *ScalingGroup
|
ScalingGroup *ScalingGroup
|
||||||
SSHKey *SSHKey
|
SSHKey *SSHKey
|
||||||
UserData *fi.ResourceHolder
|
UserData fi.Resource
|
||||||
SecurityGroup *SecurityGroup
|
SecurityGroup *SecurityGroup
|
||||||
|
|
||||||
Tags map[string]string
|
Tags map[string]string
|
||||||
|
|
@ -246,7 +246,7 @@ func (_ *LaunchConfiguration) RenderALI(t *aliup.ALIAPITarget, a, e, changes *La
|
||||||
}
|
}
|
||||||
|
|
||||||
if e.UserData != nil {
|
if e.UserData != nil {
|
||||||
userData, err := e.UserData.AsString()
|
userData, err := fi.ResourceAsString(e.UserData)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return fmt.Errorf("error rendering ScalingLaunchConfiguration UserData: %v", err)
|
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 {
|
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 {
|
if err != nil {
|
||||||
return fmt.Errorf("error rendering ScalingLaunchConfiguration UserData: %v", err)
|
return fmt.Errorf("error rendering ScalingLaunchConfiguration UserData: %v", err)
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -95,7 +95,7 @@ type LaunchConfiguration struct {
|
||||||
// Tenancy. Can be either default or dedicated.
|
// Tenancy. Can be either default or dedicated.
|
||||||
Tenancy *string
|
Tenancy *string
|
||||||
// UserData is the user data configuration
|
// UserData is the user data configuration
|
||||||
UserData *fi.ResourceHolder
|
UserData fi.Resource
|
||||||
}
|
}
|
||||||
|
|
||||||
var _ fi.CompareWithID = &LaunchConfiguration{}
|
var _ fi.CompareWithID = &LaunchConfiguration{}
|
||||||
|
|
@ -349,7 +349,7 @@ func (_ *LaunchConfiguration) RenderAWS(t *awsup.AWSAPITarget, a, e, changes *La
|
||||||
}
|
}
|
||||||
|
|
||||||
if e.UserData != nil {
|
if e.UserData != nil {
|
||||||
d, err := e.UserData.AsBytes()
|
d, err := fi.ResourceAsBytes(e.UserData)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return fmt.Errorf("error rendering AutoScalingLaunchConfiguration UserData: %v", err)
|
return fmt.Errorf("error rendering AutoScalingLaunchConfiguration UserData: %v", err)
|
||||||
}
|
}
|
||||||
|
|
@ -694,7 +694,7 @@ func (_ *LaunchConfiguration) RenderCloudformation(t *cloudformation.Cloudformat
|
||||||
}
|
}
|
||||||
|
|
||||||
if e.UserData != nil {
|
if e.UserData != nil {
|
||||||
d, err := e.UserData.AsBytes()
|
d, err := fi.ResourceAsBytes(e.UserData)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return fmt.Errorf("error rendering AutoScalingLaunchConfiguration UserData: %v", err)
|
return fmt.Errorf("error rendering AutoScalingLaunchConfiguration UserData: %v", err)
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -79,7 +79,7 @@ type LaunchTemplate struct {
|
||||||
// Tenancy. Can be either default or dedicated.
|
// Tenancy. Can be either default or dedicated.
|
||||||
Tenancy *string
|
Tenancy *string
|
||||||
// UserData is the user data configuration
|
// UserData is the user data configuration
|
||||||
UserData *fi.ResourceHolder
|
UserData fi.Resource
|
||||||
}
|
}
|
||||||
|
|
||||||
var (
|
var (
|
||||||
|
|
|
||||||
|
|
@ -117,7 +117,7 @@ func (t *LaunchTemplate) RenderAWS(c *awsup.AWSAPITarget, a, e, changes *LaunchT
|
||||||
}
|
}
|
||||||
// @step: add the userdata
|
// @step: add the userdata
|
||||||
if t.UserData != nil {
|
if t.UserData != nil {
|
||||||
d, err := t.UserData.AsBytes()
|
d, err := fi.ResourceAsBytes(t.UserData)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return fmt.Errorf("error rendering LaunchTemplate UserData: %v", err)
|
return fmt.Errorf("error rendering LaunchTemplate UserData: %v", err)
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -232,7 +232,7 @@ func (t *LaunchTemplate) RenderCloudformation(target *cloudformation.Cloudformat
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
if e.UserData != nil {
|
if e.UserData != nil {
|
||||||
d, err := e.UserData.AsBytes()
|
d, err := fi.ResourceAsBytes(e.UserData)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return err
|
return err
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -235,7 +235,7 @@ func (t *LaunchTemplate) RenderTerraform(target *terraform.TerraformTarget, a, e
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
if e.UserData != nil {
|
if e.UserData != nil {
|
||||||
d, err := e.UserData.AsBytes()
|
d, err := fi.ResourceAsBytes(e.UserData)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return err
|
return err
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -42,7 +42,7 @@ type Droplet struct {
|
||||||
SSHKey *string
|
SSHKey *string
|
||||||
Tags []string
|
Tags []string
|
||||||
Count int
|
Count int
|
||||||
UserData *fi.ResourceHolder
|
UserData fi.Resource
|
||||||
}
|
}
|
||||||
|
|
||||||
var _ fi.Task = &Droplet{}
|
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 {
|
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 {
|
if err != nil {
|
||||||
return err
|
return err
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -61,7 +61,7 @@ type InstanceTemplate struct {
|
||||||
Scopes []string
|
Scopes []string
|
||||||
ServiceAccounts []string
|
ServiceAccounts []string
|
||||||
|
|
||||||
Metadata map[string]*fi.ResourceHolder
|
Metadata map[string]fi.Resource
|
||||||
MachineType *string
|
MachineType *string
|
||||||
|
|
||||||
// ID is the actual name
|
// ID is the actual name
|
||||||
|
|
@ -166,7 +166,7 @@ func (e *InstanceTemplate) Find(c *fi.Context) (*InstanceTemplate, error) {
|
||||||
//}
|
//}
|
||||||
|
|
||||||
if p.Metadata != nil {
|
if p.Metadata != nil {
|
||||||
actual.Metadata = make(map[string]*fi.ResourceHolder)
|
actual.Metadata = make(map[string]fi.Resource)
|
||||||
for _, meta := range p.Metadata.Items {
|
for _, meta := range p.Metadata.Items {
|
||||||
actual.Metadata[meta.Key] = fi.WrapResource(fi.NewStringResource(fi.StringValue(meta.Value)))
|
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
|
var metadataItems []*compute.MetadataItems
|
||||||
for key, r := range e.Metadata {
|
for key, r := range e.Metadata {
|
||||||
v, err := r.AsString()
|
v, err := fi.ResourceAsString(r)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return nil, fmt.Errorf("error rendering InstanceTemplate metadata %q: %v", key, err)
|
return nil, fmt.Errorf("error rendering InstanceTemplate metadata %q: %v", key, err)
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -43,7 +43,7 @@ type Instance struct {
|
||||||
SSHKey *string
|
SSHKey *string
|
||||||
ServerGroup *ServerGroup
|
ServerGroup *ServerGroup
|
||||||
Role *string
|
Role *string
|
||||||
UserData *fi.ResourceHolder
|
UserData fi.Resource
|
||||||
Metadata map[string]string
|
Metadata map[string]string
|
||||||
AvailabilityZone *string
|
AvailabilityZone *string
|
||||||
SecurityGroups []string
|
SecurityGroups []string
|
||||||
|
|
@ -73,7 +73,7 @@ func (e *Instance) GetDependencies(tasks map[string]fi.Task) []fi.Task {
|
||||||
}
|
}
|
||||||
|
|
||||||
if e.UserData != nil {
|
if e.UserData != nil {
|
||||||
deps = append(deps, e.UserData.GetDependencies(tasks)...)
|
deps = append(deps, fi.FindDependencies(tasks, e.UserData)...)
|
||||||
}
|
}
|
||||||
|
|
||||||
return deps
|
return deps
|
||||||
|
|
@ -266,7 +266,7 @@ func (_ *Instance) RenderOpenstack(t *openstack.OpenstackAPITarget, a, e, change
|
||||||
SecurityGroups: e.SecurityGroups,
|
SecurityGroups: e.SecurityGroups,
|
||||||
}
|
}
|
||||||
if e.UserData != nil {
|
if e.UserData != nil {
|
||||||
bytes, err := e.UserData.AsBytes()
|
bytes, err := fi.ResourceAsBytes(e.UserData)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return err
|
return err
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -58,7 +58,7 @@ type Elastigroup struct {
|
||||||
Product *string
|
Product *string
|
||||||
Orientation *string
|
Orientation *string
|
||||||
Tags map[string]string
|
Tags map[string]string
|
||||||
UserData *fi.ResourceHolder
|
UserData fi.Resource
|
||||||
ImageID *string
|
ImageID *string
|
||||||
OnDemandInstanceType *string
|
OnDemandInstanceType *string
|
||||||
SpotInstanceTypes []string
|
SpotInstanceTypes []string
|
||||||
|
|
@ -147,7 +147,7 @@ func (e *Elastigroup) GetDependencies(tasks map[string]fi.Task) []fi.Task {
|
||||||
}
|
}
|
||||||
|
|
||||||
if e.UserData != nil {
|
if e.UserData != nil {
|
||||||
deps = append(deps, e.UserData.GetDependencies(tasks)...)
|
deps = append(deps, fi.FindDependencies(tasks, e.UserData)...)
|
||||||
}
|
}
|
||||||
|
|
||||||
return deps
|
return deps
|
||||||
|
|
@ -584,7 +584,7 @@ func (_ *Elastigroup) create(cloud awsup.AWSCloud, a, e, changes *Elastigroup) e
|
||||||
// User data.
|
// User data.
|
||||||
{
|
{
|
||||||
if e.UserData != nil {
|
if e.UserData != nil {
|
||||||
userData, err := e.UserData.AsString()
|
userData, err := fi.ResourceAsString(e.UserData)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return err
|
return err
|
||||||
}
|
}
|
||||||
|
|
@ -953,7 +953,7 @@ func (_ *Elastigroup) update(cloud awsup.AWSCloud, a, e, changes *Elastigroup) e
|
||||||
// User data.
|
// User data.
|
||||||
{
|
{
|
||||||
if changes.UserData != nil {
|
if changes.UserData != nil {
|
||||||
userData, err := e.UserData.AsString()
|
userData, err := fi.ResourceAsString(e.UserData)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return err
|
return err
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -40,7 +40,7 @@ type LaunchSpec struct {
|
||||||
Lifecycle *fi.Lifecycle
|
Lifecycle *fi.Lifecycle
|
||||||
|
|
||||||
ID *string
|
ID *string
|
||||||
UserData *fi.ResourceHolder
|
UserData fi.Resource
|
||||||
SecurityGroups []*awstasks.SecurityGroup
|
SecurityGroups []*awstasks.SecurityGroup
|
||||||
Subnets []*awstasks.Subnet
|
Subnets []*awstasks.Subnet
|
||||||
IAMInstanceProfile *awstasks.IAMInstanceProfile
|
IAMInstanceProfile *awstasks.IAMInstanceProfile
|
||||||
|
|
@ -85,7 +85,7 @@ func (o *LaunchSpec) GetDependencies(tasks map[string]fi.Task) []fi.Task {
|
||||||
}
|
}
|
||||||
|
|
||||||
if o.UserData != nil {
|
if o.UserData != nil {
|
||||||
deps = append(deps, o.UserData.GetDependencies(tasks)...)
|
deps = append(deps, fi.FindDependencies(tasks, o.UserData)...)
|
||||||
}
|
}
|
||||||
|
|
||||||
return deps
|
return deps
|
||||||
|
|
@ -330,7 +330,7 @@ func (_ *LaunchSpec) create(cloud awsup.AWSCloud, a, e, changes *LaunchSpec) err
|
||||||
// User data.
|
// User data.
|
||||||
{
|
{
|
||||||
if e.UserData != nil {
|
if e.UserData != nil {
|
||||||
userData, err := e.UserData.AsString()
|
userData, err := fi.ResourceAsString(e.UserData)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return err
|
return err
|
||||||
}
|
}
|
||||||
|
|
@ -491,7 +491,7 @@ func (_ *LaunchSpec) update(cloud awsup.AWSCloud, a, e, changes *LaunchSpec) err
|
||||||
// User data.
|
// User data.
|
||||||
{
|
{
|
||||||
if changes.UserData != nil {
|
if changes.UserData != nil {
|
||||||
userData, err := e.UserData.AsString()
|
userData, err := fi.ResourceAsString(e.UserData)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return err
|
return err
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -52,7 +52,7 @@ type Ocean struct {
|
||||||
InstanceTypesWhitelist []string
|
InstanceTypesWhitelist []string
|
||||||
InstanceTypesBlacklist []string
|
InstanceTypesBlacklist []string
|
||||||
Tags map[string]string
|
Tags map[string]string
|
||||||
UserData *fi.ResourceHolder
|
UserData fi.Resource
|
||||||
ImageID *string
|
ImageID *string
|
||||||
IAMInstanceProfile *awstasks.IAMInstanceProfile
|
IAMInstanceProfile *awstasks.IAMInstanceProfile
|
||||||
SSHKey *awstasks.SSHKey
|
SSHKey *awstasks.SSHKey
|
||||||
|
|
@ -96,7 +96,7 @@ func (o *Ocean) GetDependencies(tasks map[string]fi.Task) []fi.Task {
|
||||||
}
|
}
|
||||||
|
|
||||||
if o.UserData != nil {
|
if o.UserData != nil {
|
||||||
deps = append(deps, o.UserData.GetDependencies(tasks)...)
|
deps = append(deps, fi.FindDependencies(tasks, o.UserData)...)
|
||||||
}
|
}
|
||||||
|
|
||||||
return deps
|
return deps
|
||||||
|
|
@ -451,7 +451,7 @@ func (_ *Ocean) create(cloud awsup.AWSCloud, a, e, changes *Ocean) error {
|
||||||
// User data.
|
// User data.
|
||||||
{
|
{
|
||||||
if e.UserData != nil {
|
if e.UserData != nil {
|
||||||
userData, err := e.UserData.AsString()
|
userData, err := fi.ResourceAsString(e.UserData)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return err
|
return err
|
||||||
}
|
}
|
||||||
|
|
@ -756,7 +756,7 @@ func (_ *Ocean) update(cloud awsup.AWSCloud, a, e, changes *Ocean) error {
|
||||||
// User data.
|
// User data.
|
||||||
{
|
{
|
||||||
if changes.UserData != nil {
|
if changes.UserData != nil {
|
||||||
userData, err := e.UserData.AsString()
|
userData, err := fi.ResourceAsString(e.UserData)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return err
|
return err
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -81,6 +81,16 @@ func reflectForDependencies(tasks map[string]Task, task Task) []Task {
|
||||||
return getDependencies(tasks, v)
|
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 {
|
func getDependencies(tasks map[string]Task, v reflect.Value) []Task {
|
||||||
var dependencies []Task
|
var dependencies []Task
|
||||||
|
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue