ensurePricing
This commit is contained in:
@@ -168,11 +168,28 @@ type PricedComputeResource struct {
|
|||||||
RAMLocated float64 `json:"ram_in_use" bson:"ram_in_use"` // RAMInUse is the RAM in use
|
RAMLocated float64 `json:"ram_in_use" bson:"ram_in_use"` // RAMInUse is the RAM in use
|
||||||
}
|
}
|
||||||
|
|
||||||
|
func (r *PricedComputeResource) ensurePricing() {
|
||||||
|
if r.SelectedPricing == nil {
|
||||||
|
r.SelectedPricing = &ComputeResourcePricingProfile{}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
func (r *PricedComputeResource) IsPurchasable() bool {
|
||||||
|
r.ensurePricing()
|
||||||
|
return r.SelectedPricing.IsPurchasable()
|
||||||
|
}
|
||||||
|
|
||||||
|
func (r *PricedComputeResource) IsBooked() bool {
|
||||||
|
r.ensurePricing()
|
||||||
|
return r.SelectedPricing.IsBooked()
|
||||||
|
}
|
||||||
|
|
||||||
func (r *PricedComputeResource) GetType() tools.DataType {
|
func (r *PricedComputeResource) GetType() tools.DataType {
|
||||||
return tools.COMPUTE_RESOURCE
|
return tools.COMPUTE_RESOURCE
|
||||||
}
|
}
|
||||||
|
|
||||||
func (r *PricedComputeResource) GetPriceHT() (float64, error) {
|
func (r *PricedComputeResource) GetPriceHT() (float64, error) {
|
||||||
|
r.ensurePricing()
|
||||||
if r.BookingConfiguration == nil {
|
if r.BookingConfiguration == nil {
|
||||||
r.BookingConfiguration = &BookingConfiguration{}
|
r.BookingConfiguration = &BookingConfiguration{}
|
||||||
}
|
}
|
||||||
@@ -184,9 +201,6 @@ func (r *PricedComputeResource) GetPriceHT() (float64, error) {
|
|||||||
add := r.BookingConfiguration.UsageStart.Add(time.Duration(1 * time.Hour))
|
add := r.BookingConfiguration.UsageStart.Add(time.Duration(1 * time.Hour))
|
||||||
r.BookingConfiguration.UsageEnd = &add
|
r.BookingConfiguration.UsageEnd = &add
|
||||||
}
|
}
|
||||||
if r.SelectedPricing == nil {
|
|
||||||
return 0, errors.New("pricing profile must be set on Priced Compute" + r.ResourceID)
|
|
||||||
}
|
|
||||||
pricing := r.SelectedPricing
|
pricing := r.SelectedPricing
|
||||||
price := float64(0)
|
price := float64(0)
|
||||||
for _, l := range []map[string]float64{r.CPUsLocated, r.GPUsLocated} {
|
for _, l := range []map[string]float64{r.CPUsLocated, r.GPUsLocated} {
|
||||||
|
|||||||
@@ -164,11 +164,28 @@ type PricedDataResource struct {
|
|||||||
UsageStorageGB float64 `json:"storage_gb,omitempty" bson:"storage_gb,omitempty"`
|
UsageStorageGB float64 `json:"storage_gb,omitempty" bson:"storage_gb,omitempty"`
|
||||||
}
|
}
|
||||||
|
|
||||||
|
func (r *PricedDataResource) ensurePricing() {
|
||||||
|
if r.SelectedPricing == nil {
|
||||||
|
r.SelectedPricing = &DataResourcePricingProfile{}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
func (r *PricedDataResource) IsPurchasable() bool {
|
||||||
|
r.ensurePricing()
|
||||||
|
return r.SelectedPricing.IsPurchasable()
|
||||||
|
}
|
||||||
|
|
||||||
|
func (r *PricedDataResource) IsBooked() bool {
|
||||||
|
r.ensurePricing()
|
||||||
|
return r.SelectedPricing.IsBooked()
|
||||||
|
}
|
||||||
|
|
||||||
func (r *PricedDataResource) GetType() tools.DataType {
|
func (r *PricedDataResource) GetType() tools.DataType {
|
||||||
return tools.DATA_RESOURCE
|
return tools.DATA_RESOURCE
|
||||||
}
|
}
|
||||||
|
|
||||||
func (r *PricedDataResource) GetPriceHT() (float64, error) {
|
func (r *PricedDataResource) GetPriceHT() (float64, error) {
|
||||||
|
r.ensurePricing()
|
||||||
if r.BookingConfiguration == nil {
|
if r.BookingConfiguration == nil {
|
||||||
r.BookingConfiguration = &BookingConfiguration{}
|
r.BookingConfiguration = &BookingConfiguration{}
|
||||||
}
|
}
|
||||||
@@ -180,9 +197,6 @@ func (r *PricedDataResource) GetPriceHT() (float64, error) {
|
|||||||
add := r.BookingConfiguration.UsageStart.Add(time.Duration(1 * time.Hour))
|
add := r.BookingConfiguration.UsageStart.Add(time.Duration(1 * time.Hour))
|
||||||
r.BookingConfiguration.UsageEnd = &add
|
r.BookingConfiguration.UsageEnd = &add
|
||||||
}
|
}
|
||||||
if r.SelectedPricing == nil {
|
|
||||||
return 0, errors.New("pricing profile must be set on Priced Data" + r.ResourceID)
|
|
||||||
}
|
|
||||||
pricing := r.SelectedPricing
|
pricing := r.SelectedPricing
|
||||||
var err error
|
var err error
|
||||||
amountOfData := float64(1)
|
amountOfData := float64(1)
|
||||||
|
|||||||
@@ -59,6 +59,8 @@ func (abs *PricedResource[T]) GetCreatorID() string {
|
|||||||
return abs.CreatorID
|
return abs.CreatorID
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// IsPurchasable and IsBooked fall back to false when SelectedPricing is a nil interface.
|
||||||
|
// Concrete types (PricedComputeResource, etc.) override these and guarantee non-nil pricing.
|
||||||
func (abs *PricedResource[T]) IsPurchasable() bool {
|
func (abs *PricedResource[T]) IsPurchasable() bool {
|
||||||
if any(abs.SelectedPricing) == nil {
|
if any(abs.SelectedPricing) == nil {
|
||||||
return false
|
return false
|
||||||
|
|||||||
@@ -70,6 +70,27 @@ type PricedProcessingResource struct {
|
|||||||
IsService bool
|
IsService bool
|
||||||
}
|
}
|
||||||
|
|
||||||
|
func (r *PricedProcessingResource) ensurePricing() {
|
||||||
|
if r.SelectedPricing == nil {
|
||||||
|
r.SelectedPricing = &ProcessingResourcePricingProfile{}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
func (r *PricedProcessingResource) IsPurchasable() bool {
|
||||||
|
r.ensurePricing()
|
||||||
|
return r.SelectedPricing.IsPurchasable()
|
||||||
|
}
|
||||||
|
|
||||||
|
func (r *PricedProcessingResource) IsBooked() bool {
|
||||||
|
r.ensurePricing()
|
||||||
|
return r.SelectedPricing.IsBooked()
|
||||||
|
}
|
||||||
|
|
||||||
|
func (r *PricedProcessingResource) GetPriceHT() (float64, error) {
|
||||||
|
r.ensurePricing()
|
||||||
|
return r.PricedResource.GetPriceHT()
|
||||||
|
}
|
||||||
|
|
||||||
func (r *PricedProcessingResource) GetType() tools.DataType {
|
func (r *PricedProcessingResource) GetType() tools.DataType {
|
||||||
return tools.PROCESSING_RESOURCE
|
return tools.PROCESSING_RESOURCE
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -185,11 +185,28 @@ type PricedStorageResource struct {
|
|||||||
UsageStorageGB float64 `json:"storage_gb,omitempty" bson:"storage_gb,omitempty"`
|
UsageStorageGB float64 `json:"storage_gb,omitempty" bson:"storage_gb,omitempty"`
|
||||||
}
|
}
|
||||||
|
|
||||||
|
func (r *PricedStorageResource) ensurePricing() {
|
||||||
|
if r.SelectedPricing == nil {
|
||||||
|
r.SelectedPricing = &StorageResourcePricingProfile{}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
func (r *PricedStorageResource) IsPurchasable() bool {
|
||||||
|
r.ensurePricing()
|
||||||
|
return r.SelectedPricing.IsPurchasable()
|
||||||
|
}
|
||||||
|
|
||||||
|
func (r *PricedStorageResource) IsBooked() bool {
|
||||||
|
r.ensurePricing()
|
||||||
|
return r.SelectedPricing.IsBooked()
|
||||||
|
}
|
||||||
|
|
||||||
func (r *PricedStorageResource) GetType() tools.DataType {
|
func (r *PricedStorageResource) GetType() tools.DataType {
|
||||||
return tools.STORAGE_RESOURCE
|
return tools.STORAGE_RESOURCE
|
||||||
}
|
}
|
||||||
|
|
||||||
func (r *PricedStorageResource) GetPriceHT() (float64, error) {
|
func (r *PricedStorageResource) GetPriceHT() (float64, error) {
|
||||||
|
r.ensurePricing()
|
||||||
if r.BookingConfiguration == nil {
|
if r.BookingConfiguration == nil {
|
||||||
r.BookingConfiguration = &BookingConfiguration{}
|
r.BookingConfiguration = &BookingConfiguration{}
|
||||||
}
|
}
|
||||||
@@ -202,9 +219,6 @@ func (r *PricedStorageResource) GetPriceHT() (float64, error) {
|
|||||||
add := r.BookingConfiguration.UsageStart.Add(time.Duration(1 * time.Hour))
|
add := r.BookingConfiguration.UsageStart.Add(time.Duration(1 * time.Hour))
|
||||||
r.BookingConfiguration.UsageEnd = &add
|
r.BookingConfiguration.UsageEnd = &add
|
||||||
}
|
}
|
||||||
if r.SelectedPricing == nil {
|
|
||||||
return 0, errors.New("pricing profile must be set on Priced Storage" + r.ResourceID)
|
|
||||||
}
|
|
||||||
pricing := r.SelectedPricing
|
pricing := r.SelectedPricing
|
||||||
var err error
|
var err error
|
||||||
amountOfData := float64(1)
|
amountOfData := float64(1)
|
||||||
|
|||||||
Reference in New Issue
Block a user