provision.go 4.4 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201
  1. package types
  2. import "strings"
  3. type CreateECRInfraRequest struct {
  4. ECRName string `json:"ecr_name" form:"required"`
  5. ProjectID uint `json:"-" form:"required"`
  6. AWSIntegrationID uint `json:"aws_integration_id" form:"required"`
  7. }
  8. type CreateEKSInfraRequest struct {
  9. EKSName string `json:"eks_name" form:"required"`
  10. MachineType string `json:"machine_type"`
  11. IssuerEmail string `json:"issuer_email" form:"required"`
  12. ProjectID uint `json:"-" form:"required"`
  13. AWSIntegrationID uint `json:"aws_integration_id" form:"required"`
  14. }
  15. type CreateGCRInfraRequest struct {
  16. ProjectID uint `json:"-" form:"required"`
  17. GCPIntegrationID uint `json:"gcp_integration_id" form:"required"`
  18. }
  19. type CreateGKEInfraRequest struct {
  20. GKEName string `json:"gke_name" form:"required"`
  21. GCPRegion string `json:"gcp_region" form:"required"`
  22. IssuerEmail string `json:"issuer_email" form:"required"`
  23. ProjectID uint `json:"-" form:"required"`
  24. GCPIntegrationID uint `json:"gcp_integration_id" form:"required"`
  25. }
  26. type CreateDOCRInfraRequest struct {
  27. DOCRName string `json:"docr_name" form:"required"`
  28. DOCRSubscriptionTier string `json:"docr_subscription_tier" form:"required"`
  29. ProjectID uint `json:"-" form:"required"`
  30. DOIntegrationID uint `json:"do_integration_id" form:"required"`
  31. }
  32. type CreateDOKSInfraRequest struct {
  33. DORegion string `json:"do_region" form:"required"`
  34. IssuerEmail string `json:"issuer_email" form:"required"`
  35. DOKSName string `json:"doks_name" form:"required"`
  36. ProjectID uint `json:"-" form:"required"`
  37. DOIntegrationID uint `json:"do_integration_id" form:"required"`
  38. }
  39. type CreateRDSInfraRequest struct {
  40. // version of the postgres engine
  41. DBEngineVersion string `json:"db_engine_version"`
  42. // db type - postgress / mysql
  43. DBFamily string `json:"db_family"`
  44. // Deprecated, use DBEngineVersion instead
  45. // PGVersion string `json:"pg_version"`
  46. // db instance credentials specifications
  47. DBName string `json:"db_name"`
  48. Username string `json:"username"`
  49. Password string `json:"password"`
  50. MachineType string `json:"machine_type"`
  51. DBStorage string `json:"db_allocated_storage"`
  52. DBMaxStorage string `json:"db_max_allocated_storage"`
  53. DBEncryption bool `json:"db_storage_encrypted"`
  54. }
  55. type RDSInfraLastApplied struct {
  56. *CreateRDSInfraRequest
  57. ClusterID uint `json:"cluster_id"`
  58. Namespace string `json:"namespace"`
  59. AWSRegion string
  60. DBMajorEngineVersion string
  61. DBStorageEncrypted string
  62. DeletionProtection string
  63. VPCID string
  64. Subnet1 string
  65. Subnet2 string
  66. Subnet3 string
  67. }
  68. type Family string
  69. type EngineVersion string
  70. func (e EngineVersion) MajorVersion() string {
  71. semver := strings.Split(string(e), ".")
  72. return strings.Join(semver[:len(semver)-1], ".")
  73. }
  74. type EngineVersions []EngineVersion
  75. func (e EngineVersions) VersionExists(version EngineVersion) bool {
  76. for _, v := range e {
  77. if version == v {
  78. return true
  79. }
  80. }
  81. return false
  82. }
  83. const (
  84. FamilyPG9 Family = "postgres9"
  85. FamilyPG10 Family = "postgres10"
  86. FamilyPG11 Family = "postgres11"
  87. FamilyPG12 Family = "postgres12"
  88. FamilyPG13 Family = "postgres13"
  89. FamilyMysql Family = "mysql"
  90. )
  91. var availablePG9Versions EngineVersions = EngineVersions{
  92. "9.6.1",
  93. "9.6.2",
  94. "9.6.3",
  95. "9.6.4",
  96. "9.6.5",
  97. "9.6.6",
  98. "9.6.7",
  99. "9.6.8",
  100. "9.6.9",
  101. "9.6.10",
  102. "9.6.11",
  103. "9.6.12",
  104. "9.6.13",
  105. "9.6.14",
  106. "9.6.15",
  107. "9.6.16",
  108. "9.6.17",
  109. "9.6.18",
  110. "9.6.19",
  111. "9.6.20",
  112. "9.6.21",
  113. "9.6.22",
  114. "9.6.23",
  115. }
  116. var availablePG10Versions EngineVersions = EngineVersions{
  117. "10.1",
  118. "10.2",
  119. "10.3",
  120. "10.4",
  121. "10.5",
  122. "10.6",
  123. "10.7",
  124. "10.8",
  125. "10.9",
  126. "10.10",
  127. "10.11",
  128. "10.12",
  129. "10.13",
  130. "10.14",
  131. "10.15",
  132. "10.16",
  133. "10.17",
  134. "10.18",
  135. }
  136. var availablePG11Versions EngineVersions = EngineVersions{
  137. "11.1",
  138. "11.2",
  139. "11.3",
  140. "11.4",
  141. "11.5",
  142. "11.6",
  143. "11.7",
  144. "11.8",
  145. "11.9",
  146. "11.10",
  147. "11.11",
  148. "11.12",
  149. "11.13",
  150. }
  151. var availablePG12Versions EngineVersions = EngineVersions{
  152. "12.2",
  153. "12.3",
  154. "12.4",
  155. "12.5",
  156. "12.6",
  157. "12.7",
  158. "12.8",
  159. }
  160. var availablePG13Versions EngineVersions = EngineVersions{
  161. "13.1",
  162. "13.2",
  163. "13.3",
  164. "13.4",
  165. }
  166. var DBVersionMapping = map[Family]EngineVersions{
  167. FamilyPG9: availablePG9Versions,
  168. FamilyPG10: availablePG10Versions,
  169. FamilyPG11: availablePG11Versions,
  170. FamilyPG12: availablePG12Versions,
  171. FamilyPG13: availablePG13Versions,
  172. FamilyMysql: {},
  173. }