2
0

legacy.go 1.3 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950
  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. // invalidate cache
  24. CacheNodesMutex.Lock()
  25. CacheNodes = nil
  26. CacheNodesMutex.Unlock()
  27. if err := database.DeleteRecord(database.NODES_TABLE_NAME, nodeID); err == nil {
  28. return true
  29. }
  30. }
  31. return false
  32. }
  33. // RemoveAllLegacyNodes - fetches all legacy nodes from DB and removes
  34. func RemoveAllLegacyNodes() error {
  35. records, err := database.FetchRecords(database.NODES_TABLE_NAME)
  36. if err != nil {
  37. return err
  38. }
  39. for k := range records {
  40. if CheckAndRemoveLegacyNode(k) {
  41. logger.Log(0, "removed legacy node", k)
  42. }
  43. }
  44. return nil
  45. }