legacy.go 1.2 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546
  1. package logic
  2. import (
  3. "encoding/json"
  4. "github.com/gravitl/netmaker/database"
  5. "github.com/gravitl/netmaker/logger"
  6. "github.com/gravitl/netmaker/models"
  7. )
  8. // IsLegacyNode - checks if a node is legacy or not
  9. func IsLegacyNode(nodeID string) bool {
  10. record, err := database.FetchRecord(database.NODES_TABLE_NAME, nodeID)
  11. if err != nil {
  12. return false
  13. }
  14. var currentNode models.Node
  15. var legacyNode models.LegacyNode
  16. currentNodeErr := json.Unmarshal([]byte(record), &currentNode)
  17. legacyNodeErr := json.Unmarshal([]byte(record), &legacyNode)
  18. return currentNodeErr != nil && legacyNodeErr == nil
  19. }
  20. // CheckAndRemoveLegacyNode - checks for legacy node and removes
  21. func CheckAndRemoveLegacyNode(nodeID string) bool {
  22. if IsLegacyNode(nodeID) {
  23. if err := database.DeleteRecord(database.NODES_TABLE_NAME, nodeID); err == nil {
  24. return true
  25. }
  26. }
  27. return false
  28. }
  29. // RemoveAllLegacyNodes - fetches all legacy nodes from DB and removes
  30. func RemoveAllLegacyNodes() error {
  31. records, err := database.FetchRecords(database.NODES_TABLE_NAME)
  32. if err != nil {
  33. return err
  34. }
  35. for k := range records {
  36. if CheckAndRemoveLegacyNode(k) {
  37. logger.Log(0, "removed legacy node", k)
  38. }
  39. }
  40. return nil
  41. }