default.go 3.6 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136
  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.0
  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 DefaultNodePricePerLocalDiskGiBHour float64 = 0.0001096
  17. const DefaultPersistentVolumePricePerGiBHour float64 = 0.00005479452
  18. const DefaultServicePricePerHour float64 = 0.025
  19. func GetDefaultPricingSet() *pricing.PricingSet {
  20. return &pricing.PricingSet{
  21. ClusterPricing: GetDefaultClusterPricing(),
  22. NetworkPricing: GetDefaultNetworkPricing(),
  23. NodePricing: GetDefaultNodePricing(),
  24. PersistentVolumePricing: GetDefaultPersistentVolumePricing(),
  25. ServicePricing: GetDefaultServicePricing(),
  26. }
  27. }
  28. func GetDefaultClusterPricing() []*pricing.ClusterPricing {
  29. return []*pricing.ClusterPricing{
  30. {
  31. Properties: pricing.ClusterPricingProperties{},
  32. Prices: pricing.Prices{
  33. pricing.ResourceCluster: {
  34. Unit: unit.Hour,
  35. Price: DefaultClusterPricePerHour,
  36. },
  37. },
  38. },
  39. }
  40. }
  41. func GetDefaultNetworkPricing() []*pricing.NetworkPricing {
  42. return []*pricing.NetworkPricing{
  43. {
  44. Properties: pricing.NetworkPricingProperties{},
  45. Prices: pricing.Prices{
  46. pricing.ResourceLocalEgress: {
  47. Unit: unit.GiB,
  48. Price: DefaultNetworkLocalEgressPricePerGiB,
  49. },
  50. pricing.ResourceCrossZoneEgress: {
  51. Unit: unit.GiB,
  52. Price: DefaultNetworkCrossZoneEgressPricePerGiB,
  53. },
  54. pricing.ResourceCrossRegionEgress: {
  55. Unit: unit.GiB,
  56. Price: DefaultNetworkCrossRegionEgressPricePerGiB,
  57. },
  58. pricing.ResourceInternetEgress: {
  59. Unit: unit.GiB,
  60. Price: DefaultNetworkInternetEgressPricePerGiB,
  61. },
  62. pricing.ResourceNATGatewayEgress: {
  63. Unit: unit.GiB,
  64. Price: DefaultNetworkNATGatewayEgressPricePerGiB,
  65. },
  66. pricing.ResourceNATGatewayIngress: {
  67. Unit: unit.GiB,
  68. Price: DefaultNetworkNATGatewayIngressPricePerGiB,
  69. },
  70. },
  71. },
  72. }
  73. }
  74. func GetDefaultNodePricing() []*pricing.NodePricing {
  75. return []*pricing.NodePricing{
  76. {
  77. Properties: pricing.NodePricingProperties{},
  78. Prices: pricing.Prices{
  79. pricing.ResourceCPU: {
  80. Unit: unit.VCPUHour,
  81. Price: DefaultNodePricePerVCPUHour,
  82. },
  83. pricing.ResourceRAM: {
  84. Unit: unit.GiBHour,
  85. Price: DefaultNodePricePerRAMGiBHour,
  86. },
  87. pricing.ResourceGPU: {
  88. Unit: unit.GPUHour,
  89. Price: DefaultNodePricePerGPUHour,
  90. },
  91. pricing.ResourceStorage: {
  92. Unit: unit.GiBHour,
  93. Price: DefaultNodePricePerLocalDiskGiBHour,
  94. },
  95. },
  96. },
  97. }
  98. }
  99. func GetDefaultPersistentVolumePricing() []*pricing.PersistentVolumePricing {
  100. return []*pricing.PersistentVolumePricing{
  101. {
  102. Properties: pricing.PersistentVolumePricingProperties{},
  103. Prices: pricing.Prices{
  104. pricing.ResourceStorage: {
  105. Unit: unit.GiBHour,
  106. Price: DefaultPersistentVolumePricePerGiBHour,
  107. },
  108. },
  109. },
  110. }
  111. }
  112. func GetDefaultServicePricing() []*pricing.ServicePricing {
  113. return []*pricing.ServicePricing{
  114. {
  115. Properties: pricing.ServicePricingProperties{},
  116. Prices: pricing.Prices{
  117. pricing.ResourceService: {
  118. Unit: unit.Hour,
  119. Price: DefaultServicePricePerHour,
  120. },
  121. },
  122. },
  123. }
  124. }