diff --git a/models/resources/interfaces.go b/models/resources/interfaces.go index cecdc7c..6ad2c28 100644 --- a/models/resources/interfaces.go +++ b/models/resources/interfaces.go @@ -12,6 +12,7 @@ type ResourceInterface interface { Trim() ConvertToPricedResource(t tools.DataType, request *tools.APIRequest) pricing.PricedItemITF GetType() string + GetSelectedInstance() ResourceInstanceITF SetAllowedInstances(request *tools.APIRequest) SetResourceModel(model *resource_model.ResourceModel) } diff --git a/models/resources/resource.go b/models/resources/resource.go index c424cfa..d24de34 100644 --- a/models/resources/resource.go +++ b/models/resources/resource.go @@ -35,6 +35,10 @@ type AbstractResource struct { SelectedInstanceIndex *int `json:"selected_instance_index,omitempty" bson:"selected_instance_index,omitempty"` // SelectedInstance is the selected instance } +func (r *AbstractResource) GetSelectedInstance() ResourceInstanceITF { + return nil +} + func (r *AbstractResource) GetType() string { return tools.INVALID.String() } @@ -82,6 +86,13 @@ func (abs *AbstractIntanciatedResource[T]) ConvertToPricedResource( } } +func (r *AbstractIntanciatedResource[T]) GetSelectedInstance() ResourceInstanceITF { + if r.SelectedInstanceIndex != nil && len(r.Instances) > *r.SelectedInstanceIndex { + return r.Instances[*r.SelectedInstanceIndex] + } + return nil +} + func (abs *AbstractIntanciatedResource[T]) SetAllowedInstances(request *tools.APIRequest) { abs.Instances = verifyAuthAction[T](abs.Instances, request) }