func Firmware()

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
}