mirror of
https://github.com/gravitl/netmaker.git
synced 2024-09-21 07:46:04 +08:00
Merge pull request #1947 from gravitl/GRA-985/host_delete_logic
Gra 985/host delete logic
This commit is contained in:
commit
394f386f32
|
@ -154,7 +154,12 @@ func deleteHost(w http.ResponseWriter, r *http.Request) {
|
||||||
logic.ReturnErrorResponse(w, r, logic.FormatError(err, "internal"))
|
logic.ReturnErrorResponse(w, r, logic.FormatError(err, "internal"))
|
||||||
return
|
return
|
||||||
}
|
}
|
||||||
// TODO: publish host update with delete action using MQ
|
if err = mq.HostUpdate(&models.HostUpdate{
|
||||||
|
Action: models.DeleteHost,
|
||||||
|
Host: *currHost,
|
||||||
|
}); err != nil {
|
||||||
|
logger.Log(0, r.Header.Get("user"), "failed to send delete host update: ", currHost.ID.String(), err.Error())
|
||||||
|
}
|
||||||
|
|
||||||
if err = mq.DeleteMqClient(currHost.ID.String()); err != nil {
|
if err = mq.DeleteMqClient(currHost.ID.String()); err != nil {
|
||||||
logger.Log(0, "error removing DynSec credentials for host:", currHost.Name, err.Error())
|
logger.Log(0, "error removing DynSec credentials for host:", currHost.Name, err.Error())
|
||||||
|
|
|
@ -151,6 +151,11 @@ func RemoveHost(h *models.Host) error {
|
||||||
return database.DeleteRecord(database.HOSTS_TABLE_NAME, h.ID.String())
|
return database.DeleteRecord(database.HOSTS_TABLE_NAME, h.ID.String())
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// RemoveHostByID - removes a given host by id from server
|
||||||
|
func RemoveHostByID(hostID string) error {
|
||||||
|
return database.DeleteRecord(database.HOSTS_TABLE_NAME, hostID)
|
||||||
|
}
|
||||||
|
|
||||||
// UpdateHostNetworks - updates a given host's networks
|
// UpdateHostNetworks - updates a given host's networks
|
||||||
func UpdateHostNetworks(h *models.Host, server string, nets []string) error {
|
func UpdateHostNetworks(h *models.Host, server string, nets []string) error {
|
||||||
if len(h.Nodes) > 0 {
|
if len(h.Nodes) > 0 {
|
||||||
|
@ -241,6 +246,28 @@ func DissasociateNodeFromHost(n *models.Node, h *models.Host) error {
|
||||||
return UpsertHost(h)
|
return UpsertHost(h)
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// DisassociateAllNodesFromHost - deletes all nodes of the host
|
||||||
|
func DisassociateAllNodesFromHost(hostID string) error {
|
||||||
|
host, err := GetHost(hostID)
|
||||||
|
if err != nil {
|
||||||
|
return err
|
||||||
|
}
|
||||||
|
for _, nodeID := range host.Nodes {
|
||||||
|
node, err := GetNodeByID(nodeID)
|
||||||
|
if err != nil {
|
||||||
|
logger.Log(0, "failed to get host node", err.Error())
|
||||||
|
continue
|
||||||
|
}
|
||||||
|
if err := DeleteNode(&node, true); err != nil {
|
||||||
|
logger.Log(0, "failed to delete node", node.ID.String(), err.Error())
|
||||||
|
continue
|
||||||
|
}
|
||||||
|
logger.Log(3, "deleted node", node.ID.String(), "of host", host.ID.String())
|
||||||
|
}
|
||||||
|
host.Nodes = []string{}
|
||||||
|
return UpsertHost(host)
|
||||||
|
}
|
||||||
|
|
||||||
// GetDefaultHosts - retrieve all hosts marked as default from DB
|
// GetDefaultHosts - retrieve all hosts marked as default from DB
|
||||||
func GetDefaultHosts() []models.Host {
|
func GetDefaultHosts() []models.Host {
|
||||||
defaultHostList := []models.Host{}
|
defaultHostList := []models.Host{}
|
||||||
|
|
|
@ -152,8 +152,15 @@ func UpdateHost(client mqtt.Client, msg mqtt.Message) {
|
||||||
return
|
return
|
||||||
}
|
}
|
||||||
case models.DeleteHost:
|
case models.DeleteHost:
|
||||||
// TODO: logic to delete host on the server
|
if err := logic.DisassociateAllNodesFromHost(currentHost.ID.String()); err != nil {
|
||||||
|
logger.Log(0, "failed to delete all nodes of host: ", currentHost.ID.String(), err.Error())
|
||||||
|
return
|
||||||
|
}
|
||||||
|
if err := logic.RemoveHostByID(currentHost.ID.String()); err != nil {
|
||||||
|
logger.Log(0, "failed to delete host: ", currentHost.ID.String(), err.Error())
|
||||||
|
return
|
||||||
|
}
|
||||||
|
sendPeerUpdate = true
|
||||||
}
|
}
|
||||||
if sendPeerUpdate {
|
if sendPeerUpdate {
|
||||||
err := PublishPeerUpdate()
|
err := PublishPeerUpdate()
|
||||||
|
|
Loading…
Reference in a new issue