in vmextension/enabledisable.go [182:224]
func setDisabled(ext *VMExtension, disabled bool) error {
disabledFile := path.Join(ext.HandlerEnv.ConfigFolder, disabledFileName)
exists, err := doesFileExistDisableDependency(disabledFile)
if err != nil {
ext.ExtensionLogger.Error("doesFileExit error detected: %v", err.Error())
}
if exists != disabled {
if disabled {
// Create the file
ext.ExtensionLogger.Info("Disabling extension")
b := []byte("1")
err := disableDependency.writeFile(disabledFile, b, 0644)
if err != nil {
ext.ExtensionLogger.Error("Could not disable the extension: %v", err)
return err
}
ext.ExtensionLogger.Info("Disabled extension")
} else {
// Remove the file
ext.ExtensionLogger.Info("Un-disabling extension")
err := disableDependency.remove(disabledFile)
if err == nil {
ext.ExtensionLogger.Info("Re-enabled extension")
return nil
}
// despite the check above, sometimes the disable file doesn't exist due to concurrent issue
// catch errors that may arise from trying to disable a non existent file
pathError, isPathError := err.(*os.PathError)
if isPathError {
if pathError.Err == syscall.ENOENT {
ext.ExtensionLogger.Warn("Disable file was not present ignoring error")
return nil
}
}
ext.ExtensionLogger.Error("Could not re-enable the extension: %v", err)
return err
}
}
return nil
}