k8s.go 3.1 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176
  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) CloneEnvGroup(
  80. ctx context.Context,
  81. projectID, clusterID uint,
  82. namespace string,
  83. req *types.CloneEnvGroupRequest,
  84. ) (*types.EnvGroup, error) {
  85. resp := &types.EnvGroup{}
  86. err := c.postRequest(
  87. fmt.Sprintf(
  88. "/projects/%d/clusters/%d/namespaces/%s/envgroup/clone",
  89. projectID, clusterID,
  90. namespace,
  91. ),
  92. req,
  93. resp,
  94. )
  95. return resp, err
  96. }
  97. func (c *Client) GetRelease(
  98. ctx context.Context,
  99. projectID, clusterID uint,
  100. namespace, name string,
  101. ) (*types.GetReleaseResponse, error) {
  102. resp := &types.GetReleaseResponse{}
  103. err := c.getRequest(
  104. fmt.Sprintf(
  105. "/projects/%d/clusters/%d/namespaces/%s/releases/%s/0",
  106. projectID, clusterID,
  107. namespace, name,
  108. ),
  109. nil,
  110. resp,
  111. )
  112. return resp, err
  113. }
  114. func (c *Client) GetJobs(
  115. ctx context.Context,
  116. projectID, clusterID uint,
  117. namespace, name string,
  118. ) ([]v1.Job, error) {
  119. respArr := make([]v1.Job, 0)
  120. resp := &respArr
  121. err := c.getRequest(
  122. fmt.Sprintf(
  123. "/projects/%d/clusters/%d/namespaces/%s/releases/%s/0/jobs",
  124. projectID, clusterID,
  125. namespace, name,
  126. ),
  127. nil,
  128. resp,
  129. )
  130. return *resp, err
  131. }
  132. // GetK8sAllPods gets all pods for a given release
  133. func (c *Client) GetK8sAllPods(
  134. ctx context.Context,
  135. projectID, clusterID uint,
  136. namespace, name string,
  137. ) (*types.GetReleaseAllPodsResponse, error) {
  138. resp := &types.GetReleaseAllPodsResponse{}
  139. err := c.getRequest(
  140. fmt.Sprintf(
  141. "/projects/%d/clusters/%d/namespaces/%s/releases/%s/0/pods/all",
  142. projectID, clusterID,
  143. namespace, name,
  144. ),
  145. nil,
  146. resp,
  147. )
  148. return resp, err
  149. }