2
0

registry.go 4.8 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262
  1. package client
  2. import (
  3. "context"
  4. "fmt"
  5. "github.com/porter-dev/porter/api/types"
  6. )
  7. // CreateRegistry creates a new registry integration
  8. func (c *Client) CreateRegistry(
  9. ctx context.Context,
  10. projectID uint,
  11. req *types.CreateRegistryRequest,
  12. ) (*types.Registry, error) {
  13. resp := &types.Registry{}
  14. err := c.postRequest(
  15. fmt.Sprintf(
  16. "/projects/%d/registries",
  17. projectID,
  18. ),
  19. req,
  20. resp,
  21. )
  22. return resp, err
  23. }
  24. // CreateRegistry creates a new registry integration
  25. func (c *Client) CreateHelmRepo(
  26. ctx context.Context,
  27. projectID uint,
  28. req *types.CreateHelmRepoRequest,
  29. ) (*types.HelmRepo, error) {
  30. resp := &types.HelmRepo{}
  31. err := c.postRequest(
  32. fmt.Sprintf(
  33. "/projects/%d/helmrepos",
  34. projectID,
  35. ),
  36. req,
  37. resp,
  38. )
  39. return resp, err
  40. }
  41. // ListRegistries returns a list of registries for a project
  42. func (c *Client) ListRegistries(
  43. ctx context.Context,
  44. projectID uint,
  45. ) (*types.RegistryListResponse, error) {
  46. resp := &types.RegistryListResponse{}
  47. err := c.getRequest(
  48. fmt.Sprintf(
  49. "/projects/%d/registries",
  50. projectID,
  51. ),
  52. nil,
  53. resp,
  54. )
  55. return resp, err
  56. }
  57. // DeleteProjectRegistry deletes a registry given a project id and registry id
  58. func (c *Client) DeleteProjectRegistry(
  59. ctx context.Context,
  60. projectID uint,
  61. registryID uint,
  62. ) error {
  63. return c.deleteRequest(
  64. fmt.Sprintf(
  65. "/projects/%d/registries/%d",
  66. projectID,
  67. registryID,
  68. ),
  69. nil,
  70. nil,
  71. )
  72. }
  73. // GetECRAuthorizationToken gets an ECR authorization token
  74. func (c *Client) GetECRAuthorizationToken(
  75. ctx context.Context,
  76. projectID uint,
  77. req *types.GetRegistryECRTokenRequest,
  78. ) (*types.GetRegistryTokenResponse, error) {
  79. resp := &types.GetRegistryTokenResponse{}
  80. err := c.getRequest(
  81. fmt.Sprintf(
  82. "/projects/%d/registries/ecr/token",
  83. projectID,
  84. ),
  85. req,
  86. resp,
  87. )
  88. return resp, err
  89. }
  90. // GetGCRAuthorizationToken gets a GCR authorization token
  91. func (c *Client) GetGCRAuthorizationToken(
  92. ctx context.Context,
  93. projectID uint,
  94. req *types.GetRegistryGCRTokenRequest,
  95. ) (*types.GetRegistryTokenResponse, error) {
  96. resp := &types.GetRegistryTokenResponse{}
  97. err := c.getRequest(
  98. fmt.Sprintf(
  99. "/projects/%d/registries/gcr/token",
  100. projectID,
  101. ),
  102. req,
  103. resp,
  104. )
  105. return resp, err
  106. }
  107. // GetGARAuthorizationToken gets a GAR authorization token
  108. func (c *Client) GetGARAuthorizationToken(
  109. ctx context.Context,
  110. projectID uint,
  111. req *types.GetRegistryGARTokenRequest,
  112. ) (*types.GetRegistryTokenResponse, error) {
  113. resp := &types.GetRegistryTokenResponse{}
  114. err := c.getRequest(
  115. fmt.Sprintf(
  116. "/projects/%d/registries/gar/token",
  117. projectID,
  118. ),
  119. req,
  120. resp,
  121. )
  122. return resp, err
  123. }
  124. // GetACRAuthorizationToken gets a ACR authorization token
  125. func (c *Client) GetACRAuthorizationToken(
  126. ctx context.Context,
  127. projectID uint,
  128. ) (*types.GetRegistryTokenResponse, error) {
  129. resp := &types.GetRegistryTokenResponse{}
  130. err := c.getRequest(
  131. fmt.Sprintf(
  132. "/projects/%d/registries/acr/token",
  133. projectID,
  134. ),
  135. nil,
  136. resp,
  137. )
  138. return resp, err
  139. }
  140. // GetDockerhubAuthorizationToken gets a Docker Hub authorization token
  141. func (c *Client) GetDockerhubAuthorizationToken(
  142. ctx context.Context,
  143. projectID uint,
  144. ) (*types.GetRegistryTokenResponse, error) {
  145. resp := &types.GetRegistryTokenResponse{}
  146. err := c.getRequest(
  147. fmt.Sprintf(
  148. "/projects/%d/registries/dockerhub/token",
  149. projectID,
  150. ),
  151. nil,
  152. resp,
  153. )
  154. return resp, err
  155. }
  156. // GetDOCRAuthorizationToken gets a DOCR authorization token
  157. func (c *Client) GetDOCRAuthorizationToken(
  158. ctx context.Context,
  159. projectID uint,
  160. req *types.GetRegistryGCRTokenRequest,
  161. ) (*types.GetRegistryTokenResponse, error) {
  162. resp := &types.GetRegistryTokenResponse{}
  163. err := c.getRequest(
  164. fmt.Sprintf(
  165. "/projects/%d/registries/docr/token",
  166. projectID,
  167. ),
  168. req,
  169. resp,
  170. )
  171. return resp, err
  172. }
  173. // ListRegistryRepositories lists the repositories in a registry
  174. func (c *Client) ListRegistryRepositories(
  175. ctx context.Context,
  176. projectID uint,
  177. registryID uint,
  178. ) (*types.ListRegistryRepositoryResponse, error) {
  179. resp := &types.ListRegistryRepositoryResponse{}
  180. err := c.getRequest(
  181. fmt.Sprintf(
  182. "/projects/%d/registries/%d/repositories",
  183. projectID,
  184. registryID,
  185. ),
  186. nil,
  187. resp,
  188. )
  189. return resp, err
  190. }
  191. // ListImages lists the images (repository+tag) in a repository
  192. func (c *Client) ListImages(
  193. ctx context.Context,
  194. projectID uint,
  195. registryID uint,
  196. repoName string,
  197. ) (*types.ListImageResponse, error) {
  198. resp := &types.ListImageResponse{}
  199. err := c.getRequest(
  200. fmt.Sprintf(
  201. "/projects/%d/registries/%d/repositories/%s",
  202. projectID,
  203. registryID,
  204. repoName,
  205. ),
  206. nil,
  207. resp,
  208. )
  209. return resp, err
  210. }
  211. func (c *Client) CreateRepository(
  212. ctx context.Context,
  213. projectID, regID uint,
  214. req *types.CreateRegistryRepositoryRequest,
  215. ) error {
  216. return c.postRequest(
  217. fmt.Sprintf(
  218. "/projects/%d/registries/%d/repository",
  219. projectID,
  220. regID,
  221. ),
  222. req,
  223. nil,
  224. )
  225. }