k8s.go 2.0 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111
  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. func (c *Client) GetKubeconfig(
  26. ctx context.Context,
  27. projectID uint,
  28. clusterID uint,
  29. ) (*types.GetTemporaryKubeconfigResponse, error) {
  30. resp := &types.GetTemporaryKubeconfigResponse{}
  31. err := c.getRequest(
  32. fmt.Sprintf(
  33. "/projects/%d/clusters/%d/kubeconfig",
  34. projectID, clusterID,
  35. ),
  36. nil,
  37. resp,
  38. )
  39. return resp, err
  40. }
  41. func (c *Client) GetRelease(
  42. ctx context.Context,
  43. projectID, clusterID uint,
  44. namespace, name string,
  45. ) (*types.GetReleaseResponse, error) {
  46. resp := &types.GetReleaseResponse{}
  47. err := c.getRequest(
  48. fmt.Sprintf(
  49. "/projects/%d/clusters/%d/namespaces/%s/releases/%s/0",
  50. projectID, clusterID,
  51. namespace, name,
  52. ),
  53. nil,
  54. resp,
  55. )
  56. return resp, err
  57. }
  58. func (c *Client) GetJobs(
  59. ctx context.Context,
  60. projectID, clusterID uint,
  61. namespace, name string,
  62. ) ([]v1.Job, error) {
  63. respArr := make([]v1.Job, 0)
  64. resp := &respArr
  65. err := c.getRequest(
  66. fmt.Sprintf(
  67. "/projects/%d/clusters/%d/namespaces/%s/releases/%s/0/jobs",
  68. projectID, clusterID,
  69. namespace, name,
  70. ),
  71. nil,
  72. resp,
  73. )
  74. return *resp, err
  75. }
  76. // GetK8sAllPods gets all pods for a given release
  77. func (c *Client) GetK8sAllPods(
  78. ctx context.Context,
  79. projectID, clusterID uint,
  80. namespace, name string,
  81. ) (*types.GetReleaseAllPodsResponse, error) {
  82. resp := &types.GetReleaseAllPodsResponse{}
  83. err := c.getRequest(
  84. fmt.Sprintf(
  85. "/projects/%d/clusters/%d/namespaces/%s/releases/%s/0/pods/all",
  86. projectID, clusterID,
  87. namespace, name,
  88. ),
  89. nil,
  90. resp,
  91. )
  92. return resp, err
  93. }