From dbbcb3fadc1d0f4a569dbb07fa6338c995defec7 Mon Sep 17 00:00:00 2001 From: Sharad Kesarwani <108344822+sharadkesarwani@users.noreply.github.com> Date: Mon, 16 Jan 2023 19:44:16 +0530 Subject: [PATCH] Feat (Ocean/AWS) : Added support for cluster_orientation field in strategy (#218) --- .../ocean/providers/aws/create/main.go | 3 ++ service/ocean/providers/aws/cluster.go | 40 +++++++++++++++---- 2 files changed, 35 insertions(+), 8 deletions(-) diff --git a/examples/service/ocean/providers/aws/create/main.go b/examples/service/ocean/providers/aws/create/main.go index 418c7794..8cceb12f 100644 --- a/examples/service/ocean/providers/aws/create/main.go +++ b/examples/service/ocean/providers/aws/create/main.go @@ -39,6 +39,9 @@ func main() { Strategy: &aws.Strategy{ SpotPercentage: spotinst.Float64(100), FallbackToOnDemand: spotinst.Bool(true), + ClusterOrientation: &aws.ClusterOrientation{ + AvailabilityVsCost: spotinst.String("cheapest"), + }, }, Compute: &aws.Compute{ InstanceTypes: &aws.InstanceTypes{ diff --git a/service/ocean/providers/aws/cluster.go b/service/ocean/providers/aws/cluster.go index e02ac221..5fd47953 100644 --- a/service/ocean/providers/aws/cluster.go +++ b/service/ocean/providers/aws/cluster.go @@ -48,15 +48,39 @@ type Cluster struct { } type Strategy struct { - SpotPercentage *float64 `json:"spotPercentage,omitempty"` - UtilizeReservedInstances *bool `json:"utilizeReservedInstances,omitempty"` - FallbackToOnDemand *bool `json:"fallbackToOd,omitempty"` - DrainingTimeout *int `json:"drainingTimeout,omitempty"` - GracePeriod *int `json:"gracePeriod,omitempty"` - UtilizeCommitments *bool `json:"utilizeCommitments,omitempty"` + SpotPercentage *float64 `json:"spotPercentage,omitempty"` + UtilizeReservedInstances *bool `json:"utilizeReservedInstances,omitempty"` + FallbackToOnDemand *bool `json:"fallbackToOd,omitempty"` + DrainingTimeout *int `json:"drainingTimeout,omitempty"` + GracePeriod *int `json:"gracePeriod,omitempty"` + UtilizeCommitments *bool `json:"utilizeCommitments,omitempty"` + ClusterOrientation *ClusterOrientation `json:"clusterOrientation,omitempty"` + forceSendFields []string + nullFields []string +} +type ClusterOrientation struct { + AvailabilityVsCost *string `json:"availabilityVsCost,omitempty"` + forceSendFields []string + nullFields []string +} - forceSendFields []string - nullFields []string +func (o *ClusterOrientation) SetAvailabilityVsCost(v *string) *ClusterOrientation { + if o.AvailabilityVsCost = v; o.AvailabilityVsCost == nil { + o.nullFields = append(o.nullFields, "AvailabilityVsCost") + } + return o +} + +func (o *Strategy) SetClusterOrientation(v *ClusterOrientation) *Strategy { + if o.ClusterOrientation = v; o.ClusterOrientation == nil { + o.nullFields = append(o.nullFields, "ClusterOrientation") + } + return o +} +func (o ClusterOrientation) MarshalJSON() ([]byte, error) { + type noMethod ClusterOrientation + raw := noMethod(o) + return jsonutil.MarshalJSON(raw, o.forceSendFields, o.nullFields) } type Capacity struct {