2
0

source.go 1.5 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344
  1. package pricing
  2. import (
  3. "context"
  4. "github.com/opencost/opencost/core/pkg/reader"
  5. )
  6. type PricingSource interface {
  7. ClusterPricingSource
  8. NetworkPricingSource
  9. NodePricingSource
  10. PersistentVolumePricingSource
  11. ServicePricingSource
  12. GetPricingSet(context.Context) (*PricingSet, error)
  13. SourceKind() string
  14. SourceName() string
  15. }
  16. type ClusterPricingSource interface {
  17. GetClusterPricing(ctx context.Context, props ClusterPricingProperties) (*ClusterPricing, error)
  18. NewClusterPricingReader(ctx context.Context) (reader.Reader[*ClusterPricing], error)
  19. }
  20. type NetworkPricingSource interface {
  21. GetNetworkPricing(ctx context.Context, props NetworkPricingProperties) (*NetworkPricing, error)
  22. NewNetworkPricingReader(ctx context.Context) (reader.Reader[*NetworkPricing], error)
  23. }
  24. type NodePricingSource interface {
  25. NewNodePricingReader(ctx context.Context) (reader.Reader[*NodePricing], error)
  26. GetNodePricing(ctx context.Context, props NodePricingProperties) (*NodePricing, error)
  27. }
  28. type PersistentVolumePricingSource interface {
  29. NewPersistentVolumePricingReader(ctx context.Context) (reader.Reader[*PersistentVolumePricing], error)
  30. GetPersistentVolumePricing(ctx context.Context, props PersistentVolumePricingProperties) (*PersistentVolumePricing, error)
  31. }
  32. type ServicePricingSource interface {
  33. GetServicePricing(ctx context.Context, props ServicePricingProperties) (*ServicePricing, error)
  34. NewServicePricingReader(ctx context.Context) (reader.Reader[*ServicePricing], error)
  35. }