|
@@ -397,9 +397,7 @@ func createExtClient(w http.ResponseWriter, r *http.Request) {
|
|
|
logger.Log(0, r.Header.Get("user"), "created new ext client on network", networkName)
|
|
|
w.WriteHeader(http.StatusOK)
|
|
|
go func() {
|
|
|
- if err := mq.PublishPeerUpdate(); err != nil {
|
|
|
- logger.Log(1, "error setting ext peers on "+nodeid+": "+err.Error())
|
|
|
- }
|
|
|
+ mq.BroadcastExtClient(host, &node)
|
|
|
if err := mq.PublishExtCLientDNS(&extclient); err != nil {
|
|
|
logger.Log(1, "error publishing extclient dns", err.Error())
|
|
|
}
|
|
@@ -484,7 +482,7 @@ func updateExtClient(w http.ResponseWriter, r *http.Request) {
|
|
|
var changedEnabled = (update.Enabled != oldExtClient.Enabled) // indicates there was a change in enablement
|
|
|
// extra var need as logic.Update changes oldExtClient
|
|
|
currentClient := oldExtClient
|
|
|
- newclient, err := logic.UpdateExtClient(&oldExtClient, &update)
|
|
|
+ newclient, replaceOldClient, err := logic.UpdateExtClient(&oldExtClient, &update)
|
|
|
if err != nil {
|
|
|
logger.Log(0, r.Header.Get("user"),
|
|
|
fmt.Sprintf("failed to update ext client [%s], network [%s]: %v",
|
|
@@ -493,22 +491,29 @@ func updateExtClient(w http.ResponseWriter, r *http.Request) {
|
|
|
return
|
|
|
}
|
|
|
logger.Log(0, r.Header.Get("user"), "updated ext client", update.ClientID)
|
|
|
- if changedEnabled { // need to send a peer update to the ingress node as enablement of one of it's clients has changed
|
|
|
+
|
|
|
+ w.WriteHeader(http.StatusOK)
|
|
|
+ json.NewEncoder(w).Encode(newclient)
|
|
|
+
|
|
|
+ go func() {
|
|
|
if ingressNode, err := logic.GetNodeByID(newclient.IngressGatewayID); err == nil {
|
|
|
- if err = mq.PublishPeerUpdate(); err != nil {
|
|
|
- logger.Log(1, "error setting ext peers on", ingressNode.ID.String(), ":", err.Error())
|
|
|
+ if ingressHost, err := logic.GetHost(ingressNode.HostID.String()); err == nil {
|
|
|
+ if replaceOldClient || !update.Enabled {
|
|
|
+ mq.BroadcastDelExtClient(ingressHost, &ingressNode, []models.ExtClient{currentClient})
|
|
|
+ }
|
|
|
+ if replaceOldClient || changedEnabled {
|
|
|
+ // broadcast update
|
|
|
+ mq.BroadcastExtClient(ingressHost, &ingressNode)
|
|
|
+ }
|
|
|
}
|
|
|
}
|
|
|
- }
|
|
|
- w.WriteHeader(http.StatusOK)
|
|
|
- json.NewEncoder(w).Encode(newclient)
|
|
|
- if changedID {
|
|
|
- go func() {
|
|
|
+ if changedID {
|
|
|
if err := mq.PublishExtClientDNSUpdate(currentClient, *newclient, networkName); err != nil {
|
|
|
logger.Log(1, "error pubishing dns update for extcient update", err.Error())
|
|
|
}
|
|
|
- }()
|
|
|
- }
|
|
|
+ }
|
|
|
+ }()
|
|
|
+
|
|
|
}
|
|
|
|
|
|
// swagger:route DELETE /api/extclients/{network}/{clientid} ext_client deleteExtClient
|
|
@@ -574,9 +579,11 @@ func deleteExtClient(w http.ResponseWriter, r *http.Request) {
|
|
|
}
|
|
|
|
|
|
go func() {
|
|
|
- if err := mq.PublishDeletedClientPeerUpdate(&extclient); err != nil {
|
|
|
- logger.Log(1, "error setting ext peers on "+ingressnode.ID.String()+": "+err.Error())
|
|
|
+ ingressHost, err := logic.GetHost(ingressnode.HostID.String())
|
|
|
+ if err == nil {
|
|
|
+ go mq.BroadcastDelExtClient(ingressHost, &ingressnode, []models.ExtClient{extclient})
|
|
|
}
|
|
|
+
|
|
|
if err = mq.PublishDeleteExtClientDNS(&extclient); err != nil {
|
|
|
logger.Log(1, "error publishing dns update for extclient deletion", err.Error())
|
|
|
}
|