2
0

stacks.go 10 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330
  1. package types
  2. import "time"
  3. // swagger:model
  4. type CreateStackRequest struct {
  5. // The display name of the stack
  6. // required: true
  7. Name string `json:"name" form:"required"`
  8. // A list of app resources to create. An app resource is an application helm chart, such as a `web` or `worker` template.
  9. // required: true
  10. AppResources []*CreateStackAppResourceRequest `json:"app_resources,omitempty" form:"required,dive,required"`
  11. // A list of configurations which can build an application. Each application resource must use at least one
  12. // source config in order to build application from source. The source config can be specified as a Docker image
  13. // registry or linked to a remote Git repository.
  14. // required: true
  15. SourceConfigs []*CreateStackSourceConfigRequest `json:"source_configs,omitempty" form:"required,dive,required"`
  16. // A list of env groups which can be synced to an application
  17. EnvGroups []*CreateStackEnvGroupRequest `json:"env_groups,omitempty" form:"required,dive,required"`
  18. }
  19. // swagger:model
  20. type PutStackSourceConfigRequest struct {
  21. SourceConfigs []*CreateStackSourceConfigRequest `json:"source_configs,omitempty" form:"required,dive,required"`
  22. }
  23. const URLParamStackRevisionNumber URLParam = "stack_revision_number"
  24. // swagger:model
  25. type StackRollbackRequest struct {
  26. TargetRevision uint `json:"target_revision"`
  27. }
  28. // swagger:model
  29. type PatchStackSourceConfigRequest struct {
  30. SourceConfig *UpdateStackSourceConfigRequest `json:"source_config,omitempty" form:"required"`
  31. }
  32. type CreateStackAppResourceRequest struct {
  33. // The URL of the Helm registry to pull the template from. If not set, this defaults to `https://charts.getporter.dev`.
  34. TemplateRepoURL string `json:"template_repo_url"`
  35. // The name of the template in the Helm registry, such as `web`
  36. // required: true
  37. TemplateName string `json:"template_name" form:"required"`
  38. // The version of the template in the Helm registry, such as `v0.50.0`
  39. // required: true
  40. TemplateVersion string `json:"template_version" form:"required"`
  41. // The values to pass in to the template.
  42. Values map[string]interface{} `json:"values"`
  43. // The name of the resource.
  44. // required: true
  45. Name string `json:"name" form:"required,dns1123"`
  46. // The name of the source config (must exist inside `source_configs`).
  47. // required: true
  48. SourceConfigName string `json:"source_config_name" form:"required"`
  49. }
  50. // swagger:model
  51. type UpdateStackRequest struct {
  52. Name string `json:"name" form:"required"`
  53. }
  54. // swagger:model
  55. type Stack struct {
  56. // The time that the stack was initially created
  57. CreatedAt time.Time `json:"created_at"`
  58. // The time that the stack was last updated
  59. UpdatedAt time.Time `json:"updated_at"`
  60. // The display name of the stack
  61. Name string `json:"name"`
  62. // The namespace that the stack was deployed to
  63. Namespace string `json:"namespace"`
  64. // A unique id for the stack
  65. ID string `json:"id"`
  66. // The latest revision for the stack
  67. LatestRevision *StackRevision `json:"latest_revision,omitempty"`
  68. // The list of revisions deployed for this stack
  69. Revisions []StackRevisionMeta `json:"revisions,omitempty"`
  70. }
  71. // swagger:model
  72. type ListStackRevisionsResponse []StackRevision
  73. // swagger:model
  74. type StackListResponse []Stack
  75. type StackResource struct {
  76. // The time that this resource was initially created
  77. CreatedAt time.Time `json:"created_at"`
  78. // The time that this resource was last updated
  79. UpdatedAt time.Time `json:"updated_at"`
  80. // The stack ID that this resource belongs to
  81. StackID string `json:"stack_id"`
  82. // The numerical revision id that this resource belongs to
  83. StackRevisionID uint `json:"stack_revision_id"`
  84. // The name of the resource
  85. Name string `json:"name"`
  86. // The id for this resource
  87. ID string `json:"id"`
  88. // If this is an app resource, app-specific information for the resource
  89. StackAppData *StackResourceAppData `json:"stack_app_data,omitempty"`
  90. // The source configuration that this resource uses, if this is an application resource
  91. StackSourceConfig *StackSourceConfig `json:"stack_source_config,omitempty"`
  92. }
  93. type StackResourceAppData struct {
  94. // The URL of the Helm registry to pull the template from
  95. TemplateRepoURL string `json:"template_repo_url"`
  96. // The name of the template in the Helm registry, such as `web`
  97. TemplateName string `json:"template_name"`
  98. // The version of the template in the Helm registry, such as `v0.50.0`
  99. TemplateVersion string `json:"template_version"`
  100. }
  101. type StackRevisionStatus string
  102. const (
  103. StackRevisionStatusDeploying StackRevisionStatus = "deploying"
  104. StackRevisionStatusFailed StackRevisionStatus = "failed"
  105. StackRevisionStatusDeployed StackRevisionStatus = "deployed"
  106. )
  107. type StackRevisionMeta struct {
  108. // The time that this revision was created
  109. CreatedAt time.Time `json:"created_at"`
  110. // The id of the revision
  111. ID uint `json:"id"`
  112. // The status of the revision
  113. Status StackRevisionStatus `json:"status"`
  114. // The stack ID that this source config belongs to
  115. StackID string `json:"stack_id"`
  116. }
  117. type StackRevision struct {
  118. *StackRevisionMeta
  119. // The reason for any error or status change
  120. Reason string `json:"reason"`
  121. // The message associated with an error or status change
  122. Message string `json:"message"`
  123. // The list of resources deployed in this revision
  124. Resources []StackResource `json:"resources"`
  125. // The list of source configs deployed in this revision
  126. SourceConfigs []StackSourceConfig `json:"source_configs"`
  127. // The list of env groups scoped to this stack
  128. EnvGroups []StackEnvGroup `json:"env_groups"`
  129. }
  130. type StackEnvGroup struct {
  131. // The time that this resource was initially created
  132. CreatedAt time.Time `json:"created_at"`
  133. // The time that this resource was last updated
  134. UpdatedAt time.Time `json:"updated_at"`
  135. // The stack ID that this resource belongs to
  136. StackID string `json:"stack_id"`
  137. // The numerical revision id that this resource belongs to
  138. StackRevisionID uint `json:"stack_revision_id"`
  139. // The name of the resource
  140. Name string `json:"name"`
  141. // The id for this resource
  142. ID string `json:"id"`
  143. // The version of the env group which is being used
  144. EnvGroupVersion uint `json:"env_group_version"`
  145. }
  146. type StackSourceConfig struct {
  147. // The time that the source configuration was initially created
  148. CreatedAt time.Time `json:"created_at"`
  149. // The time that the source configuration was last updated
  150. UpdatedAt time.Time `json:"updated_at"`
  151. // The stack ID that this source config belongs to
  152. StackID string `json:"stack_id"`
  153. // The numerical revision id that this source config belongs to
  154. StackRevisionID uint `json:"stack_revision_id"`
  155. // Unique name for the source config
  156. Name string `json:"name"`
  157. // Display name for the stack source
  158. DisplayName string `json:"display_name"`
  159. // The unique id of the stack source config
  160. ID string `json:"id"`
  161. // The complete image repo uri used by the source
  162. ImageRepoURI string `json:"image_repo_uri"`
  163. // The current image tag used by the application
  164. ImageTag string `json:"image_tag"`
  165. // If this field is empty, the resource is deployed directly from the image repo uri
  166. StackSourceConfigBuild *StackSourceConfigBuild `json:"build,omitempty"`
  167. }
  168. // swagger:model
  169. type CreateStackEnvGroupRequest struct {
  170. // The name of the env group
  171. // required: true
  172. Name string `json:"name" form:"required,dns1123"`
  173. // The non-secret variables to set in the env group
  174. // required: true
  175. Variables map[string]string `json:"variables" form:"required"`
  176. // The secret variables to set in the env group
  177. // required: true
  178. SecretVariables map[string]string `json:"secret_variables" form:"required"`
  179. // The list of applications that this env group should be synced to. These applications **must** be present
  180. // in the stack - if an env group is created from a stack, syncing to applications which are not in the stack
  181. // is not supported
  182. LinkedApplications []string `json:"linked_applications"`
  183. }
  184. // swagger:model
  185. type CreateStackSourceConfigRequest struct {
  186. // required: true
  187. DisplayName string `json:"display_name" form:"required"`
  188. // required: true
  189. Name string `json:"name" form:"required"`
  190. // required: true
  191. ImageRepoURI string `json:"image_repo_uri" form:"required"`
  192. // required: true
  193. ImageTag string `json:"image_tag" form:"required"`
  194. // If this field is empty, the resource is deployed directly from the image repo uri
  195. StackSourceConfigBuild *StackSourceConfigBuild `json:"build,omitempty"`
  196. }
  197. // swagger:model
  198. type UpdateStackSourceConfigRequest struct {
  199. // required: true
  200. Name string `json:"name" form:"required"`
  201. // required: true
  202. ImageRepoURI string `json:"image_repo_uri" form:"required"`
  203. // required: true
  204. ImageTag string `json:"image_tag" form:"required"`
  205. }
  206. type StackSourceConfigBuild struct {
  207. // The build method to use: can be `docker` (for dockerfiles), or `pack` (for buildpacks)
  208. // required: true
  209. Method string `json:"method" form:"required"`
  210. // The path to the build context (the root folder of the application). For example, `.` or `./app`
  211. // required: true
  212. FolderPath string `json:"folder_path" form:"required"`
  213. // The remote Git configuration to use. If not passed in, this application will not appear to be linked to a
  214. // remote Git repository.
  215. StackSourceConfigBuildGit *StackSourceConfigBuildGit `json:"git,omitempty"`
  216. // The Dockerfile build configuration, if `method` is `docker`
  217. StackSourceConfigBuildDockerfile *StackSourceConfigBuildDockerfile `json:"dockerfile,omitempty"`
  218. // The buildpack configuration, if method is `pack`
  219. StackSourceConfigBuildPack *StackSourceConfigBuildPack `json:"buildpack,omitempty"`
  220. }
  221. type StackSourceConfigBuildGit struct {
  222. // The git integration kind: can be `github` or `gitlab`
  223. GitIntegrationKind string `json:"git_integration_kind"`
  224. // The integration id of the github or gitlab integration
  225. GitIntegrationID uint `json:"git_integration_id"`
  226. // The git repo in ${owner}/${repo} form
  227. GitRepo string `json:"git_repo"`
  228. // The git branch to use
  229. GitBranch string `json:"git_branch"`
  230. }
  231. type StackSourceConfigBuildDockerfile struct {
  232. // The path to the dockerfile from the root directory. Defaults to `./Dockerfile`.
  233. DockerfilePath string `json:"dockerfile_path" form:"required"`
  234. }
  235. type StackSourceConfigBuildPack struct {
  236. // The buildpack builder to use
  237. // required: true
  238. Builder string `json:"builder" form:"required"`
  239. // A list of buildpacks to use
  240. Buildpacks []string `json:"buildpacks"`
  241. }