default.go 4.7 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169
  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. const DefaultSpotNodePricePerVCPUHour float64 = 0.006655
  17. const DefaultSpotNodePricePerRAMGiBHour float64 = 0.000892
  18. const DefaultSpotNodePricePerGPUHour float64 = 0.308
  19. // This was originally set to double that of persistent volume, and it is unclear exactly why.
  20. // In order to match the legacy pipeline, it is now set to the same as persistent volume pricing
  21. // const DefaultNodePricePerLocalDiskGiBHour float64 = 0.0001096
  22. const DefaultNodePricePerLocalDiskGiBHour float64 = 0.00005479452
  23. const DefaultPersistentVolumePricePerGiBHour float64 = 0.00005479452
  24. const DefaultServicePricePerHour float64 = 0.025
  25. func GetDefaultPricingSet() *pricing.PricingSet {
  26. return &pricing.PricingSet{
  27. ClusterPricing: GetDefaultClusterPricing(),
  28. NetworkPricing: GetDefaultNetworkPricing(),
  29. NodePricing: GetDefaultNodePricing(),
  30. PersistentVolumePricing: GetDefaultPersistentVolumePricing(),
  31. ServicePricing: GetDefaultServicePricing(),
  32. }
  33. }
  34. func GetDefaultClusterPricing() []*pricing.ClusterPricing {
  35. return []*pricing.ClusterPricing{
  36. {
  37. Properties: pricing.ClusterPricingProperties{},
  38. Prices: pricing.Prices{
  39. pricing.ResourceCluster: {
  40. Unit: unit.Hour,
  41. Price: DefaultClusterPricePerHour,
  42. },
  43. },
  44. },
  45. }
  46. }
  47. func GetDefaultNetworkPricing() []*pricing.NetworkPricing {
  48. return []*pricing.NetworkPricing{
  49. {
  50. Properties: pricing.NetworkPricingProperties{},
  51. Prices: pricing.Prices{
  52. pricing.ResourceLocalEgress: {
  53. Unit: unit.GiB,
  54. Price: DefaultNetworkLocalEgressPricePerGiB,
  55. },
  56. pricing.ResourceCrossZoneEgress: {
  57. Unit: unit.GiB,
  58. Price: DefaultNetworkCrossZoneEgressPricePerGiB,
  59. },
  60. pricing.ResourceCrossRegionEgress: {
  61. Unit: unit.GiB,
  62. Price: DefaultNetworkCrossRegionEgressPricePerGiB,
  63. },
  64. pricing.ResourceInternetEgress: {
  65. Unit: unit.GiB,
  66. Price: DefaultNetworkInternetEgressPricePerGiB,
  67. },
  68. pricing.ResourceNATGatewayEgress: {
  69. Unit: unit.GiB,
  70. Price: DefaultNetworkNATGatewayEgressPricePerGiB,
  71. },
  72. pricing.ResourceNATGatewayIngress: {
  73. Unit: unit.GiB,
  74. Price: DefaultNetworkNATGatewayIngressPricePerGiB,
  75. },
  76. },
  77. },
  78. }
  79. }
  80. func GetDefaultNodePricing() []*pricing.NodePricing {
  81. return []*pricing.NodePricing{
  82. {
  83. Properties: pricing.NodePricingProperties{
  84. Provisioning: pricing.ProvisioningOnDemand,
  85. },
  86. Prices: pricing.Prices{
  87. pricing.ResourceCPU: {
  88. Unit: unit.VCPUHour,
  89. Price: DefaultNodePricePerVCPUHour,
  90. },
  91. pricing.ResourceRAM: {
  92. Unit: unit.GiBHour,
  93. Price: DefaultNodePricePerRAMGiBHour,
  94. },
  95. pricing.ResourceGPU: {
  96. Unit: unit.GPUHour,
  97. Price: DefaultNodePricePerGPUHour,
  98. },
  99. pricing.ResourceStorage: {
  100. Unit: unit.GiBHour,
  101. Price: DefaultNodePricePerLocalDiskGiBHour,
  102. },
  103. },
  104. },
  105. {
  106. Properties: pricing.NodePricingProperties{
  107. Provisioning: pricing.ProvisioningSpot,
  108. },
  109. Prices: pricing.Prices{
  110. pricing.ResourceCPU: {
  111. Unit: unit.VCPUHour,
  112. Price: DefaultSpotNodePricePerVCPUHour,
  113. },
  114. pricing.ResourceRAM: {
  115. Unit: unit.GiBHour,
  116. Price: DefaultSpotNodePricePerRAMGiBHour,
  117. },
  118. pricing.ResourceGPU: {
  119. Unit: unit.GPUHour,
  120. Price: DefaultSpotNodePricePerGPUHour,
  121. },
  122. pricing.ResourceStorage: {
  123. Unit: unit.GiBHour,
  124. Price: DefaultNodePricePerLocalDiskGiBHour,
  125. },
  126. },
  127. },
  128. }
  129. }
  130. func GetDefaultPersistentVolumePricing() []*pricing.PersistentVolumePricing {
  131. return []*pricing.PersistentVolumePricing{
  132. {
  133. Properties: pricing.PersistentVolumePricingProperties{},
  134. Prices: pricing.Prices{
  135. pricing.ResourceStorage: {
  136. Unit: unit.GiBHour,
  137. Price: DefaultPersistentVolumePricePerGiBHour,
  138. },
  139. },
  140. },
  141. }
  142. }
  143. func GetDefaultServicePricing() []*pricing.ServicePricing {
  144. return []*pricing.ServicePricing{
  145. {
  146. Properties: pricing.ServicePricingProperties{},
  147. Prices: pricing.Prices{
  148. pricing.ResourceService: {
  149. Unit: unit.Hour,
  150. Price: DefaultServicePricePerHour,
  151. },
  152. },
  153. },
  154. }
  155. }