host.go 1.6 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950
  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. // 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 - turn a host into a relay
  31. func CreateRelay(hostID string, relayedHosts []string) *models.ApiHost {
  32. return request[models.ApiHost](http.MethodPost, fmt.Sprintf("/api/hosts/%s/relay", hostID), &models.HostRelayRequest{
  33. HostID: hostID,
  34. RelayedHosts: relayedHosts,
  35. })
  36. }
  37. // DeleteRelay - remove relay role from a host
  38. func DeleteRelay(hostID string) *models.ApiHost {
  39. return request[models.ApiHost](http.MethodDelete, fmt.Sprintf("/api/hosts/%s/relay", hostID), nil)
  40. }