mirror of
https://github.com/gravitl/netmaker.git
synced 2025-11-10 16:50:46 +08:00
added ability to disable ext clients
This commit is contained in:
parent
112f03cf1f
commit
01484eec7b
3 changed files with 16 additions and 3 deletions
|
|
@ -228,6 +228,8 @@ func createExtClient(w http.ResponseWriter, r *http.Request) {
|
||||||
return
|
return
|
||||||
}
|
}
|
||||||
extclient.IngressGatewayEndpoint = node.Endpoint + ":" + strconv.FormatInt(int64(node.ListenPort), 10)
|
extclient.IngressGatewayEndpoint = node.Endpoint + ":" + strconv.FormatInt(int64(node.ListenPort), 10)
|
||||||
|
// TODO, could rely on network template as well in future
|
||||||
|
extclient.Enabled = true
|
||||||
err = json.NewDecoder(r.Body).Decode(&extclient)
|
err = json.NewDecoder(r.Body).Decode(&extclient)
|
||||||
if err != nil && !errors.Is(err, io.EOF) {
|
if err != nil && !errors.Is(err, io.EOF) {
|
||||||
returnErrorResponse(w, r, formatError(err, "internal"))
|
returnErrorResponse(w, r, formatError(err, "internal"))
|
||||||
|
|
@ -268,12 +270,21 @@ func updateExtClient(w http.ResponseWriter, r *http.Request) {
|
||||||
returnErrorResponse(w, r, formatError(err, "internal"))
|
returnErrorResponse(w, r, formatError(err, "internal"))
|
||||||
return
|
return
|
||||||
}
|
}
|
||||||
newclient, err := logic.UpdateExtClient(newExtClient.ClientID, params["network"], &oldExtClient)
|
var changedEnabled = newExtClient.Enabled != oldExtClient.Enabled // indicates there was a change in enablement
|
||||||
|
newclient, err := logic.UpdateExtClient(newExtClient.ClientID, params["network"], newExtClient.Enabled, &oldExtClient)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
returnErrorResponse(w, r, formatError(err, "internal"))
|
returnErrorResponse(w, r, formatError(err, "internal"))
|
||||||
return
|
return
|
||||||
}
|
}
|
||||||
logger.Log(1, r.Header.Get("user"), "updated client", newExtClient.ClientID)
|
logger.Log(1, r.Header.Get("user"), "updated client", newExtClient.ClientID)
|
||||||
|
if changedEnabled { // need to send a peer update to the ingress node as enablement of one of it's clients has changed
|
||||||
|
serverNode, err := logic.GetNetworkServerLocal(params["network"])
|
||||||
|
if err == nil {
|
||||||
|
if err = mq.PublishPeerUpdate(&serverNode); err != nil {
|
||||||
|
logger.Log(1, "failed to send peer update after enablement change for ext client", newExtClient.ClientID)
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
w.WriteHeader(http.StatusOK)
|
w.WriteHeader(http.StatusOK)
|
||||||
json.NewEncoder(w).Encode(newclient)
|
json.NewEncoder(w).Encode(newclient)
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -33,7 +33,7 @@ func GetExtPeersList(node *models.Node) ([]models.ExtPeersResponse, error) {
|
||||||
logger.Log(2, "failed to unmarshal ext client")
|
logger.Log(2, "failed to unmarshal ext client")
|
||||||
continue
|
continue
|
||||||
}
|
}
|
||||||
if extClient.Network == node.Network && extClient.IngressGatewayID == node.ID {
|
if extClient.Enabled && extClient.Network == node.Network && extClient.IngressGatewayID == node.ID {
|
||||||
peers = append(peers, peer)
|
peers = append(peers, peer)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
@ -162,13 +162,14 @@ func CreateExtClient(extclient *models.ExtClient) error {
|
||||||
}
|
}
|
||||||
|
|
||||||
// UpdateExtClient - only supports name changes right now
|
// UpdateExtClient - only supports name changes right now
|
||||||
func UpdateExtClient(newclientid string, network string, client *models.ExtClient) (*models.ExtClient, error) {
|
func UpdateExtClient(newclientid string, network string, enabled bool, client *models.ExtClient) (*models.ExtClient, error) {
|
||||||
|
|
||||||
err := DeleteExtClient(network, client.ClientID)
|
err := DeleteExtClient(network, client.ClientID)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return client, err
|
return client, err
|
||||||
}
|
}
|
||||||
client.ClientID = newclientid
|
client.ClientID = newclientid
|
||||||
|
client.Enabled = enabled
|
||||||
CreateExtClient(client)
|
CreateExtClient(client)
|
||||||
return client, err
|
return client, err
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -12,4 +12,5 @@ type ExtClient struct {
|
||||||
IngressGatewayID string `json:"ingressgatewayid" bson:"ingressgatewayid"`
|
IngressGatewayID string `json:"ingressgatewayid" bson:"ingressgatewayid"`
|
||||||
IngressGatewayEndpoint string `json:"ingressgatewayendpoint" bson:"ingressgatewayendpoint"`
|
IngressGatewayEndpoint string `json:"ingressgatewayendpoint" bson:"ingressgatewayendpoint"`
|
||||||
LastModified int64 `json:"lastmodified" bson:"lastmodified"`
|
LastModified int64 `json:"lastmodified" bson:"lastmodified"`
|
||||||
|
Enabled bool `json:"enabled" bson:"enabled"`
|
||||||
}
|
}
|
||||||
|
|
|
||||||
Loading…
Add table
Reference in a new issue