Order Flow Payment Draft
This commit is contained in:
@@ -68,7 +68,7 @@ func (p *ComputeResourcePricingProfile) GetOverrideStrategyValue() int {
|
||||
|
||||
// NOT A PROPER QUANTITY
|
||||
// amountOfData is the number of CPUs, GPUs or RAM dependings on the params
|
||||
func (p *ComputeResourcePricingProfile) GetPrice(amountOfData float64, explicitDuration float64, start time.Time, end time.Time, request *tools.APIRequest, params ...string) (float64, error) {
|
||||
func (p *ComputeResourcePricingProfile) GetPrice(amountOfData float64, explicitDuration float64, start time.Time, end time.Time, params ...string) (float64, error) {
|
||||
if len(params) < 1 {
|
||||
return 0, errors.New("params must be set")
|
||||
}
|
||||
@@ -108,38 +108,37 @@ func (p *ComputeResourcePricingProfile) GetPrice(amountOfData float64, explicitD
|
||||
return pp, nil
|
||||
}
|
||||
|
||||
type CustomizedComputeResource struct {
|
||||
AbstractCustomizedResource[*ComputeResourceInstance]
|
||||
type PricedComputeResource struct {
|
||||
PricedResource
|
||||
|
||||
CPUsLocated map[string]float64 `json:"cpus_in_use" bson:"cpus_in_use"` // CPUsInUse is the list of CPUs in use
|
||||
GPUsLocated map[string]float64 `json:"gpus_in_use" bson:"gpus_in_use"` // GPUsInUse is the list of GPUs in use
|
||||
RAMLocated float64 `json:"ram_in_use" bson:"ram_in_use"` // RAMInUse is the RAM in use
|
||||
}
|
||||
|
||||
func (r *CustomizedComputeResource) GetType() tools.DataType {
|
||||
func (r *PricedComputeResource) GetType() tools.DataType {
|
||||
return tools.COMPUTE_RESOURCE
|
||||
}
|
||||
|
||||
func (r *CustomizedComputeResource) GetPrice(request *tools.APIRequest) (float64, error) {
|
||||
func (r *PricedComputeResource) GetPrice() (float64, error) {
|
||||
if r.UsageStart == nil || r.UsageEnd == nil {
|
||||
return 0, errors.New("Usage start and end must be set")
|
||||
}
|
||||
partner := r.GetPartnership(request)
|
||||
if partner != nil && partner.GetPricing(r.SelectedPricing) != nil {
|
||||
return 0, errors.New("Pricing strategy not found")
|
||||
if r.SelectedPricing == nil {
|
||||
return 0, errors.New("Selected pricing must be set")
|
||||
}
|
||||
pricing := partner.GetPricing(r.SelectedPricing)
|
||||
pricing := *r.SelectedPricing
|
||||
price := float64(0)
|
||||
for _, l := range []map[string]float64{r.CPUsLocated, r.GPUsLocated} {
|
||||
for model, amountOfData := range l {
|
||||
cpus, err := pricing.GetPrice(float64(amountOfData), r.ExplicitBookingDurationS, *r.UsageStart, *r.UsageEnd, request, "cpus", model)
|
||||
cpus, err := pricing.GetPrice(float64(amountOfData), r.ExplicitBookingDurationS, *r.UsageStart, *r.UsageEnd, "cpus", model)
|
||||
if err != nil {
|
||||
return 0, err
|
||||
}
|
||||
price += cpus
|
||||
}
|
||||
}
|
||||
ram, err := pricing.GetPrice(r.RAMLocated, r.ExplicitBookingDurationS, *r.UsageStart, *r.UsageEnd, request, "ram")
|
||||
ram, err := pricing.GetPrice(r.RAMLocated, r.ExplicitBookingDurationS, *r.UsageStart, *r.UsageEnd, "ram")
|
||||
if err != nil {
|
||||
return 0, err
|
||||
}
|
||||
@@ -151,7 +150,7 @@ func (r *CustomizedComputeResource) GetPrice(request *tools.APIRequest) (float64
|
||||
* FillWithDefaultProcessingUsage fills the order item with the default processing usage
|
||||
* it depends on the processing usage only if nothing is set, during order
|
||||
*/
|
||||
func (i *CustomizedComputeResource) FillWithDefaultProcessingUsage(usage *ProcessingUsage) {
|
||||
func (i *PricedComputeResource) FillWithDefaultProcessingUsage(usage *ProcessingUsage) {
|
||||
for _, cpu := range usage.CPUs {
|
||||
if _, ok := i.CPUsLocated[cpu.Model]; !ok {
|
||||
i.CPUsLocated[cpu.Model] = 0
|
||||
|
||||
Reference in New Issue
Block a user