| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172 |
- package basic
- import (
- "github.com/opencost/opencost/core/pkg/model/kubemodel"
- "github.com/opencost/opencost/core/pkg/pricing"
- "github.com/opencost/opencost/core/pkg/unit"
- )
- const DefaultClusterPricePerHour float64 = 0.0
- const DefaultNetworkLocalPricePerGiB float64 = 0.0
- const DefaultNetworkCrossZonePricePerGiB float64 = 0.01
- const DefaultNetworkCrossRegionPricePerGiB float64 = 0.01
- const DefaultNetworkInternetPricePerGiB float64 = 0.143
- const DefaultNetworkNATPricePerGiB float64 = 0.045
- const DefaultNodePricePerVCPUHour float64 = 0.031611
- const DefaultNodePricePerRAMGiBHour float64 = 0.004237
- const DefaultNodePricePerGPUHour float64 = 0.95
- const DefaultNodePricePerLocalDiskGiBHour float64 = 0.0001096
- const DefaultPersistentVolumePricePerGiBHour float64 = 0.00005479452
- const DefaultServicePricePerHour float64 = 0.025
- func GetDefaultPricingSet() *pricing.PricingSet {
- return &pricing.PricingSet{
- ClusterPricing: GetDefaultClusterPricing(),
- NetworkPricing: GetDefaultNetworkPricing(),
- NodePricing: GetDefaultNodePricing(),
- PersistentVolumePricing: GetDefaultPersistentVolumePricing(),
- ServicePricing: GetDefaultServicePricing(),
- }
- }
- func GetDefaultClusterPricing() []*pricing.ClusterPricing {
- return []*pricing.ClusterPricing{
- {
- Properties: pricing.ClusterPricingProperties{},
- Prices: pricing.Prices{
- pricing.ResourceCluster: {
- Unit: unit.Hour,
- Price: DefaultClusterPricePerHour,
- },
- },
- },
- }
- }
- func GetDefaultNetworkPricing() []*pricing.NetworkPricing {
- return []*pricing.NetworkPricing{
- {
- Properties: pricing.NetworkPricingProperties{
- TrafficDirection: kubemodel.TrafficDirectionEgress,
- TrafficType: kubemodel.TrafficTypeLocal,
- IsNatGateway: false,
- },
- Prices: pricing.Prices{
- pricing.ResourceNetworkTraffic: {
- Unit: unit.GiB,
- Price: DefaultNetworkLocalPricePerGiB,
- },
- },
- },
- {
- Properties: pricing.NetworkPricingProperties{
- TrafficDirection: kubemodel.TrafficDirectionEgress,
- TrafficType: kubemodel.TrafficTypeCrossZone,
- IsNatGateway: false,
- },
- Prices: pricing.Prices{
- pricing.ResourceNetworkTraffic: {
- Unit: unit.GiB,
- Price: DefaultNetworkCrossZonePricePerGiB,
- },
- },
- },
- {
- Properties: pricing.NetworkPricingProperties{
- TrafficDirection: kubemodel.TrafficDirectionEgress,
- TrafficType: kubemodel.TrafficTypeCrossRegion,
- IsNatGateway: false,
- },
- Prices: pricing.Prices{
- pricing.ResourceNetworkTraffic: {
- Unit: unit.GiB,
- Price: DefaultNetworkCrossRegionPricePerGiB,
- },
- },
- },
- {
- Properties: pricing.NetworkPricingProperties{
- TrafficDirection: kubemodel.TrafficDirectionEgress,
- TrafficType: kubemodel.TrafficTypeInternet,
- IsNatGateway: false,
- },
- Prices: pricing.Prices{
- pricing.ResourceNetworkTraffic: {
- Unit: unit.GiB,
- Price: DefaultNetworkInternetPricePerGiB,
- },
- },
- },
- {
- Properties: pricing.NetworkPricingProperties{
- TrafficDirection: kubemodel.TrafficDirectionEgress,
- TrafficType: kubemodel.TrafficTypeInternet,
- IsNatGateway: true,
- },
- Prices: pricing.Prices{
- pricing.ResourceNetworkTraffic: {
- Unit: unit.GiB,
- Price: DefaultNetworkInternetPricePerGiB + DefaultNetworkNATPricePerGiB,
- },
- },
- },
- }
- }
- func GetDefaultNodePricing() []*pricing.NodePricing {
- return []*pricing.NodePricing{
- {
- Properties: pricing.NodePricingProperties{},
- Prices: pricing.Prices{
- pricing.ResourceCPU: {
- Unit: unit.VCPUHour,
- Price: DefaultNodePricePerVCPUHour,
- },
- pricing.ResourceRAM: {
- Unit: unit.GiBHour,
- Price: DefaultNodePricePerRAMGiBHour,
- },
- pricing.ResourceGPU: {
- Unit: unit.GPUHour,
- Price: DefaultNodePricePerGPUHour,
- },
- pricing.ResourceStorage: {
- Unit: unit.GiBHour,
- Price: DefaultNodePricePerLocalDiskGiBHour,
- },
- },
- },
- }
- }
- func GetDefaultPersistentVolumePricing() []*pricing.PersistentVolumePricing {
- return []*pricing.PersistentVolumePricing{
- {
- Properties: pricing.PersistentVolumePricingProperties{},
- Prices: pricing.Prices{
- pricing.ResourceStorage: {
- Unit: unit.GiBHour,
- Price: DefaultPersistentVolumePricePerGiBHour,
- },
- },
- },
- }
- }
- func GetDefaultServicePricing() []*pricing.ServicePricing {
- return []*pricing.ServicePricing{
- {
- Properties: pricing.ServicePricingProperties{},
- Prices: pricing.Prices{
- pricing.ResourceService: {
- Unit: unit.Hour,
- Price: DefaultServicePricePerHour,
- },
- },
- },
- }
- }
|