mirror of
https://github.com/1Password/onepassword-operator.git
synced 2025-10-23 16:00:46 +00:00
Migrate main.go
This commit is contained in:
45
pkg/utils/k8sutil.go
Normal file
45
pkg/utils/k8sutil.go
Normal file
@@ -0,0 +1,45 @@
|
||||
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)
|
||||
}
|
Reference in New Issue
Block a user