k8s.go 3.5 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197
  1. package client
  2. import (
  3. "context"
  4. "fmt"
  5. "github.com/porter-dev/porter/api/types"
  6. v1 "k8s.io/api/batch/v1"
  7. )
  8. // GetK8sNamespaces gets a namespaces list in a k8s cluster
  9. func (c *Client) GetK8sNamespaces(
  10. ctx context.Context,
  11. projectID uint,
  12. clusterID uint,
  13. ) (*types.ListNamespacesResponse, error) {
  14. resp := &types.ListNamespacesResponse{}
  15. err := c.getRequest(
  16. fmt.Sprintf(
  17. "/projects/%d/clusters/%d/namespaces",
  18. projectID, clusterID,
  19. ),
  20. nil,
  21. resp,
  22. )
  23. return resp, err
  24. }
  25. // CreateNewK8sNamespace creates a new namespace in a k8s cluster
  26. func (c *Client) CreateNewK8sNamespace(
  27. ctx context.Context,
  28. projectID uint,
  29. clusterID uint,
  30. name string,
  31. ) (*types.CreateNamespaceResponse, error) {
  32. resp := &types.CreateNamespaceResponse{}
  33. err := c.postRequest(
  34. fmt.Sprintf(
  35. "/projects/%d/clusters/%d/namespaces/create",
  36. projectID, clusterID,
  37. ),
  38. &types.CreateNamespaceRequest{
  39. Name: name,
  40. },
  41. resp,
  42. )
  43. return resp, err
  44. }
  45. func (c *Client) GetKubeconfig(
  46. ctx context.Context,
  47. projectID uint,
  48. clusterID uint,
  49. ) (*types.GetTemporaryKubeconfigResponse, error) {
  50. resp := &types.GetTemporaryKubeconfigResponse{}
  51. err := c.getRequest(
  52. fmt.Sprintf(
  53. "/projects/%d/clusters/%d/kubeconfig",
  54. projectID, clusterID,
  55. ),
  56. nil,
  57. resp,
  58. )
  59. return resp, err
  60. }
  61. func (c *Client) GetEnvGroup(
  62. ctx context.Context,
  63. projectID, clusterID uint,
  64. namespace string,
  65. req *types.GetEnvGroupRequest,
  66. ) (*types.EnvGroup, error) {
  67. resp := &types.EnvGroup{}
  68. err := c.getRequest(
  69. fmt.Sprintf(
  70. "/projects/%d/clusters/%d/namespaces/%s/envgroup",
  71. projectID, clusterID,
  72. namespace,
  73. ),
  74. req,
  75. resp,
  76. )
  77. return resp, err
  78. }
  79. func (c *Client) CreateEnvGroup(
  80. ctx context.Context,
  81. projectID, clusterID uint,
  82. namespace string,
  83. req *types.CreateEnvGroupRequest,
  84. ) (*types.EnvGroup, error) {
  85. resp := &types.EnvGroup{}
  86. err := c.postRequest(
  87. fmt.Sprintf(
  88. "/projects/%d/clusters/%d/namespaces/%s/envgroup/create",
  89. projectID, clusterID,
  90. namespace,
  91. ),
  92. req,
  93. resp,
  94. )
  95. return resp, err
  96. }
  97. func (c *Client) CloneEnvGroup(
  98. ctx context.Context,
  99. projectID, clusterID uint,
  100. namespace string,
  101. req *types.CloneEnvGroupRequest,
  102. ) (*types.EnvGroup, error) {
  103. resp := &types.EnvGroup{}
  104. err := c.postRequest(
  105. fmt.Sprintf(
  106. "/projects/%d/clusters/%d/namespaces/%s/envgroup/clone",
  107. projectID, clusterID,
  108. namespace,
  109. ),
  110. req,
  111. resp,
  112. )
  113. return resp, err
  114. }
  115. func (c *Client) GetRelease(
  116. ctx context.Context,
  117. projectID, clusterID uint,
  118. namespace, name string,
  119. ) (*types.GetReleaseResponse, error) {
  120. resp := &types.GetReleaseResponse{}
  121. err := c.getRequest(
  122. fmt.Sprintf(
  123. "/projects/%d/clusters/%d/namespaces/%s/releases/%s/0",
  124. projectID, clusterID,
  125. namespace, name,
  126. ),
  127. nil,
  128. resp,
  129. )
  130. return resp, err
  131. }
  132. func (c *Client) GetJobs(
  133. ctx context.Context,
  134. projectID, clusterID uint,
  135. namespace, name string,
  136. ) ([]v1.Job, error) {
  137. respArr := make([]v1.Job, 0)
  138. resp := &respArr
  139. err := c.getRequest(
  140. fmt.Sprintf(
  141. "/projects/%d/clusters/%d/namespaces/%s/releases/%s/0/jobs",
  142. projectID, clusterID,
  143. namespace, name,
  144. ),
  145. nil,
  146. resp,
  147. )
  148. return *resp, err
  149. }
  150. // GetK8sAllPods gets all pods for a given release
  151. func (c *Client) GetK8sAllPods(
  152. ctx context.Context,
  153. projectID, clusterID uint,
  154. namespace, name string,
  155. ) (*types.GetReleaseAllPodsResponse, error) {
  156. resp := &types.GetReleaseAllPodsResponse{}
  157. err := c.getRequest(
  158. fmt.Sprintf(
  159. "/projects/%d/clusters/%d/namespaces/%s/releases/%s/0/pods/all",
  160. projectID, clusterID,
  161. namespace, name,
  162. ),
  163. nil,
  164. resp,
  165. )
  166. return resp, err
  167. }