in calnex/firmware/firmware.go [36:81]
func Firmware(target string, insecureTLS bool, fw FW, apply bool) error {
api := api.NewAPI(target, insecureTLS)
cv, err := api.FetchVersion()
if err != nil {
return err
}
calnexVersion, err := version.NewVersion(strings.ToLower(cv.Firmware))
if err != nil {
return err
}
v, err := fw.Version()
if err != nil {
return err
}
if calnexVersion.GreaterThanOrEqual(v) {
log.Infof("no update is required")
return nil
}
log.Infof("%s is running %s, latest is %s. Needs an update", target, calnexVersion, v)
if !apply {
log.Infof("dry run. Exiting")
return nil
}
status, err := api.FetchStatus()
if err != nil {
return err
}
if status.MeasurementActive {
log.Infof("stopping measurement")
// stop measurement
if err = api.StopMeasure(); err != nil {
return err
}
}
log.Infof("updating firmware")
p, err := fw.Path()
if err != nil {
return err
}
_, err = api.PushVersion(p)
return err
}