From 8d67fc1122002a13a35b87cae69d176a0e559254 Mon Sep 17 00:00:00 2001 From: Markus Lehtonen Date: Wed, 10 Mar 2021 20:54:17 +0200 Subject: [PATCH] pkg/utils: add dump functions A simple functions for pretty-printing and logging json-marshallable objects. --- pkg/utils/dump.go | 46 ++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 46 insertions(+) create mode 100644 pkg/utils/dump.go diff --git a/pkg/utils/dump.go b/pkg/utils/dump.go new file mode 100644 index 000000000..56ab2328e --- /dev/null +++ b/pkg/utils/dump.go @@ -0,0 +1,46 @@ +/* +Copyright 2021 The Kubernetes Authors. + +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 utils + +import ( + "fmt" + "strings" + + "k8s.io/klog/v2" + "sigs.k8s.io/yaml" +) + +func KlogDump(v klog.Level, heading, prefix string, obj interface{}) { + if klog.V(v).Enabled() { + klog.InfoDepth(1, heading) + + d := strings.Split(Dump(obj), "\n") + // Print all but the last empty line + for i := 0; i < len(d)-1; i++ { + klog.InfoDepth(1, prefix+d[i]) + } + } +} + +// Dump dumps an object into YAML textual format +func Dump(obj interface{}) string { + out, err := yaml.Marshal(obj) + if err != nil { + return fmt.Sprintf("\n", obj, err) + } + return string(out) +}