Payment Flow + Access Flow Change
This commit is contained in:
@@ -5,10 +5,12 @@ import (
|
||||
|
||||
"cloud.o-forge.io/core/oc-lib/models/common/enum"
|
||||
"cloud.o-forge.io/core/oc-lib/models/common/models"
|
||||
"cloud.o-forge.io/core/oc-lib/models/common/pricing"
|
||||
"cloud.o-forge.io/core/oc-lib/models/utils"
|
||||
"cloud.o-forge.io/core/oc-lib/tools"
|
||||
)
|
||||
|
||||
|
||||
/*
|
||||
* Booking is a struct that represents a booking
|
||||
*/
|
||||
@@ -48,6 +50,16 @@ type Booking struct {
|
||||
// OriginRef carries the registry reference of a peerless resource
|
||||
// (e.g. "docker.io/pytorch/pytorch:2.1") so schedulers can validate it.
|
||||
OriginRef string `json:"origin_ref,omitempty" bson:"origin_ref,omitempty"`
|
||||
|
||||
// BillingStrategy est la fréquence de facturation appliquée à ce booking
|
||||
// (BILL_ONCE, BILL_PER_WEEK, BILL_PER_MONTH, BILL_PER_YEAR).
|
||||
// Transmis depuis WorkflowExecution.SelectedBillingStrategy lors du Book().
|
||||
BillingStrategy pricing.BillingStrategy `json:"billing_strategy" bson:"billing_strategy"`
|
||||
|
||||
// PaymentType est le mode de paiement choisi pour cette ressource spécifique
|
||||
// (PAY_ONCE, PAY_EVERY_WEEK, PAY_EVERY_MONTH, PAY_EVERY_YEAR).
|
||||
// Résolu depuis WorkflowExecution.SelectedPaymentMode[itemID] lors du Book().
|
||||
PaymentType pricing.PaymentType `json:"payment_type" bson:"payment_type"`
|
||||
}
|
||||
|
||||
func (b *Booking) CalcDeltaOfExecution() map[string]map[string]models.MetricResume {
|
||||
|
||||
+8
-18
@@ -1,23 +1,13 @@
|
||||
package booking
|
||||
|
||||
type BookingMode int
|
||||
import "cloud.o-forge.io/core/oc-lib/models/common/enum"
|
||||
|
||||
// BookingMode is kept here as an alias for backward compatibility.
|
||||
// The canonical definition lives in models/common/enum.
|
||||
type BookingMode = enum.BookingMode
|
||||
|
||||
const (
|
||||
PLANNED BookingMode = iota // predictible
|
||||
PREEMPTED // can be both predictible or unpredictible, first one asking for a quick exec, second on event, but we pay to preempt in any case.
|
||||
WHEN_POSSIBLE // unpredictable, two mode of payment can be available on that case: fixed, or per USE
|
||||
PLANNED = enum.PLANNED
|
||||
PREEMPTED = enum.PREEMPTED
|
||||
WHEN_POSSIBLE = enum.WHEN_POSSIBLE
|
||||
)
|
||||
|
||||
/*
|
||||
Ok make a point there:
|
||||
There is 3 notions about booking & payment :
|
||||
Booking mode : WHEN is executed
|
||||
Buying mode : Duration of payment
|
||||
Pricing Mode : How Many time we pay
|
||||
|
||||
|
||||
We can simplify Buying Mode and Pricing Mode, some Buying Mode implied limited pricing mode
|
||||
Such as Rules. Just like PERMANENT BUYING can be paid only once.
|
||||
|
||||
Booking Mode on WHEN POSSIBLE make an exception, because we can't know when executed.
|
||||
*/
|
||||
|
||||
@@ -15,10 +15,10 @@ import (
|
||||
|
||||
// InstanceCapacity holds the maximum available resources of a single resource instance.
|
||||
type InstanceCapacity struct {
|
||||
CPUCores map[string]float64 `json:"cpu_cores,omitempty"` // model -> total cores
|
||||
GPUMemGB map[string]float64 `json:"gpu_mem_gb,omitempty"` // model -> total memory GB
|
||||
RAMGB float64 `json:"ram_gb,omitempty"` // total RAM GB
|
||||
StorageGB float64 `json:"storage_gb,omitempty"` // total storage GB
|
||||
CPUCores map[string]float64 `json:"cpu_cores,omitempty"` // model -> total cores
|
||||
GPUMemGB map[string]float64 `json:"gpu_mem_gb,omitempty"` // model -> total memory GB
|
||||
RAMGB float64 `json:"ram_gb,omitempty"` // total RAM GB
|
||||
StorageGB float64 `json:"storage_gb,omitempty"` // total storage GB
|
||||
MaxConcurrent float64 `json:"max_concurrent,omitempty"` // HOSTED service: max simultaneous callers
|
||||
}
|
||||
|
||||
@@ -54,8 +54,8 @@ type PlannerITF interface {
|
||||
// any availability check against a blocked resource returns false immediately.
|
||||
type Planner struct {
|
||||
GeneratedAt time.Time `json:"generated_at"`
|
||||
Schedule map[string][]*PlannerSlot `json:"schedule"` // resource_id -> slots
|
||||
Capacities map[string]map[string]*InstanceCapacity `json:"capacities"` // resource_id -> instance_id -> max capacity
|
||||
Schedule map[string][]*PlannerSlot `json:"schedule"` // resource_id -> slots
|
||||
Capacities map[string]map[string]*InstanceCapacity `json:"capacities"` // resource_id -> instance_id -> max capacity
|
||||
BlockedResources map[string]bool `json:"blocked_resources,omitempty"` // resource_id -> no Live found
|
||||
}
|
||||
|
||||
|
||||
Reference in New Issue
Block a user