Skip to content

Commit

Permalink
Merge pull request #9684 from rifelpet/automated-cherry-pick-of-#9682…
Browse files Browse the repository at this point in the history
…-origin-release-1.18

Automated cherry pick of #9682: Remove embedded structs from spotinst terraform types
  • Loading branch information
k8s-ci-robot committed Aug 5, 2020
2 parents 856c77a + b924e68 commit 7a59560
Show file tree
Hide file tree
Showing 3 changed files with 47 additions and 64 deletions.
58 changes: 22 additions & 36 deletions upup/pkg/fi/cloudup/spotinsttasks/elastigroup.go
Original file line number Diff line number Diff line change
Expand Up @@ -1257,32 +1257,19 @@ type terraformElastigroup struct {
Tags []*terraformKV `json:"tags,omitempty" cty:"tags"`
Lifecycle *terraformLifecycle `json:"lifecycle,omitempty" cty:"lifecycle"`

*terraformElastigroupCapacity
*terraformElastigroupStrategy
*terraformElastigroupInstanceTypes
*terraformElastigroupLaunchSpec
}

type terraformElastigroupCapacity struct {
MinSize *int64 `json:"min_size,omitempty" cty:"min_size"`
MaxSize *int64 `json:"max_size,omitempty" cty:"max_size"`
DesiredCapacity *int64 `json:"desired_capacity,omitempty" cty:"desired_capacity"`
CapacityUnit *string `json:"capacity_unit,omitempty" cty:"capacity_unit"`
}

type terraformElastigroupStrategy struct {
SpotPercentage *float64 `json:"spot_percentage,omitempty" cty:"spot_percentage"`
Orientation *string `json:"orientation,omitempty" cty:"orientation"`
FallbackToOnDemand *bool `json:"fallback_to_ondemand,omitempty" cty:"fallback_to_ondemand"`
UtilizeReservedInstances *bool `json:"utilize_reserved_instances,omitempty" cty:"utilize_reserved_instances"`
}

type terraformElastigroupInstanceTypes struct {
OnDemand *string `json:"instance_types_ondemand,omitempty" cty:"instance_types_ondemand"`
Spot []string `json:"instance_types_spot,omitempty" cty:"instance_types_spot"`
}

