registry.go 3.7 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203
  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. // ListRegistries returns a list of registries for a project
  25. func (c *Client) ListRegistries(
  26. ctx context.Context,
  27. projectID uint,
  28. ) (*types.RegistryListResponse, error) {
  29. resp := &types.RegistryListResponse{}
  30. err := c.getRequest(
  31. fmt.Sprintf(
  32. "/projects/%d/registries",
  33. projectID,
  34. ),
  35. nil,
  36. resp,
  37. )
  38. return resp, err
  39. }
  40. // DeleteProjectRegistry deletes a registry given a project id and registry id
  41. func (c *Client) DeleteProjectRegistry(
  42. ctx context.Context,
  43. projectID uint,
  44. registryID uint,
  45. ) error {
  46. return c.deleteRequest(
  47. fmt.Sprintf(
  48. "/projects/%d/registries/%d",
  49. projectID,
  50. registryID,
  51. ),
  52. nil,
  53. nil,
  54. )
  55. }
  56. // GetECRAuthorizationToken gets an ECR authorization token
  57. func (c *Client) GetECRAuthorizationToken(
  58. ctx context.Context,
  59. projectID uint,
  60. req *types.GetRegistryECRTokenRequest,
  61. ) (*types.GetRegistryTokenResponse, error) {
  62. resp := &types.GetRegistryTokenResponse{}
  63. err := c.getRequest(
  64. fmt.Sprintf(
  65. "/projects/%d/registries/ecr/token",
  66. projectID,
  67. ),
  68. req,
  69. resp,
  70. )
  71. return resp, err
  72. }
  73. // GetGCRAuthorizationToken gets a GCR authorization token
  74. func (c *Client) GetGCRAuthorizationToken(
  75. ctx context.Context,
  76. projectID uint,
  77. req *types.GetRegistryGCRTokenRequest,
  78. ) (*types.GetRegistryTokenResponse, error) {
  79. resp := &types.GetRegistryTokenResponse{}
  80. err := c.getRequest(
  81. fmt.Sprintf(
  82. "/projects/%d/registries/gcr/token",
  83. projectID,
  84. ),
  85. req,
  86. resp,
  87. )
  88. return resp, err
  89. }
  90. // GetDockerhubAuthorizationToken gets a Docker Hub authorization token
  91. func (c *Client) GetDockerhubAuthorizationToken(
  92. ctx context.Context,
  93. projectID uint,
  94. ) (*types.GetRegistryTokenResponse, error) {
  95. resp := &types.GetRegistryTokenResponse{}
  96. err := c.getRequest(
  97. fmt.Sprintf(
  98. "/projects/%d/registries/dockerhub/token",
  99. projectID,
  100. ),
  101. nil,
  102. resp,
  103. )
  104. return resp, err
  105. }
  106. // GetDOCRAuthorizationToken gets a DOCR authorization token
  107. func (c *Client) GetDOCRAuthorizationToken(
  108. ctx context.Context,
  109. projectID uint,
  110. req *types.GetRegistryGCRTokenRequest,
  111. ) (*types.GetRegistryTokenResponse, error) {
  112. resp := &types.GetRegistryTokenResponse{}
  113. err := c.getRequest(
  114. fmt.Sprintf(
  115. "/projects/%d/registries/docr/token",
  116. projectID,
  117. ),
  118. req,
  119. resp,
  120. )
  121. return resp, err
  122. }
  123. // ListRegistryRepositories lists the repositories in a registry
  124. func (c *Client) ListRegistryRepositories(
  125. ctx context.Context,
  126. projectID uint,
  127. registryID uint,
  128. ) (*types.ListRegistryRepositoryResponse, error) {
  129. resp := &types.ListRegistryRepositoryResponse{}
  130. err := c.getRequest(
  131. fmt.Sprintf(
  132. "/projects/%d/registries/%d/repositories",
  133. projectID,
  134. registryID,
  135. ),
  136. nil,
  137. resp,
  138. )
  139. return resp, err
  140. }
  141. // ListImages lists the images (repository+tag) in a repository
  142. func (c *Client) ListImages(
  143. ctx context.Context,
  144. projectID uint,
  145. registryID uint,
  146. repoName string,
  147. ) (*types.ListImageResponse, error) {
  148. resp := &types.ListImageResponse{}
  149. err := c.getRequest(
  150. fmt.Sprintf(
  151. "/projects/%d/registries/%d/repositories/%s",
  152. projectID,
  153. registryID,
  154. repoName,
  155. ),
  156. nil,
  157. resp,
  158. )
  159. return resp, err
  160. }
  161. func (c *Client) CreateRepository(
  162. ctx context.Context,
  163. projectID, regID uint,
  164. req *types.CreateRegistryRepositoryRequest,
  165. ) error {
  166. return c.postRequest(
  167. fmt.Sprintf(
  168. "/projects/%d/registries/%d/repository",
  169. projectID,
  170. regID,
  171. ),
  172. req,
  173. nil,
  174. )
  175. }