project.go 3.3 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179
  1. package client
  2. import (
  3. "context"
  4. "fmt"
  5. "github.com/porter-dev/porter/api/types"
  6. )
  7. // GetProject retrieves a project by id
  8. func (c *Client) GetProject(
  9. ctx context.Context,
  10. projectID uint,
  11. ) (*types.ReadProjectResponse, error) {
  12. resp := &types.ReadProjectResponse{}
  13. err := c.getRequest(
  14. fmt.Sprintf(
  15. "/projects/%d",
  16. projectID,
  17. ),
  18. nil,
  19. resp,
  20. )
  21. return resp, err
  22. }
  23. // GetProjectCluster retrieves a project's cluster by id
  24. func (c *Client) GetProjectCluster(
  25. ctx context.Context,
  26. projectID uint,
  27. clusterID uint,
  28. ) (*types.ClusterGetResponse, error) {
  29. resp := &types.ClusterGetResponse{}
  30. err := c.getRequest(
  31. fmt.Sprintf(
  32. "/projects/%d/clusters/%d",
  33. projectID, clusterID,
  34. ),
  35. nil,
  36. resp,
  37. )
  38. return resp, err
  39. }
  40. // ListProjectClusters creates a list of clusters for a given project
  41. func (c *Client) ListProjectClusters(
  42. ctx context.Context,
  43. projectID uint,
  44. ) (*types.ListClusterResponse, error) {
  45. resp := &types.ListClusterResponse{}
  46. err := c.getRequest(
  47. fmt.Sprintf(
  48. "/projects/%d/clusters",
  49. projectID,
  50. ),
  51. nil,
  52. resp,
  53. )
  54. return resp, err
  55. }
  56. // CreateProject creates a project with the given request options
  57. func (c *Client) CreateProject(
  58. ctx context.Context,
  59. req *types.CreateProjectRequest,
  60. ) (*types.CreateProjectResponse, error) {
  61. resp := &types.CreateProjectResponse{}
  62. err := c.postRequest(
  63. fmt.Sprintf(
  64. "/projects",
  65. ),
  66. req,
  67. resp,
  68. )
  69. return resp, err
  70. }
  71. // CreateProjectCandidates creates a service account candidate for a given project,
  72. // accepting a kubeconfig that gets parsed into a candidate
  73. func (c *Client) CreateProjectCandidates(
  74. ctx context.Context,
  75. projectID uint,
  76. req *types.CreateClusterCandidateRequest,
  77. ) (*types.CreateClusterCandidateResponse, error) {
  78. resp := &types.CreateClusterCandidateResponse{}
  79. err := c.postRequest(
  80. fmt.Sprintf(
  81. "/projects/%d/clusters/candidates",
  82. projectID,
  83. ),
  84. req,
  85. resp,
  86. )
  87. return resp, err
  88. }
  89. // GetProjectCandidates returns the cluster candidates for a given
  90. // project id
  91. func (c *Client) GetProjectCandidates(
  92. ctx context.Context,
  93. projectID uint,
  94. ) (*types.ListClusterCandidateResponse, error) {
  95. resp := &types.ListClusterCandidateResponse{}
  96. err := c.getRequest(
  97. fmt.Sprintf(
  98. "/projects/%d/clusters/candidates",
  99. projectID,
  100. ),
  101. nil,
  102. resp,
  103. )
  104. return resp, err
  105. }
  106. // CreateProjectCluster creates a cluster given a project id
  107. // and a candidate id, which gets resolved using the list of actions
  108. func (c *Client) CreateProjectCluster(
  109. ctx context.Context,
  110. projectID, candidateID uint,
  111. req *types.ClusterResolverAll,
  112. ) (*types.Cluster, error) {
  113. resp := &types.Cluster{}
  114. err := c.postRequest(
  115. fmt.Sprintf(
  116. "/projects/%d/clusters/candidates/%d/resolve",
  117. projectID,
  118. candidateID,
  119. ),
  120. req,
  121. resp,
  122. )
  123. return resp, err
  124. }
  125. // DeleteProjectCluster deletes a cluster given a project id and cluster id
  126. func (c *Client) DeleteProjectCluster(
  127. ctx context.Context,
  128. projectID uint,
  129. clusterID uint,
  130. ) error {
  131. return c.deleteRequest(
  132. fmt.Sprintf(
  133. "/projects/%d/clusters/%d",
  134. projectID,
  135. clusterID,
  136. ),
  137. nil,
  138. nil,
  139. )
  140. }
  141. // // DeleteProject deletes a project by id
  142. func (c *Client) DeleteProject(
  143. ctx context.Context,
  144. projectID uint,
  145. ) error {
  146. return c.deleteRequest(
  147. fmt.Sprintf(
  148. "/projects/%d",
  149. projectID,
  150. ),
  151. nil,
  152. nil,
  153. )
  154. }