type terraformElastigroupLaunchSpec struct {
Monitoring *bool `json:"enable_monitoring,omitempty" cty:"enable_monitoring"`
EBSOptimized *bool `json:"ebs_optimized,omitempty" cty:"ebs_optimized"`
ImageID *string `json:"image_id,omitempty" cty:"image_id"`
Expand Down Expand Up @@ -1312,7 +1299,12 @@ type terraformElastigroupIntegration struct {
IntegrationMode *string `json:"integration_mode,omitempty" cty:"integration_mode"`
ClusterIdentifier *string `json:"cluster_identifier,omitempty" cty:"cluster_identifier"`

*terraformAutoScaler
Enabled *bool `json:"autoscale_is_enabled,omitempty" cty:"autoscale_is_enabled"`
AutoConfig *bool `json:"autoscale_is_auto_config,omitempty" cty:"autoscale_is_auto_config"`
Cooldown *int `json:"autoscale_cooldown,omitempty" cty:"autoscale_cooldown"`
Headroom *terraformAutoScalerHeadroom `json:"autoscale_headroom,omitempty" cty:"autoscale_headroom"`
Down *terraformAutoScalerDown `json:"autoscale_down,omitempty" cty:"autoscale_down"`
Labels []*terraformKV `json:"autoscale_labels,omitempty" cty:"autoscale_labels"`
}

type terraformAutoScaler struct {
Expand Down Expand Up @@ -1354,23 +1346,19 @@ func (_ *Elastigroup) RenderTerraform(t *terraform.TerraformTarget, a, e, change
Description: e.Name,
Product: e.Product,
Region: fi.String(cloud.Region()),
terraformElastigroupCapacity: &terraformElastigroupCapacity{
DesiredCapacity: e.MinSize,
MinSize: e.MinSize,
MaxSize: e.MaxSize,
CapacityUnit: fi.String("instance"),
},
terraformElastigroupStrategy: &terraformElastigroupStrategy{
SpotPercentage: e.SpotPercentage,
Orientation: fi.String(string(normalizeOrientation(e.Orientation))),
FallbackToOnDemand: e.FallbackToOnDemand,
UtilizeReservedInstances: e.UtilizeReservedInstances,
},
terraformElastigroupInstanceTypes: &terraformElastigroupInstanceTypes{
OnDemand: e.OnDemandInstanceType,
Spot: e.SpotInstanceTypes,
},
terraformElastigroupLaunchSpec: &terraformElastigroupLaunchSpec{},

DesiredCapacity: e.MinSize,
MinSize: e.MinSize,
MaxSize: e.MaxSize,
CapacityUnit: fi.String("instance"),

SpotPercentage: e.SpotPercentage,
Orientation: fi.String(string(normalizeOrientation(e.Orientation))),
FallbackToOnDemand: e.FallbackToOnDemand,
UtilizeReservedInstances: e.UtilizeReservedInstances,

OnDemand: e.OnDemandInstanceType,
Spot: e.SpotInstanceTypes,
}

// Image.
Expand Down Expand Up @@ -1522,11 +1510,9 @@ func (_ *Elastigroup) RenderTerraform(t *terraform.TerraformTarget, a, e, change
}

if opts.Enabled != nil {
tf.Integration.terraformAutoScaler = &terraformAutoScaler{
Enabled: opts.Enabled,
AutoConfig: fi.Bool(true),
Cooldown: opts.Cooldown,
}
tf.Integration.Enabled = opts.Enabled
tf.Integration.AutoConfig = fi.Bool(true)
tf.Integration.Cooldown = opts.Cooldown

// Headroom.
if headroom := opts.Headroom; headroom != nil {
Expand Down
20 changes: 16 additions & 4 deletions upup/pkg/fi/cloudup/spotinsttasks/launch_spec.go
Original file line number Diff line number Diff line change
Expand Up @@ -601,16 +601,28 @@ type terraformLaunchSpec struct {
Name *string `json:"name,omitempty" cty:"name"`
OceanID *terraform.Literal `json:"ocean_id,omitempty" cty:"ocean_id"`

*terraformOceanLaunchSpec
Monitoring *bool `json:"monitoring,omitempty" cty:"monitoring"`
EBSOptimized *bool `json:"ebs_optimized,omitempty" cty:"ebs_optimized"`
ImageID *string `json:"image_id,omitempty" cty:"image_id"`
AssociatePublicIPAddress *bool `json:"associate_public_ip_address,omitempty" cty:"associate_public_ip_address"`
RootVolumeSize *int32 `json:"root_volume_size,omitempty" cty:"root_volume_size"`
UserData *terraform.Literal `json:"user_data,omitempty" cty:"user_data"`
IAMInstanceProfile *terraform.Literal `json:"iam_instance_profile,omitempty" cty:"iam_instance_profile"`
KeyName *terraform.Literal `json:"key_name,omitempty" cty:"key_name"`
SubnetIDs []*terraform.Literal `json:"subnet_ids,omitempty" cty:"subnet_ids"`
SecurityGroups []*terraform.Literal `json:"security_groups,omitempty" cty:"security_groups"`
Taints []*corev1.Taint `json:"taints,omitempty" cty:"taints"`
Labels []*terraformKV `json:"labels,omitempty" cty:"labels"`
Tags []*terraformKV `json:"tags,omitempty" cty:"tags"`
Headrooms []*terraformAutoScalerHeadroom `json:"autoscale_headrooms,omitempty" cty:"autoscale_headrooms"`
}

func (_ *LaunchSpec) RenderTerraform(t *terraform.TerraformTarget, a, e, changes *LaunchSpec) error {
cloud := t.Cloud.(awsup.AWSCloud)

tf := &terraformLaunchSpec{
Name: e.Name,
OceanID: e.Ocean.TerraformLink(),
terraformOceanLaunchSpec: &terraformOceanLaunchSpec{},
Name: e.Name,
OceanID: e.Ocean.TerraformLink(),
}

// Image.
Expand Down
33 changes: 9 additions & 24 deletions upup/pkg/fi/cloudup/spotinsttasks/ocean.go
Original file line number Diff line number Diff line change
Expand Up @@ -982,25 +982,15 @@ type terraformOcean struct {
Tags []*terraformKV `json:"tags,omitempty" cty:"tags"`
Lifecycle *terraformLifecycle `json:"lifecycle,omitempty" cty:"lifecycle"`

*terraformOceanCapacity
*terraformOceanStrategy
*terraformOceanLaunchSpec
}

type terraformOceanCapacity struct {
MinSize *int64 `json:"min_size,omitempty" cty:"min_size"`
MaxSize *int64 `json:"max_size,omitempty" cty:"max_size"`
DesiredCapacity *int64 `json:"desired_capacity,omitempty" cty:"desired_capacity"`
}

type terraformOceanStrategy struct {
SpotPercentage *float64 `json:"spot_percentage,omitempty" cty:"spot_percentage"`
FallbackToOnDemand *bool `json:"fallback_to_ondemand,omitempty" cty:"fallback_to_ondemand"`
UtilizeReservedInstances *bool `json:"utilize_reserved_instances,omitempty" cty:"utilize_reserved_instances"`
GracePeriod *int64 `json:"grace_period,omitempty" cty:"grace_period"`
}

type terraformOceanLaunchSpec struct {
Monitoring *bool `json:"monitoring,omitempty" cty:"monitoring"`
EBSOptimized *bool `json:"ebs_optimized,omitempty" cty:"ebs_optimized"`
ImageID *string `json:"image_id,omitempty" cty:"image_id"`
Expand All @@ -1009,11 +999,9 @@ type terraformOceanLaunchSpec struct {
UserData *terraform.Literal `json:"user_data,omitempty" cty:"user_data"`
IAMInstanceProfile *terraform.Literal `json:"iam_instance_profile,omitempty" cty:"iam_instance_profile"`
KeyName *terraform.Literal `json:"key_name,omitempty" cty:"key_name"`
SubnetIDs []*terraform.Literal `json:"subnet_ids,omitempty" cty:"subnet_ids"`
SecurityGroups []*terraform.Literal `json:"security_groups,omitempty" cty:"security_groups"`
Taints []*corev1.Taint `json:"taints,omitempty" cty:"taints"`
Labels []*terraformKV `json:"labels,omitempty" cty:"labels"`
Tags []*terraformKV `json:"tags,omitempty" cty:"tags"`
Headrooms []*terraformAutoScalerHeadroom `json:"autoscale_headrooms,omitempty" cty:"autoscale_headrooms"`
}

Expand All @@ -1024,18 +1012,15 @@ func (_ *Ocean) RenderTerraform(t *terraform.TerraformTarget, a, e, changes *Oce
tf := &terraformOcean{
Name: e.Name,
Region: fi.String(cloud.Region()),
terraformOceanCapacity: &terraformOceanCapacity{
DesiredCapacity: e.MinSize,
MinSize: e.MinSize,
MaxSize: e.MaxSize,
},
terraformOceanStrategy: &terraformOceanStrategy{
SpotPercentage: e.SpotPercentage,
FallbackToOnDemand: e.FallbackToOnDemand,
UtilizeReservedInstances: e.UtilizeReservedInstances,
GracePeriod: e.GracePeriod,
},
terraformOceanLaunchSpec: &terraformOceanLaunchSpec{},

DesiredCapacity: e.MinSize,
MinSize: e.MinSize,
MaxSize: e.MaxSize,

SpotPercentage: e.SpotPercentage,
FallbackToOnDemand: e.FallbackToOnDemand,
UtilizeReservedInstances: e.UtilizeReservedInstances,
GracePeriod: e.GracePeriod,
}

// Image.
Expand Down

0 comments on commit 7a59560

Please sign in to comment.