host.go 1.9 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960
  1. package functions
  2. import (
  3. "fmt"
  4. "net/http"
  5. "github.com/gravitl/netmaker/models"
  6. )
  7. type hostNetworksUpdatePayload struct {
  8. Networks []string `json:"networks"`
  9. }
  10. // GetHosts - fetch all host entries
  11. func GetHosts() *[]models.ApiHost {
  12. return request[[]models.ApiHost](http.MethodGet, "/api/hosts", nil)
  13. }
  14. // DeleteHost - delete a host
  15. func DeleteHost(hostID string, force bool) *models.ApiHost {
  16. return request[models.ApiHost](http.MethodDelete, fmt.Sprintf("/api/hosts/%s?force=%t", hostID, force), nil)
  17. }
  18. // UpdateHost - update a host
  19. func UpdateHost(hostID string, body *models.ApiHost) *models.ApiHost {
  20. return request[models.ApiHost](http.MethodPut, "/api/hosts/"+hostID, body)
  21. }
  22. // AddHostToNetwork - add a network to host
  23. func AddHostToNetwork(hostID, network string) *hostNetworksUpdatePayload {
  24. return request[hostNetworksUpdatePayload](http.MethodPost, "/api/hosts/"+hostID+"/networks/"+network, nil)
  25. }
  26. // DeleteHostFromNetwork - deletes a network from host
  27. func DeleteHostFromNetwork(hostID, network string) *hostNetworksUpdatePayload {
  28. return request[hostNetworksUpdatePayload](http.MethodDelete, "/api/hosts/"+hostID+"/networks/"+network, nil)
  29. }
  30. // CreateRelay - add relay to a node
  31. func CreateRelay(netID, nodeID string, relayedNodes []string) *models.ApiNode {
  32. return request[models.ApiNode](http.MethodPost, fmt.Sprintf("/api/nodes/%s/%s/createrelay", netID, nodeID), &models.RelayRequest{
  33. NodeID: nodeID,
  34. NetID: netID,
  35. RelayedNodes: relayedNodes,
  36. })
  37. }
  38. // DeleteRelay - remove relay from a node
  39. func DeleteRelay(netID, nodeID string) *models.ApiNode {
  40. return request[models.ApiNode](http.MethodDelete, fmt.Sprintf("/api/nodes/%s/%s/deleterelay", netID, nodeID), nil)
  41. }
  42. // RefreshKeys - refresh wireguard keys
  43. func RefreshKeys(hostID string) any {
  44. if hostID == "" {
  45. return request[any](http.MethodPut, "/api/hosts/keys", nil)
  46. }
  47. return request[any](http.MethodPut, fmt.Sprintf("/api/hosts/%s/keys", hostID), nil)
  48. }