mirror of
https://github.com/1Password/onepassword-operator.git
synced 2025-10-22 07:28:06 +00:00
46 lines
1.1 KiB
Go
46 lines
1.1 KiB
Go
package utils
|
|
|
|
import (
|
|
"fmt"
|
|
"io/ioutil"
|
|
"os"
|
|
"strings"
|
|
)
|
|
|
|
var ForceRunModeEnv = "OSDK_FORCE_RUN_MODE"
|
|
|
|
type RunModeType string
|
|
|
|
const (
|
|
LocalRunMode RunModeType = "local"
|
|
ClusterRunMode RunModeType = "cluster"
|
|
)
|
|
|
|
// ErrNoNamespace indicates that a namespace could not be found for the current
|
|
// environment
|
|
var ErrNoNamespace = fmt.Errorf("namespace not found for current environment")
|
|
|
|
// ErrRunLocal indicates that the operator is set to run in local mode (this error
|
|
// is returned by functions that only work on operators running in cluster mode)
|
|
var ErrRunLocal = fmt.Errorf("operator run mode forced to local")
|
|
|
|
// GetOperatorNamespace returns the namespace the operator should be running in.
|
|
func GetOperatorNamespace() (string, error) {
|
|
if isRunModeLocal() {
|
|
return "", ErrRunLocal
|
|
}
|
|
nsBytes, err := ioutil.ReadFile("/var/run/secrets/kubernetes.io/serviceaccount/namespace")
|
|
if err != nil {
|
|
if os.IsNotExist(err) {
|
|
return "", ErrNoNamespace
|
|
}
|
|
return "", err
|
|
}
|
|
ns := strings.TrimSpace(string(nsBytes))
|
|
return ns, nil
|
|
}
|
|
|
|
func isRunModeLocal() bool {
|
|
return os.Getenv(ForceRunModeEnv) == string(LocalRunMode)
|
|
}
|