| 12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273 | package functionsimport (	"fmt"	"net/http"	"github.com/gravitl/netmaker/models")// GetNodes - fetch all nodesfunc GetNodes(networkName ...string) *[]models.ApiNode {	if len(networkName) == 1 {		return request[[]models.ApiNode](http.MethodGet, "/api/nodes/"+networkName[0], nil)	} else {		return request[[]models.ApiNode](http.MethodGet, "/api/nodes", nil)	}}// GetNodeByID - fetch a single node by IDfunc GetNodeByID(networkName, nodeID string) *models.NodeGet {	return request[models.NodeGet](http.MethodGet, fmt.Sprintf("/api/nodes/%s/%s", networkName, nodeID), nil)}// UpdateNode - update a single nodefunc UpdateNode(networkName, nodeID string, node *models.ApiNode) *models.ApiNode {	return request[models.ApiNode](http.MethodPut, fmt.Sprintf("/api/nodes/%s/%s", networkName, nodeID), node)}// DeleteNode - delete a nodefunc DeleteNode(networkName, nodeID string) *models.SuccessResponse {	return request[models.SuccessResponse](http.MethodDelete, fmt.Sprintf("/api/nodes/%s/%s", networkName, nodeID), nil)}// CreateRelay - turn a node into a relayfunc CreateRelay(networkName, nodeID string, relayAddresses []string) *models.ApiNode {	return request[models.ApiNode](http.MethodPost, fmt.Sprintf("/api/nodes/%s/%s/createrelay", networkName, nodeID), &models.RelayRequest{		NetID:      networkName,		NodeID:     nodeID,		RelayAddrs: relayAddresses,	})}// DeleteRelay - remove relay role from a nodefunc DeleteRelay(networkName, nodeID string) *models.ApiNode {	return request[models.ApiNode](http.MethodDelete, fmt.Sprintf("/api/nodes/%s/%s/deleterelay", networkName, nodeID), nil)}// CreateEgress - turn a node into an egressfunc CreateEgress(networkName, nodeID string, payload *models.EgressGatewayRequest) *models.ApiNode {	return request[models.ApiNode](http.MethodPost, fmt.Sprintf("/api/nodes/%s/%s/creategateway", networkName, nodeID), payload)}// DeleteEgress - remove egress role from a nodefunc DeleteEgress(networkName, nodeID string) *models.ApiNode {	return request[models.ApiNode](http.MethodDelete, fmt.Sprintf("/api/nodes/%s/%s/deletegateway", networkName, nodeID), nil)}// CreateIngress - turn a node into an ingressfunc CreateIngress(networkName, nodeID string, failover bool) *models.ApiNode {	return request[models.ApiNode](http.MethodPost, fmt.Sprintf("/api/nodes/%s/%s/createingress", networkName, nodeID), &struct {		Failover bool `json:"failover"`	}{Failover: failover})}// DeleteIngress - remove ingress role from a nodefunc DeleteIngress(networkName, nodeID string) *models.ApiNode {	return request[models.ApiNode](http.MethodDelete, fmt.Sprintf("/api/nodes/%s/%s/deleteingress", networkName, nodeID), nil)}// UncordonNode - uncordon a nodefunc UncordonNode(networkName, nodeID string) *string {	return request[string](http.MethodPost, fmt.Sprintf("/api/nodes/%s/%s/approve", networkName, nodeID), nil)}
 |