access to live storage
This commit is contained in:
		| @@ -26,6 +26,7 @@ type ResourceInstanceITF interface { | ||||
| 	GetPricingsProfiles(peerID string, groups []string) []pricing.PricingProfileITF | ||||
| 	GetPeerGroups() ([]ResourcePartnerITF, []map[string][]string) | ||||
| 	ClearPeerGroups() | ||||
| 	GetSelectedPartnership(peerID string, groups []string) ResourcePartnerITF | ||||
| 	GetPartnerships(peerID string, groups []string) []ResourcePartnerITF | ||||
| } | ||||
|  | ||||
| @@ -33,4 +34,5 @@ type ResourcePartnerITF interface { | ||||
| 	GetPricingsProfiles(peerID string, groups []string) []pricing.PricingProfileITF | ||||
| 	GetPeerGroups() map[string][]string | ||||
| 	ClearPeerGroups() | ||||
| 	GetProfile(buying int, strategy int) pricing.PricingProfileITF | ||||
| } | ||||
|   | ||||
| @@ -145,14 +145,16 @@ type GeoPoint struct { | ||||
|  | ||||
| type ResourceInstance[T ResourcePartnerITF] struct { | ||||
| 	utils.AbstractObject | ||||
| 	Location        GeoPoint                  `json:"location,omitempty" bson:"location,omitempty"` | ||||
| 	Country         countries.CountryCode     `json:"country,omitempty" bson:"country,omitempty"` | ||||
| 	AccessProtocol  string                    `json:"access_protocol,omitempty" bson:"access_protocol,omitempty"` | ||||
| 	Env             []models.Param            `json:"env,omitempty" bson:"env,omitempty"` | ||||
| 	Inputs          []models.Param            `json:"inputs,omitempty" bson:"inputs,omitempty"` | ||||
| 	Outputs         []models.Param            `json:"outputs,omitempty" bson:"outputs,omitempty"` | ||||
| 	SelectedPricing pricing.PricingProfileITF `json:"selected_pricing,omitempty" bson:"selected_pricing,omitempty"` | ||||
| 	Partnerships    []T                       `json:"partnerships,omitempty" bson:"partnerships,omitempty"` | ||||
| 	Location                 GeoPoint              `json:"location,omitempty" bson:"location,omitempty"` | ||||
| 	Country                  countries.CountryCode `json:"country,omitempty" bson:"country,omitempty"` | ||||
| 	AccessProtocol           string                `json:"access_protocol,omitempty" bson:"access_protocol,omitempty"` | ||||
| 	Env                      []models.Param        `json:"env,omitempty" bson:"env,omitempty"` | ||||
| 	Inputs                   []models.Param        `json:"inputs,omitempty" bson:"inputs,omitempty"` | ||||
| 	Outputs                  []models.Param        `json:"outputs,omitempty" bson:"outputs,omitempty"` | ||||
| 	SelectedPartnershipIndex int                   `json:"selected_partnership_index,omitempty" bson:"selected_partnership_index,omitempty"` | ||||
| 	SelectedBuyingStrategy   int                   `json:"selected_buying_strategy,omitempty" bson:"selected_buying_strategy,omitempty"` | ||||
| 	SelectedStrategy         int                   `json:"selected_strategy,omitempty" bson:"selected_strategy,omitempty"` | ||||
| 	Partnerships             []T                   `json:"partnerships,omitempty" bson:"partnerships,omitempty"` | ||||
| } | ||||
|  | ||||
| func (ri *ResourceInstance[T]) ClearEnv() { | ||||
| @@ -162,7 +164,18 @@ func (ri *ResourceInstance[T]) ClearEnv() { | ||||
| } | ||||
|  | ||||
| func (ri *ResourceInstance[T]) GetProfile() pricing.PricingProfileITF { | ||||
| 	return ri.SelectedPricing | ||||
| 	if len(ri.Partnerships) > ri.SelectedPartnershipIndex { | ||||
| 		prts := ri.Partnerships[ri.SelectedPartnershipIndex] | ||||
| 		return prts.GetProfile(ri.SelectedBuyingStrategy, ri.SelectedBuyingStrategy) | ||||
| 	} | ||||
| 	return nil | ||||
| } | ||||
|  | ||||
| func (ri *ResourceInstance[T]) GetSelectedPartnership(peerID string, groups []string) ResourcePartnerITF { | ||||
| 	if len(ri.Partnerships) > ri.SelectedPartnershipIndex { | ||||
| 		return ri.Partnerships[ri.SelectedPartnershipIndex] | ||||
| 	} | ||||
| 	return nil | ||||
| } | ||||
|  | ||||
| func (ri *ResourceInstance[T]) GetPartnerships(peerID string, groups []string) []ResourcePartnerITF { | ||||
| @@ -210,6 +223,15 @@ type ResourcePartnerShip[T pricing.PricingProfileITF] struct { | ||||
| 	// to upgrade pricing profiles. to be a map BuyingStrategy, map of Strategy | ||||
| } | ||||
|  | ||||
| func (ri *ResourcePartnerShip[T]) GetProfile(buying int, strategy int) pricing.PricingProfileITF { | ||||
| 	if strat, ok := ri.PricingProfiles[buying]; ok { | ||||
| 		if profile, ok := strat[strategy]; ok { | ||||
| 			return profile | ||||
| 		} | ||||
| 	} | ||||
| 	return nil | ||||
| } | ||||
|  | ||||
| /* | ||||
| Le pricing doit être selectionné lors d'un scheduling... | ||||
| le type de paiement défini le type de stratégie de paiement | ||||
|   | ||||
| @@ -20,7 +20,10 @@ func (m *MockInstance) GetID() string    { return m.ID } | ||||
| func (m *MockInstance) GetName() string  { return m.Name } | ||||
| func (m *MockInstance) ClearEnv()        {} | ||||
| func (m *MockInstance) ClearPeerGroups() {} | ||||
| func (m *MockInstance) GetPricingsProfiles(string, []string) []pricing.PricingProfileITF { | ||||
| func (m *MockInstance) GetProfile() pricing.PricingProfileITF { | ||||
| 	return nil | ||||
| } | ||||
| func (m *MockInstance) GetPricingsProfiles(peerID string, groups []string) []pricing.PricingProfileITF { | ||||
| 	return nil | ||||
| } | ||||
| func (m *MockInstance) GetPeerGroups() ([]resources.ResourcePartnerITF, []map[string][]string) { | ||||
| @@ -33,6 +36,10 @@ type MockPartner struct { | ||||
| 	groups map[string][]string | ||||
| } | ||||
|  | ||||
| func (m *MockPartner) GetProfile(buying int, strategy int) pricing.PricingProfileITF { | ||||
| 	return nil | ||||
| } | ||||
|  | ||||
| func (m *MockPartner) GetPeerGroups() map[string][]string { | ||||
| 	return m.groups | ||||
| } | ||||
|   | ||||
		Reference in New Issue
	
	Block a user