func writeTransitioningStatus()

in extensionlauncher/extensionlauncher.go [57:82]


func writeTransitioningStatus(extensionName, extensionVersion, operation string, handlerEnv *handlerenv.HandlerEnvironment, el *logging.ExtensionLogger) {
	if operation == vmextension.EnableOperation.ToString() {
		// we write transitioning status only for Enable command
		currentSequenceNumber, err := seqno.FindSeqNum(el, handlerEnv.ConfigFolder)
		if err != nil {
			el.Error("could not retrieve the current sequence number %s", err.Error())
			eh.Exit(exithelper.EnvironmentError)
		}
		// if status file exists, no need to overwrite it
		statusFilePath := path.Join(handlerEnv.StatusFolder, fmt.Sprintf("%d.status", currentSequenceNumber))

		fileInfo, statErr := os.Stat(statusFilePath)
		if os.IsNotExist(statErr) {
			statusReport := status.New(status.StatusTransitioning, vmextension.EnableOperation.ToStatusName(), fmt.Sprintf("extension %s version %s started execution", extensionName, extensionVersion))
			err := statusReport.Save(handlerEnv.StatusFolder, currentSequenceNumber)
			if err != nil {
				// don't exit
				el.Warn("could not write transitioning status for extension %s version %s", extensionName, extensionVersion)
			}
		} else if fileInfo != nil {
			el.Info("%d.status file already exists, will not create new status file with transitioning status", currentSequenceNumber)
		} else if err != nil {
			el.Warn("could not determine the existence or absence of status file, will continue without writing placeholder status file")
		}
	}
}