From 4207f3d6d10a586278f7d37f3b6445bf9290e35c Mon Sep 17 00:00:00 2001 From: dwertent Date: Thu, 3 Feb 2022 18:12:35 +0200 Subject: [PATCH] using logger --- cautils/display.go | 38 ++----------------------- cautils/getter/armoapi.go | 4 +-- cautils/logger/prettylogger/level.go | 2 +- cautils/logger/prettylogger/logger.go | 14 +++++++-- cautils/versioncheck.go | 14 +++++---- clihandler/cmd/root.go | 12 +++----- clihandler/initcli.go | 2 +- clihandler/initcliutils.go | 5 ++-- go.mod | 2 +- hostsensorutils/hostsensordeploy.go | 8 ++++-- hostsensorutils/hostsensorgetfrompod.go | 7 +++-- opaprocessor/processorhandler.go | 33 +++++++-------------- opaprocessor/processorhandlerutils.go | 10 +++---- policyhandler/handlepullpolicies.go | 6 ++-- resourcehandler/filesloader.go | 5 ++-- resourcehandler/k8sresources.go | 8 ++++-- resourcehandler/urlloader.go | 4 +-- 17 files changed, 73 insertions(+), 101 deletions(-) diff --git a/cautils/display.go b/cautils/display.go index 3e37a42b..92da3fb8 100644 --- a/cautils/display.go +++ b/cautils/display.go @@ -1,7 +1,6 @@ package cautils import ( - "fmt" "os" "time" @@ -21,9 +20,9 @@ func IsSilent() bool { } var FailureDisplay = color.New(color.Bold, color.FgHiRed).FprintfFunc() -var WarningDisplay = color.New(color.Bold, color.FgCyan).FprintfFunc() +var WarningDisplay = color.New(color.Bold, color.FgHiYellow).FprintfFunc() var FailureTextDisplay = color.New(color.Faint, color.FgHiRed).FprintfFunc() -var InfoDisplay = color.New(color.Bold, color.FgHiYellow).FprintfFunc() +var InfoDisplay = color.New(color.Bold, color.FgCyan).FprintfFunc() var InfoTextDisplay = color.New(color.Bold, color.FgHiYellow).FprintfFunc() var SimpleDisplay = color.New().FprintfFunc() var SuccessDisplay = color.New(color.Bold, color.FgHiGreen).FprintfFunc() @@ -31,39 +30,6 @@ var DescriptionDisplay = color.New(color.Faint, color.FgWhite).FprintfFunc() var Spinner *spinner.Spinner -func ScanStartDisplay() { - if IsSilent() { - return - } - InfoDisplay(os.Stderr, "ARMO security scanner starting\n") -} - -func SuccessTextDisplay(str string) { - if IsSilent() { - return - } - SuccessDisplay(os.Stderr, "[success] ") - SimpleDisplay(os.Stderr, fmt.Sprintf("%s\n", str)) - -} - -func ErrorDisplay(str string) { - if IsSilent() { - return - } - FailureDisplay(os.Stderr, "[Error] ") - SimpleDisplay(os.Stderr, fmt.Sprintf("%s\n", str)) - -} - -func ProgressTextDisplay(str string) { - if IsSilent() { - return - } - InfoDisplay(os.Stderr, "[progress] ") - SimpleDisplay(os.Stderr, fmt.Sprintf("%s\n", str)) - -} func StartSpinner() { if !IsSilent() && isatty.IsTerminal(os.Stdout.Fd()) { Spinner = spinner.New(spinner.CharSets[7], 100*time.Millisecond) // Build our new spinner diff --git a/cautils/getter/armoapi.go b/cautils/getter/armoapi.go index 32225519..d5de5ff9 100644 --- a/cautils/getter/armoapi.go +++ b/cautils/getter/armoapi.go @@ -8,8 +8,8 @@ import ( "time" "github.com/armosec/armoapi-go/armotypes" + "github.com/armosec/kubescape/cautils/logger" "github.com/armosec/opa-utils/reporthandling" - "github.com/golang/glog" ) // ======================================================================================================================= @@ -47,7 +47,7 @@ func SetARMOAPIConnector(armoAPI *ArmoAPI) { func GetArmoAPIConnector() *ArmoAPI { if globalArmoAPIConnector == nil { - glog.Error("returning nil API connector") + logger.L().Error("returning nil API connector") } return globalArmoAPIConnector } diff --git a/cautils/logger/prettylogger/level.go b/cautils/logger/prettylogger/level.go index 326582a6..967dccbf 100644 --- a/cautils/logger/prettylogger/level.go +++ b/cautils/logger/prettylogger/level.go @@ -71,5 +71,5 @@ func (l Level) prefix() func(w io.Writer, format string, a ...interface{}) { } func (l Level) skip(l2 Level) bool { - return l > l2 + return l < l2 } diff --git a/cautils/logger/prettylogger/logger.go b/cautils/logger/prettylogger/logger.go index 844c2fc0..6ec4ebf1 100644 --- a/cautils/logger/prettylogger/logger.go +++ b/cautils/logger/prettylogger/logger.go @@ -47,8 +47,18 @@ func (pl *PrettyLogger) Success(msg string, details ...helpers.IDetails) { func (pl *PrettyLogger) print(level Level, msg string, details ...helpers.IDetails) { if !level.skip(pl.level) { level.prefix()(pl.writer, "[%s] ", level.string()) - message(pl.writer, fmt.Sprintf("%s %+v", msg, details)) - os.Exit(1) + message(pl.writer, fmt.Sprintf("%s %s\n", msg, detailsToString(details))) } } + +func detailsToString(details []helpers.IDetails) string { + s := "" + for i := range details { + s += fmt.Sprintf("%s: %s", details[i].Key(), details[i].Value()) + if i < len(details)-1 { + s += ";" + } + } + return s +} diff --git a/cautils/versioncheck.go b/cautils/versioncheck.go index 55f6417e..b53bced7 100644 --- a/cautils/versioncheck.go +++ b/cautils/versioncheck.go @@ -7,6 +7,8 @@ import ( "os" "github.com/armosec/kubescape/cautils/getter" + "github.com/armosec/kubescape/cautils/logger" + "github.com/armosec/kubescape/cautils/logger/helpers" pkgutils "github.com/armosec/utils-go/utils" ) @@ -22,7 +24,7 @@ type IVersionCheckHandler interface { func NewIVersionCheckHandler() IVersionCheckHandler { if BuildNumber == "" { - WarningDisplay(os.Stderr, "Warning: unknown build number, this might affect your scan results. Please make sure you are updated to latest version.\n") + logger.L().Warning("unknown build number, this might affect your scan results. Please make sure you are updated to latest version") } if v, ok := os.LookupEnv(SKIP_VERSION_CHECK); ok && pkgutils.StringToBool(v) { return NewVersionCheckHandlerMock() @@ -78,14 +80,14 @@ func NewVersionCheckRequest(buildNumber, frameworkName, frameworkVersion, scanni } func (v *VersionCheckHandlerMock) CheckLatestVersion(versionData *VersionCheckRequest) error { - fmt.Println("Skipping version check") + logger.L().Info("Skipping version check") return nil } func (v *VersionCheckHandler) CheckLatestVersion(versionData *VersionCheckRequest) error { defer func() { if err := recover(); err != nil { - WarningDisplay(os.Stderr, "failed to get latest version\n") + logger.L().Warning("failed to get latest version", helpers.Interface("error", err)) } }() @@ -96,7 +98,7 @@ func (v *VersionCheckHandler) CheckLatestVersion(versionData *VersionCheckReques if latestVersion.ClientUpdate != "" { if BuildNumber != "" && BuildNumber < latestVersion.ClientUpdate { - WarningDisplay(os.Stderr, warningMessage(latestVersion.Client, latestVersion.ClientUpdate)+"\n") + logger.L().Warning(warningMessage(latestVersion.Client, latestVersion.ClientUpdate)) } } @@ -106,7 +108,7 @@ func (v *VersionCheckHandler) CheckLatestVersion(versionData *VersionCheckReques // } if latestVersion.Message != "" { - InfoDisplay(os.Stderr, latestVersion.Message+"\n") + logger.L().Info(latestVersion.Message) } return nil @@ -132,5 +134,5 @@ func (v *VersionCheckHandler) getLatestVersion(versionData *VersionCheckRequest) } func warningMessage(kind, release string) string { - return fmt.Sprintf("Warning: '%s' is not updated to the latest release: '%s'", kind, release) + return fmt.Sprintf("'%s' is not updated to the latest release: '%s'", kind, release) } diff --git a/clihandler/cmd/root.go b/clihandler/cmd/root.go index c035e216..6fc5d21d 100644 --- a/clihandler/cmd/root.go +++ b/clihandler/cmd/root.go @@ -2,11 +2,10 @@ package cmd import ( "flag" - "os" "strings" "github.com/armosec/kubescape/cautils/getter" - "github.com/golang/glog" + "github.com/armosec/kubescape/cautils/logger" "github.com/spf13/cobra" ) @@ -40,8 +39,7 @@ func init() { func InitArmoBEConnector() { urlSlices := strings.Split(armoBEURLs, ",") if len(urlSlices) > 3 { - glog.Errorf("Too many URLs") - os.Exit(1) + logger.L().Fatal("expected only 3 URLs") } switch len(urlSlices) { case 1: @@ -51,12 +49,10 @@ func InitArmoBEConnector() { case "": getter.SetARMOAPIConnector(getter.NewARMOAPIProd()) default: - glog.Errorf("--environment flag usage: %s", envFlagUsage) - os.Exit(1) + logger.L().Fatal("--environment flag usage: " + envFlagUsage) } case 2: - glog.Errorf("--environment flag usage: %s", envFlagUsage) - os.Exit(1) + logger.L().Fatal("--environment flag usage: " + envFlagUsage) case 3: getter.SetARMOAPIConnector(getter.NewARMOAPICustomized(urlSlices[0], urlSlices[1], urlSlices[2])) } diff --git a/clihandler/initcli.go b/clihandler/initcli.go index 085a4fa6..83251a9a 100644 --- a/clihandler/initcli.go +++ b/clihandler/initcli.go @@ -88,7 +88,7 @@ func getInterfaces(scanInfo *cautils.ScanInfo) componentInterfaces { } func ScanCliSetup(scanInfo *cautils.ScanInfo) error { - cautils.ScanStartDisplay() + logger.L().Info("ARMO security scanner starting") interfaces := getInterfaces(scanInfo) // setPolicyGetter(scanInfo, interfaces.clusterConfig.GetCustomerGUID()) diff --git a/clihandler/initcliutils.go b/clihandler/initcliutils.go index 56c122e5..150d11c9 100644 --- a/clihandler/initcliutils.go +++ b/clihandler/initcliutils.go @@ -7,6 +7,7 @@ import ( "github.com/armosec/k8s-interface/k8sinterface" "github.com/armosec/kubescape/cautils" "github.com/armosec/kubescape/cautils/getter" + "github.com/armosec/kubescape/cautils/logger" "github.com/armosec/kubescape/hostsensorutils" "github.com/armosec/kubescape/resourcehandler" "github.com/armosec/kubescape/resultshandling/reporter" @@ -73,12 +74,12 @@ func getHostSensorHandler(scanInfo *cautils.ScanInfo, k8s *k8sinterface.Kubernet // we need to determined which controls needs host sensor if scanInfo.HostSensor.Get() == nil && hasHostSensorControls { scanInfo.HostSensor.SetBool(askUserForHostSensor()) - cautils.WarningDisplay(os.Stderr, "Warning: Kubernetes cluster nodes scanning is disabled. This is required to collect valuable data for certain controls. You can enable it using the --enable-host-scan flag\n") + logger.L().Warning("Kubernetes cluster nodes scanning is disabled. This is required to collect valuable data for certain controls. You can enable it using the --enable-host-scan flag") } if hostSensorVal := scanInfo.HostSensor.Get(); hostSensorVal != nil && *hostSensorVal { hostSensorHandler, err := hostsensorutils.NewHostSensorHandler(k8s) if err != nil { - cautils.WarningDisplay(os.Stderr, fmt.Sprintf("Warning: failed to create host sensor: %v\n", err.Error())) + logger.L().Warning(fmt.Sprintf("failed to create host sensor: %s", err.Error())) return &hostsensorutils.HostSensorHandlerMock{} } return hostSensorHandler diff --git a/go.mod b/go.mod index b77741e1..f7fc551e 100644 --- a/go.mod +++ b/go.mod @@ -14,7 +14,6 @@ require ( github.com/fatih/color v1.13.0 github.com/francoispqt/gojay v1.2.13 github.com/gofrs/uuid v4.1.0+incompatible - github.com/golang/glog v1.0.0 github.com/mattn/go-isatty v0.0.14 github.com/olekukonko/tablewriter v0.0.5 github.com/open-policy-agent/opa v0.33.1 @@ -62,6 +61,7 @@ require ( github.com/go-logr/logr v0.4.0 // indirect github.com/gobwas/glob v0.2.3 // indirect github.com/gogo/protobuf v1.3.2 // indirect + github.com/golang/glog v1.0.0 // indirect github.com/golang/groupcache v0.0.0-20210331224755-41bb18bfe9da // indirect github.com/golang/protobuf v1.5.2 // indirect github.com/google/go-cmp v0.5.6 // indirect diff --git a/hostsensorutils/hostsensordeploy.go b/hostsensorutils/hostsensordeploy.go index 3d7042e8..380737b1 100644 --- a/hostsensorutils/hostsensordeploy.go +++ b/hostsensorutils/hostsensordeploy.go @@ -10,6 +10,8 @@ import ( "github.com/armosec/k8s-interface/k8sinterface" "github.com/armosec/kubescape/cautils" + "github.com/armosec/kubescape/cautils/logger" + "github.com/armosec/kubescape/cautils/logger/helpers" appsv1 "k8s.io/api/apps/v1" corev1 "k8s.io/api/core/v1" metav1 "k8s.io/apimachinery/pkg/apis/meta/v1" @@ -60,15 +62,17 @@ func (hsh *HostSensorHandler) Init() error { // store namespace + port // store pod names // make sure all pods are running, after X seconds treat has running anyway, and log an error on the pods not running yet - cautils.ProgressTextDisplay("Installing host sensor") + logger.L().Info("Installing host sensor") + cautils.StartSpinner() defer cautils.StopSpinner() + if err := hsh.applyYAML(); err != nil { return fmt.Errorf("in HostSensorHandler init failed to apply YAML: %v", err) } hsh.populatePodNamesToNodeNames() if err := hsh.checkPodForEachNode(); err != nil { - fmt.Printf("failed to validate host-sensor pods status: %v", err) + logger.L().Error("failed to validate host-sensor pods status", helpers.Error(err)) } return nil } diff --git a/hostsensorutils/hostsensorgetfrompod.go b/hostsensorutils/hostsensorgetfrompod.go index 906e7ca9..b68996fe 100644 --- a/hostsensorutils/hostsensorgetfrompod.go +++ b/hostsensorutils/hostsensorgetfrompod.go @@ -7,6 +7,7 @@ import ( "github.com/armosec/k8s-interface/k8sinterface" "github.com/armosec/kubescape/cautils" + "github.com/armosec/kubescape/cautils/logger" "github.com/armosec/opa-utils/objectsenvelopes/hostsensor" "sigs.k8s.io/yaml" ) @@ -154,7 +155,8 @@ func (hsh *HostSensorHandler) CollectResources() ([]hostsensor.HostSensorDataEnv if hsh.DaemonSet == nil { return res, nil } - cautils.ProgressTextDisplay("Accessing host sensor") + + logger.L().Info("Accessing host sensor") cautils.StartSpinner() defer cautils.StopSpinner() kcData, err := hsh.GetKubeletConfigurations() @@ -193,6 +195,7 @@ func (hsh *HostSensorHandler) CollectResources() ([]hostsensor.HostSensorDataEnv } res = append(res, kcData...) // finish - cautils.SuccessTextDisplay("Read host information from host sensor") + + logger.L().Success("Read host information from host sensor") return res, nil } diff --git a/opaprocessor/processorhandler.go b/opaprocessor/processorhandler.go index 599a4644..a85c1799 100644 --- a/opaprocessor/processorhandler.go +++ b/opaprocessor/processorhandler.go @@ -7,6 +7,7 @@ import ( "github.com/armosec/armoapi-go/armotypes" "github.com/armosec/kubescape/cautils" + "github.com/armosec/kubescape/cautils/logger" ksscore "github.com/armosec/kubescape/score" "github.com/armosec/opa-utils/objectsenvelopes" "github.com/armosec/opa-utils/reporthandling" @@ -14,8 +15,6 @@ import ( "github.com/armosec/opa-utils/reporthandling/results/v1/resourcesresults" "github.com/open-policy-agent/opa/storage" - "github.com/golang/glog" - "github.com/armosec/k8s-interface/k8sinterface" "github.com/armosec/k8s-interface/workloadinterface" @@ -67,7 +66,7 @@ func (opaHandler *OPAProcessorHandler) ProcessRulesListenner() { // process if err := opap.Process(policies); err != nil { - // fmt.Println(err) + logger.L().Error(err.Error()) } // edit results @@ -82,8 +81,8 @@ func (opaHandler *OPAProcessorHandler) ProcessRulesListenner() { } func (opap *OPAProcessor) Process(policies *cautils.Policies) error { - // glog.Infof(fmt.Sprintf("Starting 'Process'. reportID: %s", opap.PostureReport.ReportID)) - cautils.ProgressTextDisplay(fmt.Sprintf("Scanning cluster %s", cautils.ClusterName)) + logger.L().Info(fmt.Sprintf("Scanning cluster %s", cautils.ClusterName)) + cautils.StartSpinner() var errs error @@ -91,7 +90,7 @@ func (opap *OPAProcessor) Process(policies *cautils.Policies) error { resourcesAssociatedControl, err := opap.processControl(&control) if err != nil { - appendError(&errs, err) + logger.L().Error(err.Error()) } // update resources with latest results if len(resourcesAssociatedControl) != 0 { @@ -109,21 +108,10 @@ func (opap *OPAProcessor) Process(policies *cautils.Policies) error { opap.Report.ReportGenerationTime = time.Now().UTC() cautils.StopSpinner() - cautils.SuccessTextDisplay(fmt.Sprintf("Done scanning cluster %s", cautils.ClusterName)) + logger.L().Success(fmt.Sprintf("Done scanning cluster %s", cautils.ClusterName)) return errs } -func appendError(errs *error, err error) { - if err == nil { - return - } - if errs == nil { - errs = &err - } else { - *errs = fmt.Errorf("%v\n%s", *errs, err.Error()) - } -} - func (opap *OPAProcessor) processControl(control *reporthandling.Control) (map[string]resourcesresults.ResourceAssociatedControl, error) { var errs error @@ -133,7 +121,7 @@ func (opap *OPAProcessor) processControl(control *reporthandling.Control) (map[s for i := range control.Rules { resourceAssociatedRule, err := opap.processRule(&control.Rules[i]) if err != nil { - appendError(&errs, err) + logger.L().Error(err.Error()) continue } @@ -192,7 +180,7 @@ func (opap *OPAProcessor) processRule(rule *reporthandling.PolicyRule) (map[stri ruleResponses, err := opap.runOPAOnSingleRule(rule, inputRawResources, ruleData, postureControlInputs) if err != nil { // TODO - Handle error - glog.Error(err) + logger.L().Error(err.Error()) } else { // ruleResponse to ruleResult for i := range ruleResponses { @@ -228,7 +216,6 @@ func (opap *OPAProcessor) runOPAOnSingleRule(rule *reporthandling.PolicyRule, k8 } func (opap *OPAProcessor) runRegoOnK8s(rule *reporthandling.PolicyRule, k8sObjects []map[string]interface{}, getRuleData func(*reporthandling.PolicyRule) string, postureControlInputs map[string][]string) ([]reporthandling.RuleResponse, error) { - var errs error // compile modules modules, err := getRuleDependencies() @@ -249,10 +236,10 @@ func (opap *OPAProcessor) runRegoOnK8s(rule *reporthandling.PolicyRule, k8sObjec // Eval results, err := opap.regoEval(k8sObjects, compiled, &store) if err != nil { - errs = fmt.Errorf("rule: '%s', %s", rule.Name, err.Error()) + logger.L().Error(err.Error()) } - return results, errs + return results, nil } func (opap *OPAProcessor) regoEval(inputObj []map[string]interface{}, compiledRego *ast.Compiler, store *storage.Store) ([]reporthandling.RuleResponse, error) { diff --git a/opaprocessor/processorhandlerutils.go b/opaprocessor/processorhandlerutils.go index 392985be..5c89fad5 100644 --- a/opaprocessor/processorhandlerutils.go +++ b/opaprocessor/processorhandlerutils.go @@ -1,16 +1,17 @@ package opaprocessor import ( + "fmt" + pkgcautils "github.com/armosec/utils-go/utils" "github.com/armosec/kubescape/cautils" + "github.com/armosec/kubescape/cautils/logger" "github.com/armosec/k8s-interface/k8sinterface" "github.com/armosec/k8s-interface/workloadinterface" "github.com/armosec/opa-utils/reporthandling" resources "github.com/armosec/opa-utils/resources" - - "github.com/golang/glog" ) // updateResults update the results objects and report objects. This is a critical function - DO NOT CHANGE @@ -79,8 +80,7 @@ func getKubernetesObjects(k8sResources *cautils.K8SResources, allResources map[s for _, groupResource := range groupResources { if k8sObj, ok := (*k8sResources)[groupResource]; ok { if k8sObj == nil { - continue - // glog.Errorf("Resource '%s' is nil, probably failed to pull the resource", groupResource) + logger.L().Debug(fmt.Sprintf("resource '%s' is nil, probably failed to pull the resource", groupResource)) } for i := range k8sObj { k8sObjects = append(k8sObjects, allResources[k8sObj[i]]) @@ -122,7 +122,7 @@ func filterOutChildResources(objects []workloadinterface.IMetadata, match []repo func getRuleDependencies() (map[string]string, error) { modules := resources.LoadRegoModules() if len(modules) == 0 { - glog.Warningf("failed to load rule dependencies") + logger.L().Warning("failed to load rule dependencies") } return modules, nil } diff --git a/policyhandler/handlepullpolicies.go b/policyhandler/handlepullpolicies.go index 0d9b2725..4d8a69b9 100644 --- a/policyhandler/handlepullpolicies.go +++ b/policyhandler/handlepullpolicies.go @@ -5,11 +5,12 @@ import ( "strings" "github.com/armosec/kubescape/cautils" + "github.com/armosec/kubescape/cautils/logger" "github.com/armosec/opa-utils/reporthandling" ) func (policyHandler *PolicyHandler) getPolicies(notification *reporthandling.PolicyNotification, policiesAndResources *cautils.OPASessionObj) error { - cautils.ProgressTextDisplay("Downloading/Loading policy definitions") + logger.L().Info("Downloading/Loading policy definitions") frameworks, err := policyHandler.getScanPolicies(notification) if err != nil { @@ -32,8 +33,7 @@ func (policyHandler *PolicyHandler) getPolicies(notification *reporthandling.Pol if err == nil { policiesAndResources.RegoInputData.PostureControlInputs = controlsInputs } - - cautils.SuccessTextDisplay("Downloaded/Loaded policy") + logger.L().Success("Downloaded/Loaded policy") return nil } diff --git a/resourcehandler/filesloader.go b/resourcehandler/filesloader.go index 86fe4434..93510912 100644 --- a/resourcehandler/filesloader.go +++ b/resourcehandler/filesloader.go @@ -14,6 +14,7 @@ import ( "github.com/armosec/k8s-interface/k8sinterface" "github.com/armosec/kubescape/cautils" + "github.com/armosec/kubescape/cautils/logger" "github.com/armosec/opa-utils/objectsenvelopes" "github.com/armosec/opa-utils/reporthandling" @@ -107,7 +108,7 @@ func (fileHandler *FileResourceHandler) GetClusterAPIServerInfo() *version.Info func loadResourcesFromFiles(inputPatterns []string) ([]workloadinterface.IMetadata, error) { files, errs := listFiles(inputPatterns) if len(errs) > 0 { - cautils.ErrorDisplay(fmt.Sprintf("%v", errs)) // TODO - print error + logger.L().Error(fmt.Sprintf("%v", errs)) } if len(files) == 0 { return nil, nil @@ -115,7 +116,7 @@ func loadResourcesFromFiles(inputPatterns []string) ([]workloadinterface.IMetada workloads, errs := loadFiles(files) if len(errs) > 0 { - cautils.ErrorDisplay(fmt.Sprintf("%v", errs)) // TODO - print error + logger.L().Error(fmt.Sprintf("%v", errs)) } return workloads, nil } diff --git a/resourcehandler/k8sresources.go b/resourcehandler/k8sresources.go index 7198613c..e084f997 100644 --- a/resourcehandler/k8sresources.go +++ b/resourcehandler/k8sresources.go @@ -7,6 +7,8 @@ import ( "strings" "github.com/armosec/kubescape/cautils" + "github.com/armosec/kubescape/cautils/logger" + "github.com/armosec/kubescape/cautils/logger/helpers" "github.com/armosec/kubescape/hostsensorutils" "github.com/armosec/opa-utils/objectsenvelopes" "github.com/armosec/opa-utils/reporthandling" @@ -47,7 +49,7 @@ func (k8sHandler *K8sResourceHandler) GetResources(frameworks []reporthandling.F allResources := map[string]workloadinterface.IMetadata{} // get k8s resources - cautils.ProgressTextDisplay("Accessing Kubernetes objects") + logger.L().Info("Accessing Kubernetes objects") cautils.StartSpinner() @@ -79,15 +81,15 @@ func (k8sHandler *K8sResourceHandler) GetResources(frameworks []reporthandling.F } cautils.StopSpinner() + logger.L().Success("Accessed successfully to Kubernetes objects") - cautils.SuccessTextDisplay("Accessed successfully to Kubernetes objects") return k8sResourcesMap, allResources, nil } func (k8sHandler *K8sResourceHandler) GetClusterAPIServerInfo() *version.Info { clusterAPIServerInfo, err := k8sHandler.k8s.DiscoveryClient.ServerVersion() if err != nil { - cautils.ErrorDisplay(fmt.Sprintf("Failed to discover API server information: %v", err)) + logger.L().Error(fmt.Sprintf("Failed to discover API server information", helpers.Error(err))) return nil } return clusterAPIServerInfo diff --git a/resourcehandler/urlloader.go b/resourcehandler/urlloader.go index 5486bbc6..9c176114 100644 --- a/resourcehandler/urlloader.go +++ b/resourcehandler/urlloader.go @@ -8,7 +8,7 @@ import ( "strings" "github.com/armosec/k8s-interface/workloadinterface" - "github.com/armosec/kubescape/cautils" + "github.com/armosec/kubescape/cautils/logger" ) func loadResourcesFromUrl(inputPatterns []string) ([]workloadinterface.IMetadata, error) { @@ -19,7 +19,7 @@ func loadResourcesFromUrl(inputPatterns []string) ([]workloadinterface.IMetadata workloads, errs := downloadFiles(urls) if len(errs) > 0 { - cautils.ErrorDisplay(fmt.Sprintf("%v", errs)) // TODO - print error + logger.L().Error(fmt.Sprintf("%v", errs)) } return workloads, nil }