Add log level support for orchestrator 57/111857/3
authorRajamohan Raj <rajamohan.raj@intel.com>
Sat, 29 Aug 2020 02:47:00 +0000 (02:47 +0000)
committerRajamohan Raj <rajamohan.raj@intel.com>
Wed, 9 Sep 2020 21:25:53 +0000 (21:25 +0000)
In this patch, a new config item for log-level
is added, default log-level is set as "warn",
for detailed logs, set log-level as "info"

Issue-ID: MULTICLOUD-1200
Signed-off-by: Rajamohan Raj <rajamohan.raj@intel.com>
Change-Id: I3205ce110a492ecc6a7c680e3d35e173a5624bb0

README.md
src/orchestrator/config.json [new file with mode: 0644]
src/orchestrator/pkg/infra/config/config.go
src/orchestrator/pkg/infra/logutils/logger.go
src/orchestrator/utils/helm/helm.go
src/orchestrator/utils/utils.go

index 4e380ef..8aeed38 100644 (file)
--- a/README.md
+++ b/README.md
@@ -35,3 +35,6 @@ Steps:
 * Run the plugin:
     * `cd k8s/deployments && ./start.sh`
 
+# Troubleshooting
+
+* Logs can be set as "warn" or "info" in the config.json file of the orchestrator directory. By default the log level is set as "warn".
diff --git a/src/orchestrator/config.json b/src/orchestrator/config.json
new file mode 100644 (file)
index 0000000..1acd835
--- /dev/null
@@ -0,0 +1,16 @@
+{
+    "ca-file": "ca.cert",
+    "server-cert": "server.cert",
+    "server-key": "server.key",
+    "password": "",
+    "database-ip": "172.31.0.2",
+    "database-type": "mongo",
+    "plugin-dir": "plugins",
+    "etcd-ip": "127.0.0.1",
+    "etcd-cert": "",
+    "etcd-key": "",
+    "etcd-ca-file": "",
+    "service-port": "9015",
+    "log-level": "warn"
+
+}
index fca8bfb..4319148 100644 (file)
@@ -44,6 +44,7 @@ type Configuration struct {
        GrpcServerNameOverride string `json:"grpc-server-name-override"`
        ServicePort            string `json:"service-port"`
        KubernetesLabelName    string `json:"kubernetes-label-name"`
+       LogLevel               string `json:"log-level"`
 }
 
 // Config is the structure that stores the configuration
@@ -98,6 +99,8 @@ func defaultConfiguration() *Configuration {
                GrpcServerNameOverride: "",
                ServicePort:            "9015",
                KubernetesLabelName:    "orchestrator.io/rb-instance-id",
+               LogLevel:               "warn",
+
        }
 }
 
index 2e8f996..209114a 100644 (file)
@@ -2,6 +2,9 @@ package logutils
 
 import (
        log "github.com/sirupsen/logrus"
+       "github.com/onap/multicloud-k8s/src/orchestrator/pkg/infra/config"
+       "strings"
+
 )
 
 //Fields is type that will be used by the calling function
@@ -10,6 +13,13 @@ type Fields map[string]interface{}
 func init() {
        // Log as JSON instead of the default ASCII formatter.
        log.SetFormatter(&log.JSONFormatter{})
+       if strings.EqualFold(config.GetConfiguration().LogLevel, "warn") {
+               log.SetLevel(log.WarnLevel)
+
+       }
+       if strings.EqualFold(config.GetConfiguration().LogLevel, "info") {
+               log.SetLevel(log.InfoLevel)
+       }
 }
 
 // Error uses the fields provided and logs
