|
@@ -7,6 +7,7 @@ import (
|
|
|
"github.com/gravitl/netmaker/models"
|
|
|
)
|
|
|
|
|
|
+// GetNodes - fetch all nodes
|
|
|
func GetNodes(networkName ...string) *[]models.Node {
|
|
|
if len(networkName) == 1 {
|
|
|
return request[[]models.Node](http.MethodGet, "/api/nodes/"+networkName[0], nil)
|
|
@@ -15,18 +16,22 @@ func GetNodes(networkName ...string) *[]models.Node {
|
|
|
}
|
|
|
}
|
|
|
|
|
|
+// GetNodeByID - fetch a single node by ID
|
|
|
func 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 node
|
|
|
func UpdateNode(networkName, nodeID string, node *models.Node) *models.Node {
|
|
|
return request[models.Node](http.MethodPut, fmt.Sprintf("/api/nodes/%s/%s", networkName, nodeID), node)
|
|
|
}
|
|
|
|
|
|
+// DeleteNode - delete a node
|
|
|
func 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 relay
|
|
|
func CreateRelay(networkName, nodeID string, relayAddresses []string) *models.Node {
|
|
|
return request[models.Node](http.MethodPost, fmt.Sprintf("/api/nodes/%s/%s/createrelay", networkName, nodeID), &models.RelayRequest{
|
|
|
NetID: networkName,
|
|
@@ -35,28 +40,34 @@ func CreateRelay(networkName, nodeID string, relayAddresses []string) *models.No
|
|
|
})
|
|
|
}
|
|
|
|
|
|
+// DeleteRelay - remove relay role from a node
|
|
|
func DeleteRelay(networkName, nodeID string) *models.Node {
|
|
|
return request[models.Node](http.MethodDelete, fmt.Sprintf("/api/nodes/%s/%s/deleterelay", networkName, nodeID), nil)
|
|
|
}
|
|
|
|
|
|
+// CreateEgress - turn a node into an egress
|
|
|
func CreateEgress(networkName, nodeID string, payload *models.EgressGatewayRequest) *models.Node {
|
|
|
return request[models.Node](http.MethodPost, fmt.Sprintf("/api/nodes/%s/%s/creategateway", networkName, nodeID), payload)
|
|
|
}
|
|
|
|
|
|
+// DeleteEgress - remove egress role from a node
|
|
|
func DeleteEgress(networkName, nodeID string) *models.Node {
|
|
|
return request[models.Node](http.MethodDelete, fmt.Sprintf("/api/nodes/%s/%s/deletegateway", networkName, nodeID), nil)
|
|
|
}
|
|
|
|
|
|
+// CreateIngress - turn a node into an ingress
|
|
|
func CreateIngress(networkName, nodeID string, failover bool) *models.Node {
|
|
|
return request[models.Node](http.MethodPost, fmt.Sprintf("/api/nodes/%s/%s/createingress", networkName, nodeID), &struct {
|
|
|
Failover bool `json:"failover"`
|
|
|
}{Failover: failover})
|
|
|
}
|
|
|
|
|
|
+// DeleteIngress - remove ingress role from a node
|
|
|
func DeleteIngress(networkName, nodeID string) *models.Node {
|
|
|
return request[models.Node](http.MethodDelete, fmt.Sprintf("/api/nodes/%s/%s/deleteingress", networkName, nodeID), nil)
|
|
|
}
|
|
|
|
|
|
+// UncordonNode - uncordon a node
|
|
|
func UncordonNode(networkName, nodeID string) *string {
|
|
|
return request[string](http.MethodPost, fmt.Sprintf("/api/nodes/%s/%s/approve", networkName, nodeID), nil)
|
|
|
}
|