|
@@ -0,0 +1,46 @@
|
|
|
|
+package logic
|
|
|
|
+
|
|
|
|
+import (
|
|
|
|
+ "encoding/json"
|
|
|
|
+
|
|
|
|
+ "github.com/gravitl/netmaker/database"
|
|
|
|
+ "github.com/gravitl/netmaker/logger"
|
|
|
|
+ "github.com/gravitl/netmaker/models"
|
|
|
|
+)
|
|
|
|
+
|
|
|
|
+// IsLegacyNode - checks if a node is legacy or not
|
|
|
|
+func IsLegacyNode(nodeID string) bool {
|
|
|
|
+ record, err := database.FetchRecord(database.NODES_TABLE_NAME, nodeID)
|
|
|
|
+ if err != nil {
|
|
|
|
+ return false
|
|
|
|
+ }
|
|
|
|
+ var currentNode models.Node
|
|
|
|
+ var legacyNode models.LegacyNode
|
|
|
|
+ currentNodeErr := json.Unmarshal([]byte(record), ¤tNode)
|
|
|
|
+ legacyNodeErr := json.Unmarshal([]byte(record), &legacyNode)
|
|
|
|
+ return currentNodeErr != nil && legacyNodeErr == nil
|
|
|
|
+}
|
|
|
|
+
|
|
|
|
+// CheckAndRemoveLegacyNode - checks for legacy node and removes
|
|
|
|
+func CheckAndRemoveLegacyNode(nodeID string) bool {
|
|
|
|
+ if IsLegacyNode(nodeID) {
|
|
|
|
+ if err := database.DeleteRecord(database.NODES_TABLE_NAME, nodeID); err == nil {
|
|
|
|
+ return true
|
|
|
|
+ }
|
|
|
|
+ }
|
|
|
|
+ return false
|
|
|
|
+}
|
|
|
|
+
|
|
|
|
+// RemoveAllLegacyNodes - fetches all legacy nodes from DB and removes
|
|
|
|
+func RemoveAllLegacyNodes() error {
|
|
|
|
+ records, err := database.FetchRecords(database.NODES_TABLE_NAME)
|
|
|
|
+ if err != nil {
|
|
|
|
+ return err
|
|
|
|
+ }
|
|
|
|
+ for k := range records {
|
|
|
|
+ if CheckAndRemoveLegacyNode(k) {
|
|
|
|
+ logger.Log(0, "removed legacy node", k)
|
|
|
|
+ }
|
|
|
|
+ }
|
|
|
|
+ return nil
|
|
|
|
+}
|