host.go 1.4 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647
  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) *models.ApiHost {
  16. return request[models.ApiHost](http.MethodDelete, "/api/hosts/"+hostID, 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. // UpdateHostNetworks - update a host's networks
  23. func UpdateHostNetworks(hostID string, networks []string) *hostNetworksUpdatePayload {
  24. return request[hostNetworksUpdatePayload](http.MethodPut, "/api/hosts/"+hostID+"/networks", &hostNetworksUpdatePayload{
  25. Networks: networks,
  26. })
  27. }
  28. // CreateRelay - turn a host into a relay
  29. func CreateRelay(hostID string, relayedHosts []string) *models.ApiHost {
  30. return request[models.ApiHost](http.MethodPost, fmt.Sprintf("/api/hosts/%s/relay", hostID), &models.HostRelayRequest{
  31. HostID: hostID,
  32. RelayedHosts: relayedHosts,
  33. })
  34. }
  35. // DeleteRelay - remove relay role from a host
  36. func DeleteRelay(hostID string) *models.ApiHost {
  37. return request[models.ApiHost](http.MethodDelete, fmt.Sprintf("/api/hosts/%s/relay", hostID), nil)
  38. }