@@ -26,3 +36,4 @@ func Warn(msg string, fields Fields) {
 func Info(msg string, fields Fields) {
        log.WithFields(log.Fields(fields)).Info(msg)
 }
+
index 80cdfe5..3f8b6e9 100644 (file)
@@ -21,7 +21,7 @@ import (
        utils "github.com/onap/multicloud-k8s/src/orchestrator/utils"
 
        pkgerrors "github.com/pkg/errors"
-       "log"
+       
 
        "fmt"
        "io/ioutil"
@@ -43,6 +43,8 @@ import (
        "k8s.io/helm/pkg/renderutil"
        "k8s.io/helm/pkg/tiller"
        "k8s.io/helm/pkg/timeconv"
+       logger "github.com/onap/multicloud-k8s/src/orchestrator/pkg/infra/logutils"
+
 )
 
 //KubernetesResourceTemplate - Represents the template that is used to create a particular
@@ -174,7 +176,8 @@ func (h *TemplateClient) GenerateKubernetesArtifacts(inputPath string, valueFile
        if err != nil {
                return retData, pkgerrors.Wrap(err, "Got error creating temp dir")
        }
-       log.Printf("The o/p dir:: %s ", outputDir)
+       logger.Info(":: The o/p dir:: ", logger.Fields{"OutPutDirectory ":outputDir})
+       
 
        if namespace == "" {
                namespace = "default"
@@ -302,20 +305,20 @@ func (h *TemplateClient) Resolve(appContent []byte, appProfileContent []byte, ov
        if err != nil {
                return sortedTemplates, pkgerrors.Wrap(err, "Extracting appContent")
        }
-       log.Printf("The chartBasePath :: %s", chartBasePath)
+       logger.Info("The chartBasePath ::", logger.Fields{"chartBasePath":chartBasePath})
 
        //prPath is the tmp path where the appProfileContent is extracted.
        prPath, err := utils.ExtractTarBall(bytes.NewBuffer(appProfileContent))
        if err != nil {
                return sortedTemplates, pkgerrors.Wrap(err, "Extracting Profile Content")
        }
-       log.Printf("The profile path:: %s", prPath)
+       logger.Info("The profile path:: ", logger.Fields{"Profile Path":prPath})
 
        prYamlClient, err := ProcessProfileYaml(prPath, h.manifestName)
        if err != nil {
                return sortedTemplates, pkgerrors.Wrap(err, "Processing Profile Manifest")
        }
-       log.Println("Got the profileYamlClient..")
+       logger.Info("Got the profileYamlClient..", logger.Fields{})
 
        err = prYamlClient.CopyConfigurationOverrides(chartBasePath)
        if err != nil {
index 22ce903..b591ccb 100644 (file)
@@ -23,13 +23,14 @@ import (
 
        "io"
        "io/ioutil"
-       "log"
        "os"
        "path"
        "path/filepath"
 
        pkgerrors "github.com/pkg/errors"
        yaml "gopkg.in/yaml.v3"
+       log "github.com/onap/multicloud-k8s/src/orchestrator/pkg/infra/logutils"
+
 )
 
 // ListYamlStruct is applied when the kind is list
@@ -69,15 +70,15 @@ type YamlStruct struct {
 
 func (y YamlStruct) isValid() bool {
        if y.APIVersion == "" {
-               log.Printf("apiVersion is missing in manifest file")
+               log.Info("apiVersion is missing in manifest file", log.Fields{})
                return false
        }
        if y.Kind == "" {
-               log.Printf("kind is missing in manifest file")
+               log.Info("kind is missing in manifest file", log.Fields{})
                return false
        }
        if y.Metadata.Name == "" {
-               log.Printf("metadata.name is missing in manifest file")
+               log.Info("metadata.name is missing in manifest file", log.Fields{})
                return false
        }
        return true
@@ -107,13 +108,14 @@ func ExtractYamlParameters(f string) (YamlStruct, error) {
                li := strings.LastIndex(filename, "/")
                fn := string(filename[li+1:])
                yamlStruct.Metadata.Name = fn
-               log.Printf("Setting the metadata name as :: %s", fn)
+               log.Info("Setting the metadata", log.Fields{"MetaDataName":fn})
        }
        if yamlStruct.isValid() {
-               log.Printf("YAML parameters for file ::%s \n %v", f, yamlStruct)
+               log.Info(":: YAML parameters ::", log.Fields{"fileName": f, "yamlStruct":yamlStruct})
+
                return yamlStruct, nil
        }
-       log.Printf("YAML file ::%s has errors", f)
+       log.Info("YAML file has errors", log.Fields{"fileName": f})
        return YamlStruct{}, pkgerrors.Errorf("Cant extract parameters from yaml file :: %s", filename)
 
 }
@@ -204,13 +206,3 @@ func EnsureDirectory(f string) error {
        }
        return os.MkdirAll(base, 0755)
 }
-
-// func main() {
-//     filename := "./test.yaml"
-//     yamlStruct, err := ExtractYamlParameters(filename)
-//     if err!=nil {
-//             log.Print(err)
-//     }
-//     fmt.Printf("%s+%s", yamlStruct.Metadata.Name, yamlStruct.Kind)
-//     fmt.Printf("%v", yamlStruct)
-// }