diff options
author | 2020-01-31 23:29:51 -0800 | |
---|---|---|
committer | 2020-02-14 03:54:11 -0800 | |
commit | a75d489bbf87712371d67dce0753577bdacce0c3 (patch) | |
tree | dee646769aa432c814abd86645af612e714640be /src/orchestrator/internal/config | |
parent | c06be6458e9985bd7ac0b25fab03d9c8605f6c4a (diff) |
Restructure code and create module library
Restructures and moves code to make it
aligned with the current design.
https://wiki.onap.org/display/DW/Multi+Cluster+Application+Scheduler
examples/example_module.go shows how to
import and use modules from this package.
Patch#2 Updated example
Issue-ID: MULTICLOUD-871
Signed-off-by: Ritu Sood <ritu.sood@intel.com>
Change-Id: Ia1e9802a946a07dcca8f79f0e2250933ab3efa66
Diffstat (limited to 'src/orchestrator/internal/config')
-rw-r--r-- | src/orchestrator/internal/config/config.go | 130 | ||||
-rw-r--r-- | src/orchestrator/internal/config/config_test.go | 40 |
2 files changed, 0 insertions, 170 deletions
diff --git a/src/orchestrator/internal/config/config.go b/src/orchestrator/internal/config/config.go deleted file mode 100644 index cb4656f0..00000000 --- a/src/orchestrator/internal/config/config.go +++ /dev/null @@ -1,130 +0,0 @@ -/* - * Copyright 2019 Intel Corporation, Inc - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -package config - -import ( - "encoding/json" - "log" - "os" - "reflect" -) - -// Configuration loads up all the values that are used to configure -// backend implementations -type Configuration struct { - CAFile string `json:"ca-file"` - ServerCert string `json:"server-cert"` - ServerKey string `json:"server-key"` - Password string `json:"password"` - DatabaseIP string `json:"database-ip"` - DatabaseType string `json:"database-type"` - PluginDir string `json:"plugin-dir"` - EtcdIP string `json:"etcd-ip"` - EtcdCert string `json:"etcd-cert"` - EtcdKey string `json:"etcd-key"` - EtcdCAFile string `json:"etcd-ca-file"` - ServicePort string `json:"service-port"` - KubernetesLabelName string `json:"kubernetes-label-name"` -} - -// Config is the structure that stores the configuration -var gConfig *Configuration - -// readConfigFile reads the specified smsConfig file to setup some env variables -func readConfigFile(file string) (*Configuration, error) { - f, err := os.Open(file) - if err != nil { - return defaultConfiguration(), err - } - defer f.Close() - - // Setup some defaults here - // If the json file has values in it, the defaults will be overwritten - conf := defaultConfiguration() - - // Read the configuration from json file - decoder := json.NewDecoder(f) - decoder.DisallowUnknownFields() - err = decoder.Decode(conf) - if err != nil { - return conf, err - } - - return conf, nil -} - -func defaultConfiguration() *Configuration { - cwd, err := os.Getwd() - if err != nil { - log.Println("Error getting cwd. Using .") - cwd = "." - } - - return &Configuration{ - CAFile: "ca.cert", - ServerCert: "server.cert", - ServerKey: "server.key", - Password: "", - DatabaseIP: "127.0.0.1", - DatabaseType: "mongo", - PluginDir: cwd, - EtcdIP: "127.0.0.1", - EtcdCert: "etcd.cert", - EtcdKey: "etcd.key", - EtcdCAFile: "etcd-ca.cert", - ServicePort: "9015", - KubernetesLabelName: "orchestrator.io/rb-instance-id", - } -} - -// GetConfiguration returns the configuration for the app. -// It will try to load it if it is not already loaded. -func GetConfiguration() *Configuration { - if gConfig == nil { - conf, err := readConfigFile("config.json") - if err != nil { - log.Println("Error loading config file: ", err) - log.Println("Using defaults...") - } - gConfig = conf - } - - return gConfig -} - -// SetConfigValue sets a value in the configuration -// This is mostly used to customize the application and -// should be used carefully. -func SetConfigValue(key string, value string) *Configuration { - c := GetConfiguration() - if value == "" || key == "" { - return c - } - - v := reflect.ValueOf(c).Elem() - if v.Kind() == reflect.Struct { - f := v.FieldByName(key) - if f.IsValid() { - if f.CanSet() { - if f.Kind() == reflect.String { - f.SetString(value) - } - } - } - } - return c -} diff --git a/src/orchestrator/internal/config/config_test.go b/src/orchestrator/internal/config/config_test.go deleted file mode 100644 index ce7641ae..00000000 --- a/src/orchestrator/internal/config/config_test.go +++ /dev/null @@ -1,40 +0,0 @@ -/* - * Copyright 2019 Intel Corporation, Inc - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -package config - -import ( - "testing" -) - -func TestReadConfigurationFile(t *testing.T) { - t.Run("Non Existent Configuration File", func(t *testing.T) { - _, err := readConfigFile("filedoesnotexist.json") - if err == nil { - t.Fatal("ReadConfiguationFile: Expected Error, got nil") - } - }) - - t.Run("Read Configuration File", func(t *testing.T) { - conf, err := readConfigFile("../../tests/configs/mock_config.json") - if err != nil { - t.Fatal("ReadConfigurationFile: Error reading file: ", err) - } - if conf.DatabaseType != "mock_db_test" { - t.Fatal("ReadConfigurationFile: Incorrect entry read from file") - } - }) -} |