node.go 2.3 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162
  1. package functions
  2. import (
  3. "fmt"
  4. "net/http"
  5. "github.com/gravitl/netmaker/models"
  6. )
  7. func GetNodes(networkName ...string) *[]models.Node {
  8. if len(networkName) == 1 {
  9. return request[[]models.Node](http.MethodGet, "/api/nodes/"+networkName[0], nil)
  10. } else {
  11. return request[[]models.Node](http.MethodGet, "/api/nodes", nil)
  12. }
  13. }
  14. func GetNodeByID(networkName, nodeID string) *models.NodeGet {
  15. return request[models.NodeGet](http.MethodGet, fmt.Sprintf("/api/nodes/%s/%s", networkName, nodeID), nil)
  16. }
  17. func UpdateNode(networkName, nodeID string, node *models.Node) *models.Node {
  18. return request[models.Node](http.MethodPut, fmt.Sprintf("/api/nodes/%s/%s", networkName, nodeID), node)
  19. }
  20. func DeleteNode(networkName, nodeID string) *models.SuccessResponse {
  21. return request[models.SuccessResponse](http.MethodDelete, fmt.Sprintf("/api/nodes/%s/%s", networkName, nodeID), nil)
  22. }
  23. func CreateRelay(networkName, nodeID string, relayAddresses []string) *models.Node {
  24. return request[models.Node](http.MethodPost, fmt.Sprintf("/api/nodes/%s/%s/createrelay", networkName, nodeID), &models.RelayRequest{
  25. NetID: networkName,
  26. NodeID: nodeID,
  27. RelayAddrs: relayAddresses,
  28. })
  29. }
  30. func DeleteRelay(networkName, nodeID string) *models.Node {
  31. return request[models.Node](http.MethodDelete, fmt.Sprintf("/api/nodes/%s/%s/deleterelay", networkName, nodeID), nil)
  32. }
  33. func CreateEgress(networkName, nodeID string, payload *models.EgressGatewayRequest) *models.Node {
  34. return request[models.Node](http.MethodPost, fmt.Sprintf("/api/nodes/%s/%s/creategateway", networkName, nodeID), payload)
  35. }
  36. func DeleteEgress(networkName, nodeID string) *models.Node {
  37. return request[models.Node](http.MethodDelete, fmt.Sprintf("/api/nodes/%s/%s/deletegateway", networkName, nodeID), nil)
  38. }
  39. func CreateIngress(networkName, nodeID string, failover bool) *models.Node {
  40. return request[models.Node](http.MethodPost, fmt.Sprintf("/api/nodes/%s/%s/createingress", networkName, nodeID), &struct {
  41. Failover bool `json:"failover"`
  42. }{Failover: failover})
  43. }
  44. func DeleteIngress(networkName, nodeID string) *models.Node {
  45. return request[models.Node](http.MethodDelete, fmt.Sprintf("/api/nodes/%s/%s/deleteingress", networkName, nodeID), nil)
  46. }
  47. func UncordonNode(networkName, nodeID string) *string {
  48. return request[string](http.MethodPost, fmt.Sprintf("/api/nodes/%s/%s/approve", networkName, nodeID), nil)
  49. }