12345678910111213141516171819202122232425262728293031323334353637383940414243 |
- package functions
- import (
- "github.com/gravitl/netmaker/logger"
- "github.com/gravitl/netmaker/netclient/config"
- "github.com/gravitl/netmaker/netclient/functions/upgrades"
- "github.com/gravitl/netmaker/netclient/ncutils"
- )
- // UpdateClientConfig - function is called on daemon start to update clientConfig if required
- // Usage : set update required to true and and update logic to function
- func UpdateClientConfig() {
- defer upgrades.ReleaseUpgrades()
- networks, _ := ncutils.GetSystemNetworks()
- if len(networks) == 0 {
- return
- }
- logger.Log(0, "updating netclient...")
- for _, network := range networks {
- cfg := config.ClientConfig{}
- cfg.Network = network
- cfg.ReadConfig()
- //update any new fields
- configChanged := false
- for _, u := range upgrades.Upgrades {
- if ncutils.StringSliceContains(u.RequiredVersions, cfg.Node.Version) {
- logger.Log(0, "upgrading node", cfg.Node.Name, "on network", cfg.Node.Network, "from", cfg.Node.Version, "to", u.NewVersion)
- upgrades.UpgradeFunction(u.OP)(&cfg)
- cfg.Node.Version = u.NewVersion
- configChanged = true
- }
- }
- //insert update logic here
- if configChanged {
- logger.Log(0, "updating clientConfig for network", cfg.Network)
- if err := config.Write(&cfg, cfg.Network); err != nil {
- logger.Log(0, "failed to update clientConfig for ", cfg.Network, err.Error())
- }
- }
- }
- logger.Log(0, "finished updates")
- }
|