clientconfig.go 1.4 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243
  1. package functions
  2. import (
  3. "github.com/gravitl/netmaker/logger"
  4. "github.com/gravitl/netmaker/netclient/config"
  5. "github.com/gravitl/netmaker/netclient/functions/upgrades"
  6. "github.com/gravitl/netmaker/netclient/ncutils"
  7. )
  8. // UpdateClientConfig - function is called on daemon start to update clientConfig if required
  9. // Usage : set update required to true and and update logic to function
  10. func UpdateClientConfig() {
  11. defer upgrades.ReleaseUpgrades()
  12. networks, _ := ncutils.GetSystemNetworks()
  13. if len(networks) == 0 {
  14. return
  15. }
  16. logger.Log(0, "updating netclient...")
  17. for _, network := range networks {
  18. cfg := config.ClientConfig{}
  19. cfg.Network = network
  20. cfg.ReadConfig()
  21. //update any new fields
  22. configChanged := false
  23. for _, u := range upgrades.Upgrades {
  24. if ncutils.StringSliceContains(u.RequiredVersions, cfg.Node.Version) {
  25. logger.Log(0, "upgrading node", cfg.Node.Name, "on network", cfg.Node.Network, "from", cfg.Node.Version, "to", u.NewVersion)
  26. upgrades.UpgradeFunction(u.OP)(&cfg)
  27. cfg.Node.Version = u.NewVersion
  28. configChanged = true
  29. }
  30. }
  31. //insert update logic here
  32. if configChanged {
  33. logger.Log(0, "updating clientConfig for network", cfg.Network)
  34. if err := config.Write(&cfg, cfg.Network); err != nil {
  35. logger.Log(0, "failed to update clientConfig for ", cfg.Network, err.Error())
  36. }
  37. }
  38. }
  39. logger.Log(0, "finished updates")
  40. }