func upgradeBinaryCheck(diffsBaseURL string) error { artifactNameMu.Lock() artifact := artifactName artifactNameMu.Unlock() cl, err := NewRestClient() if err != nil { return err } res, found, err := cl.CheckBinaryUpgrade(shared.BinaryUpgradeRequest{ Artifact: artifact, FromVersion: VERSION, }) if err != nil { return err } if !found { lg.Infoln("no update found") return nil } lg.Warningf("found update %+v", res) httpclient, err := service.NewTransportHTTPClient(2 * time.Hour) if err != nil { return err } opts, err := upgradebin.NewUpdaterOptions(res, shared.UpgradeVerificationPublicKey) if err != nil { return err } u, err := url.Parse(diffsBaseURL) if err != nil { lg.Errorln(err) return err } u.Path = path.Join(u.Path, artifact, VERSION, res.Version) URL := u.String() lg.Infoln("downloading", URL) resp, err := httpclient.Get(URL) if err != nil { lg.Errorln(err) return err } defer resp.Body.Close() err = upgradebin.Apply(resp.Body, opts) if err != nil { lg.Errorln(err) // will be retried the next time the client starts return nil } return nil }
func upgradeBinaryCheck() error { if !upgradeEnabled { lg.Infoln("binary upgrades are disabled using the command line flag") return nil } artifactNameMu.Lock() artifact := artifactName artifactNameMu.Unlock() cl, err := NewRestClient() if err != nil { return err } // TODO: check for current artifact + version (need to add artifact id to cmd's) res, found, err := cl.CheckBinaryUpgrade(shared.BinaryUpgradeRequest{ Artifact: artifact, FromVersion: VERSION, }) if err != nil { return err } if !found { lg.Infoln("no update found") return nil } lg.Warningf("found update %+v", res) httpclient, err := service.NewTransportHTTPClient() if err != nil { return err } opts, err := upgradebin.NewUpdaterOptions(res, shared.UpgradeVerificationPublicKey) if err != nil { return err } URL := fmt.Sprintf("https://central.server.domain/u/%s/%s/%s", artifact, VERSION, res.Version) lg.Infoln("downloading %s", URL) resp, err := httpclient.Get(URL) if err != nil { lg.Errorln(err) return err } defer resp.Body.Close() err = upgradebin.Apply(resp.Body, opts) if err != nil { lg.Errorln(err) // will be retried the next time the client starts return nil } return nil }