func disable()

in vmextension/enabledisable.go [130:166]


func disable(ext *VMExtension) (string, error) {
	disableCmd, exists := ext.exec.cmds["disable"]
	if !exists {
		msg := "disable command not found"
		ext.ExtensionLogger.Error(msg)
		return msg, fmt.Errorf(msg)
	}
	ext.ExtensionLogger.Info("disable called")

	if ext.exec.supportsDisable {
		ext.ExtensionLogger.Info("Disabling extension")
		if isDisabled(ext) {
			ext.ExtensionLogger.Info("Extension is already disabled")
		} else {
			err := setDisabled(ext, true)
			if err != nil {
				reportStatus(ext, status.StatusError, disableCmd, "disable failed "+err.Error())
				return "", err
			}
		}
	} else {
		ext.ExtensionLogger.Info("VMExtension supportsDisable is set to false. No action to be taken")
	}

	// Call the callback if we have one
	if ext.exec.disableCallback != nil {
		err := ext.exec.disableCallback(ext)
		if err != nil {
			ext.ExtensionLogger.Error("Disable failed: %v", err)
			reportStatus(ext, status.StatusError, disableCmd, "disable failed "+err.Error())
			return "", err
		}
	}

	reportStatus(ext, status.StatusSuccess, disableCmd, "")
	return "", nil
}