migrate.go 1.2 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950
  1. package migrate
  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. // Run - runs all migrations
  9. func Run() {
  10. updateEnrollmentKeys()
  11. }
  12. func updateEnrollmentKeys() {
  13. rows, err := database.FetchRecords(database.ENROLLMENT_KEYS_TABLE_NAME)
  14. if err != nil {
  15. return
  16. }
  17. for _, row := range rows {
  18. var key models.EnrollmentKey
  19. if err = json.Unmarshal([]byte(row), &key); err != nil {
  20. continue
  21. }
  22. if key.Type != models.Undefined {
  23. logger.Log(2, "migration: enrollment key type already set")
  24. continue
  25. } else {
  26. logger.Log(2, "migration: updating enrollment key type")
  27. if key.Unlimited {
  28. key.Type = models.Unlimited
  29. } else if key.UsesRemaining > 0 {
  30. key.Type = models.Uses
  31. } else if !key.Expiration.IsZero() {
  32. key.Type = models.TimeExpiration
  33. }
  34. }
  35. data, err := json.Marshal(key)
  36. if err != nil {
  37. logger.Log(0, "migration: marshalling enrollment key: "+err.Error())
  38. continue
  39. }
  40. if err = database.Insert(key.Value, string(data), database.ENROLLMENT_KEYS_TABLE_NAME); err != nil {
  41. logger.Log(0, "migration: inserting enrollment key: "+err.Error())
  42. continue
  43. }
  44. }
  45. }