mirror of
https://github.com/gravitl/netmaker.git
synced 2025-10-18 14:54:23 +08:00
add node management
This commit is contained in:
62
cli/functions/node.go
Normal file
62
cli/functions/node.go
Normal file
@@ -0,0 +1,62 @@
|
||||
package functions
|
||||
|
||||
import (
|
||||
"fmt"
|
||||
"net/http"
|
||||
|
||||
"github.com/gravitl/netmaker/models"
|
||||
)
|
||||
|
||||
func GetNodes(networkName ...string) *[]models.Node {
|
||||
if len(networkName) == 1 {
|
||||
return request[[]models.Node](http.MethodGet, "/api/nodes/"+networkName[0], nil)
|
||||
} else {
|
||||
return request[[]models.Node](http.MethodGet, "/api/nodes", nil)
|
||||
}
|
||||
}
|
||||
|
||||
func GetNodeByID(networkName, nodeID string) *models.NodeGet {
|
||||
return request[models.NodeGet](http.MethodGet, fmt.Sprintf("/api/nodes/%s/%s", networkName, nodeID), nil)
|
||||
}
|
||||
|
||||
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)
|
||||
}
|
||||
|
||||
func DeleteNode(networkName, nodeID string) *models.SuccessResponse {
|
||||
return request[models.SuccessResponse](http.MethodDelete, fmt.Sprintf("/api/nodes/%s/%s", networkName, nodeID), nil)
|
||||
}
|
||||
|
||||
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,
|
||||
NodeID: nodeID,
|
||||
RelayAddrs: relayAddresses,
|
||||
})
|
||||
}
|
||||
|
||||
func DeleteRelay(networkName, nodeID string) *models.Node {
|
||||
return request[models.Node](http.MethodDelete, fmt.Sprintf("/api/nodes/%s/%s/deleterelay", networkName, nodeID), nil)
|
||||
}
|
||||
|
||||
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)
|
||||
}
|
||||
|
||||
func DeleteEgress(networkName, nodeID string) *models.Node {
|
||||
return request[models.Node](http.MethodDelete, fmt.Sprintf("/api/nodes/%s/%s/deletegateway", networkName, nodeID), nil)
|
||||
}
|
||||
|
||||
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})
|
||||
}
|
||||
|
||||
func DeleteIngress(networkName, nodeID string) *models.Node {
|
||||
return request[models.Node](http.MethodDelete, fmt.Sprintf("/api/nodes/%s/%s/deleteingress", networkName, nodeID), nil)
|
||||
}
|
||||
|
||||
func UncordonNode(networkName, nodeID string) *string {
|
||||
return request[string](http.MethodPost, fmt.Sprintf("/api/nodes/%s/%s/approve", networkName, nodeID), nil)
|
||||
}
|
Reference in New Issue
Block a user