default.go 3.9 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140
  1. package basic
  2. import (
  3. "github.com/opencost/opencost/core/pkg/pricing"
  4. "github.com/opencost/opencost/core/pkg/unit"
  5. )
  6. const DefaultClusterPricePerHour float64 = 0.10
  7. const DefaultNetworkLocalEgressPricePerGiB float64 = 0.0
  8. const DefaultNetworkCrossZoneEgressPricePerGiB float64 = 0.01
  9. const DefaultNetworkCrossRegionEgressPricePerGiB float64 = 0.01
  10. const DefaultNetworkInternetEgressPricePerGiB float64 = 0.143
  11. const DefaultNetworkNATGatewayEgressPricePerGiB float64 = 0.045
  12. const DefaultNetworkNATGatewayIngressPricePerGiB float64 = 0.045
  13. const DefaultNodePricePerVCPUHour float64 = 0.031611
  14. const DefaultNodePricePerRAMGiBHour float64 = 0.004237
  15. const DefaultNodePricePerGPUHour float64 = 0.95
  16. // This was originally set to double that of persistent volume, and it is unclear exactly why.
  17. // In order to match the legacy pipeline, it is now set to the same as persistent volume pricing
  18. // const DefaultNodePricePerLocalDiskGiBHour float64 = 0.0001096
  19. const DefaultNodePricePerLocalDiskGiBHour float64 = 0.00005479452
  20. const DefaultPersistentVolumePricePerGiBHour float64 = 0.00005479452
  21. const DefaultServicePricePerHour float64 = 0.025
  22. func GetDefaultPricingSet() *pricing.PricingSet {
  23. return &pricing.PricingSet{
  24. ClusterPricing: GetDefaultClusterPricing(),
  25. NetworkPricing: GetDefaultNetworkPricing(),
  26. NodePricing: GetDefaultNodePricing(),
  27. PersistentVolumePricing: GetDefaultPersistentVolumePricing(),
  28. ServicePricing: GetDefaultServicePricing(),
  29. }
  30. }
  31. func GetDefaultClusterPricing() []*pricing.ClusterPricing {
  32. return []*pricing.ClusterPricing{
  33. {
  34. Properties: pricing.ClusterPricingProperties{},
  35. Prices: pricing.Prices{
  36. pricing.ResourceCluster: {
  37. Unit: unit.Hour,
  38. Price: DefaultClusterPricePerHour,
  39. },
  40. },
  41. },
  42. }
  43. }
  44. func GetDefaultNetworkPricing() []*pricing.NetworkPricing {
  45. return []*pricing.NetworkPricing{
  46. {
  47. Properties: pricing.NetworkPricingProperties{},
  48. Prices: pricing.Prices{
  49. pricing.ResourceLocalEgress: {
  50. Unit: unit.GiB,
  51. Price: DefaultNetworkLocalEgressPricePerGiB,
  52. },
  53. pricing.ResourceCrossZoneEgress: {
  54. Unit: unit.GiB,
  55. Price: DefaultNetworkCrossZoneEgressPricePerGiB,
  56. },
  57. pricing.ResourceCrossRegionEgress: {
  58. Unit: unit.GiB,
  59. Price: DefaultNetworkCrossRegionEgressPricePerGiB,
  60. },
  61. pricing.ResourceInternetEgress: {
  62. Unit: unit.GiB,
  63. Price: DefaultNetworkInternetEgressPricePerGiB,
  64. },
  65. pricing.ResourceNATGatewayEgress: {
  66. Unit: unit.GiB,
  67. Price: DefaultNetworkNATGatewayEgressPricePerGiB,
  68. },
  69. pricing.ResourceNATGatewayIngress: {
  70. Unit: unit.GiB,
  71. Price: DefaultNetworkNATGatewayIngressPricePerGiB,
  72. },
  73. },
  74. },
  75. }
  76. }
  77. func GetDefaultNodePricing() []*pricing.NodePricing {
  78. return []*pricing.NodePricing{
  79. {
  80. Properties: pricing.NodePricingProperties{},
  81. Prices: pricing.Prices{
  82. pricing.ResourceCPU: {
  83. Unit: unit.VCPUHour,
  84. Price: DefaultNodePricePerVCPUHour,
  85. },
  86. pricing.ResourceRAM: {
  87. Unit: unit.GiBHour,
  88. Price: DefaultNodePricePerRAMGiBHour,
  89. },
  90. pricing.ResourceGPU: {
  91. Unit: unit.GPUHour,
  92. Price: DefaultNodePricePerGPUHour,
  93. },
  94. pricing.ResourceStorage: {
  95. Unit: unit.GiBHour,
  96. Price: DefaultNodePricePerLocalDiskGiBHour,
  97. },
  98. },
  99. },
  100. }
  101. }
  102. func GetDefaultPersistentVolumePricing() []*pricing.PersistentVolumePricing {
  103. return []*pricing.PersistentVolumePricing{
  104. {
  105. Properties: pricing.PersistentVolumePricingProperties{},
  106. Prices: pricing.Prices{
  107. pricing.ResourceStorage: {
  108. Unit: unit.GiBHour,
  109. Price: DefaultPersistentVolumePricePerGiBHour,
  110. },
  111. },
  112. },
  113. }
  114. }
  115. func GetDefaultServicePricing() []*pricing.ServicePricing {
  116. return []*pricing.ServicePricing{
  117. {
  118. Properties: pricing.ServicePricingProperties{},
  119. Prices: pricing.Prices{
  120. pricing.ResourceService: {
  121. Unit: unit.Hour,
  122. Price: DefaultServicePricePerHour,
  123. },
  124. },
  125. },
  126. }
  127. }