2
0

k8s.go 2.8 KB

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