summaryrefslogtreecommitdiffstats
path: root/src/k8splugin/internal/utils.go
diff options
context:
space:
mode:
authorVictor Morales <victor.morales@intel.com>2019-01-25 16:57:58 -0800
committerVictor Morales <victor.morales@intel.com>2019-01-25 16:59:59 -0800
commit468e208fbe3bcf2524d3aa8ceaabc4324f242b4b (patch)
tree2570d7f77a79aa71feacfedde5a2a858ee06b21f /src/k8splugin/internal/utils.go
parent083465d10c8fdeaffa89aa7daa93def3eca77df1 (diff)
Move api.go functions
CheckEnvVariables, CheckDatabaseConnection, LoadPlugins and CheckInitialSettings functions are utility functions which are not related with the API. These functions need to be moved to utils.go file. Change-Id: Ie6dfbafe8909962fba31534916a7e0f07ded116b Signed-off-by: Victor Morales <victor.morales@intel.com> Issue-ID: MULTICLOUD-301
Diffstat (limited to 'src/k8splugin/internal/utils.go')
-rw-r--r--src/k8splugin/internal/utils.go72
1 files changed, 72 insertions, 0 deletions
diff --git a/src/k8splugin/internal/utils.go b/src/k8splugin/internal/utils.go
index 5bac7a87..4b28b688 100644
--- a/src/k8splugin/internal/utils.go
+++ b/src/k8splugin/internal/utils.go
@@ -15,9 +15,12 @@ package utils
import (
"io/ioutil"
+ "k8splugin/internal/db"
"log"
"os"
+ "path/filepath"
"plugin"
+ "strings"
pkgerrors "github.com/pkg/errors"
"k8s.io/apimachinery/pkg/runtime"
@@ -61,3 +64,72 @@ var DecodeYAML = func(path string, into runtime.Object) (runtime.Object, error)
return obj, nil
}
+
+// CheckEnvVariables checks for required Environment variables
+func CheckEnvVariables() error {
+ envList := []string{"CSAR_DIR", "KUBE_CONFIG_DIR", "PLUGINS_DIR",
+ "DATABASE_TYPE", "DATABASE_IP", "OVN_CENTRAL_ADDRESS"}
+ for _, env := range envList {
+ if _, ok := os.LookupEnv(env); !ok {
+ return pkgerrors.New("environment variable " + env + " not set")
+ }
+ }
+
+ return nil
+}
+
+// CheckDatabaseConnection checks if the database is up and running and
+// plugin can talk to it
+func CheckDatabaseConnection() error {
+ err := db.CreateDBClient(os.Getenv("DATABASE_TYPE"))
+ if err != nil {
+ return pkgerrors.Cause(err)
+ }
+
+ err = db.DBconn.HealthCheck()
+ if err != nil {
+ return pkgerrors.Cause(err)
+ }
+ return nil
+}
+
+// LoadPlugins loads all the compiled .so plugins
+func LoadPlugins() error {
+ pluginsDir := os.Getenv("PLUGINS_DIR")
+ err := filepath.Walk(pluginsDir,
+ func(path string, info os.FileInfo, err error) error {
+ if strings.Contains(path, ".so") {
+ p, err := plugin.Open(path)
+ if err != nil {
+ return pkgerrors.Cause(err)
+ }
+ LoadedPlugins[info.Name()[:len(info.Name())-3]] = p
+ }
+ return err
+ })
+ if err != nil {
+ return err
+ }
+
+ return nil
+}
+
+// CheckInitialSettings is used to check initial settings required to start api
+func CheckInitialSettings() error {
+ err := CheckEnvVariables()
+ if err != nil {
+ return pkgerrors.Cause(err)
+ }
+
+ err = CheckDatabaseConnection()
+ if err != nil {
+ return pkgerrors.Cause(err)
+ }
+
+ err = LoadPlugins()
+ if err != nil {
+ return pkgerrors.Cause(err)
+ }
+
+ return nil
+}