project.go 3.2 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173
  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("/projects", req, resp)
  63. return resp, err
  64. }
  65. // CreateProjectCandidates creates a service account candidate for a given project,
  66. // accepting a kubeconfig that gets parsed into a candidate
  67. func (c *Client) CreateProjectCandidates(
  68. ctx context.Context,
  69. projectID uint,
  70. req *types.CreateClusterCandidateRequest,
  71. ) (*types.CreateClusterCandidateResponse, error) {
  72. resp := &types.CreateClusterCandidateResponse{}
  73. err := c.postRequest(
  74. fmt.Sprintf(
  75. "/projects/%d/clusters/candidates",
  76. projectID,
  77. ),
  78. req,
  79. resp,
  80. )
  81. return resp, err
  82. }
  83. // GetProjectCandidates returns the cluster candidates for a given
  84. // project id
  85. func (c *Client) GetProjectCandidates(
  86. ctx context.Context,
  87. projectID uint,
  88. ) (*types.ListClusterCandidateResponse, error) {
  89. resp := &types.ListClusterCandidateResponse{}
  90. err := c.getRequest(
  91. fmt.Sprintf(
  92. "/projects/%d/clusters/candidates",
  93. projectID,
  94. ),
  95. nil,
  96. resp,
  97. )
  98. return resp, err
  99. }
  100. // CreateProjectCluster creates a cluster given a project id
  101. // and a candidate id, which gets resolved using the list of actions
  102. func (c *Client) CreateProjectCluster(
  103. ctx context.Context,
  104. projectID, candidateID uint,
  105. req *types.ClusterResolverAll,
  106. ) (*types.Cluster, error) {
  107. resp := &types.Cluster{}
  108. err := c.postRequest(
  109. fmt.Sprintf(
  110. "/projects/%d/clusters/candidates/%d/resolve",
  111. projectID,
  112. candidateID,
  113. ),
  114. req,
  115. resp,
  116. )
  117. return resp, err
  118. }
  119. // DeleteProjectCluster deletes a cluster given a project id and cluster id
  120. func (c *Client) DeleteProjectCluster(
  121. ctx context.Context,
  122. projectID uint,
  123. clusterID uint,
  124. ) error {
  125. return c.deleteRequest(
  126. fmt.Sprintf(
  127. "/projects/%d/clusters/%d",
  128. projectID,
  129. clusterID,
  130. ),
  131. nil,
  132. nil,
  133. )
  134. }
  135. // // DeleteProject deletes a project by id
  136. func (c *Client) DeleteProject(
  137. ctx context.Context,
  138. projectID uint,
  139. ) error {
  140. return c.deleteRequest(
  141. fmt.Sprintf(
  142. "/projects/%d",
  143. projectID,
  144. ),
  145. nil,
  146. nil,
  147. )
  148. }