agent_server.go 2.6 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132
  1. package v2
  2. import (
  3. "context"
  4. "encoding/json"
  5. "fmt"
  6. v1 "k8s.io/api/core/v1"
  7. "k8s.io/client-go/kubernetes"
  8. metav1 "k8s.io/apimachinery/pkg/apis/meta/v1"
  9. )
  10. // returns the agent service
  11. func GetAgentService(clientset kubernetes.Interface) (*v1.Service, error) {
  12. return clientset.CoreV1().Services("porter-agent-system").Get(
  13. context.TODO(),
  14. "porter-agent-controller-manager",
  15. metav1.GetOptions{},
  16. )
  17. }
  18. func GetAllIncidents(
  19. clientset kubernetes.Interface,
  20. service *v1.Service,
  21. ) (*IncidentsResponse, error) {
  22. resp := clientset.CoreV1().Services(service.Namespace).ProxyGet(
  23. "http",
  24. service.Name,
  25. fmt.Sprintf("%d", service.Spec.Ports[0].Port),
  26. "/incidents",
  27. nil,
  28. )
  29. rawQuery, err := resp.DoRaw(context.Background())
  30. if err != nil {
  31. return nil, err
  32. }
  33. incidentsResp := &IncidentsResponse{}
  34. err = json.Unmarshal(rawQuery, incidentsResp)
  35. if err != nil {
  36. return nil, err
  37. }
  38. return incidentsResp, nil
  39. }
  40. func GetIncidentEventsByID(
  41. clientset kubernetes.Interface,
  42. service *v1.Service,
  43. incidentID string,
  44. ) (*EventsResponse, error) {
  45. resp := clientset.CoreV1().Services(service.Namespace).ProxyGet(
  46. "http",
  47. service.Name,
  48. fmt.Sprintf("%d", service.Spec.Ports[0].Port),
  49. fmt.Sprintf("/incidents/%s", incidentID),
  50. nil,
  51. )
  52. rawQuery, err := resp.DoRaw(context.Background())
  53. if err != nil {
  54. return nil, err
  55. }
  56. eventsResp := &EventsResponse{}
  57. err = json.Unmarshal(rawQuery, eventsResp)
  58. if err != nil {
  59. return nil, err
  60. }
  61. return eventsResp, nil
  62. }
  63. func GetIncidentsByReleaseNamespace(
  64. clientset kubernetes.Interface,
  65. service *v1.Service,
  66. releaseName, namespace string,
  67. ) (*IncidentsResponse, error) {
  68. resp := clientset.CoreV1().Services(service.Namespace).ProxyGet(
  69. "http",
  70. service.Name,
  71. fmt.Sprintf("%d", service.Spec.Ports[0].Port),
  72. fmt.Sprintf("/incidents/namespaces/%s/releases/%s", namespace, releaseName),
  73. nil,
  74. )
  75. rawQuery, err := resp.DoRaw(context.Background())
  76. if err != nil {
  77. return nil, err
  78. }
  79. incidentsResp := &IncidentsResponse{}
  80. err = json.Unmarshal(rawQuery, incidentsResp)
  81. if err != nil {
  82. return nil, err
  83. }
  84. return incidentsResp, nil
  85. }
  86. func GetLogs(
  87. clientset kubernetes.Interface,
  88. service *v1.Service,
  89. logID string,
  90. ) (*LogsResponse, error) {
  91. resp := clientset.CoreV1().Services(service.Namespace).ProxyGet(
  92. "http",
  93. service.Name,
  94. fmt.Sprintf("%d", service.Spec.Ports[0].Port),
  95. fmt.Sprintf("/incidents/logs/%s", logID),
  96. nil,
  97. )
  98. rawQuery, err := resp.DoRaw(context.Background())
  99. if err != nil {
  100. return nil, err
  101. }
  102. logsResp := &LogsResponse{}
  103. err = json.Unmarshal(rawQuery, logsResp)
  104. if err != nil {
  105. return nil, err
  106. }
  107. return logsResp, nil
  108. }