diff --git a/build/k8s-dynamic-provisioner b/build/k8s-dynamic-provisioner deleted file mode 100755 index 86c5050..0000000 Binary files a/build/k8s-dynamic-provisioner and /dev/null differ diff --git a/cmd/dynamic-provisioner/provisioner.go b/cmd/dynamic-provisioner/provisioner.go index 2bd0091..a65d978 100644 --- a/cmd/dynamic-provisioner/provisioner.go +++ b/cmd/dynamic-provisioner/provisioner.go @@ -24,7 +24,7 @@ import ( "syscall" csi_spec "github.com/container-storage-interface/spec/lib/go/csi" - "github.com/hpe-storage/common-host-libs/util" + log "github.com/hpe-storage/common-host-libs/logger" crd_client "github.com/hpe-storage/k8s-custom-resources/pkg/client/clientset/versioned" "github.com/hpe-storage/k8s-dynamic-provisioner/pkg/provisioner" snap_client "github.com/kubernetes-csi/external-snapshotter/pkg/client/clientset/versioned" @@ -33,12 +33,14 @@ import ( "k8s.io/client-go/rest" "k8s.io/client-go/tools/clientcmd" csi_client "k8s.io/csi-api/pkg/client/clientset/versioned" + "k8s.io/klog" ) var ( // init to empty as we always want to get this from env variable csiEndpoint = flag.String("endpoint", "", "Address of the CSI driver socket.") + logFilePath = "/var/log/hpe-dynamic-provisioner.log" ) // nolint: gocyclo @@ -104,12 +106,12 @@ func main() { if provisioner.CsiEndpoint != "" { csiDriverClient, err = provisioner.GetCsiDriverClient() if err != nil { - util.LogError.Printf("Error getting csi driver client for %s - %s", provisioner.CsiProvisioner, err.Error()) + log.Errorf("Error getting csi driver client for %s - %s", provisioner.CsiProvisioner, err.Error()) os.Exit(1) } } - util.OpenLog(true) + log.InitLogging(logFilePath, &log.LogParams{Level: "debug"}, false) stop := make(chan struct{}) @@ -143,12 +145,12 @@ func main() { syscall.SIGSEGV) go func() { s := <-sigc - util.LogError.Fatalf("Exiting due to signal notification. Signal was %v.", s.String()) + log.Fatalf("Exiting due to signal notification. Signal was %v.", s.String()) return }() select { case msg := <-stop: - util.LogError.Printf("error in provisioner: %#v", msg) + log.Errorf("error in provisioner: %#v", msg) } <-stop } diff --git a/go.mod b/go.mod index 49f4a32..7b9f819 100644 --- a/go.mod +++ b/go.mod @@ -1,12 +1,12 @@ module github.com/hpe-storage/k8s-dynamic-provisioner require ( - cloud.google.com/go v0.43.0 // indirect + cloud.google.com/go v0.44.3 // indirect github.com/OpenPeeDeeP/depguard v1.0.0 // indirect github.com/StackExchange/wmi v0.0.0-20190523213315-cbe66965904d // indirect github.com/container-storage-interface/spec v1.1.0 github.com/coreos/bbolt v1.3.3 // indirect - github.com/coreos/etcd v3.3.13+incompatible // indirect + github.com/coreos/etcd v3.3.15+incompatible // indirect github.com/coreos/go-semver v0.3.0 // indirect github.com/coreos/go-systemd v0.0.0-20190719114852-fd7a80b32e1f // indirect github.com/fatih/color v1.7.0 // indirect @@ -22,32 +22,35 @@ require ( github.com/golangci/gosec v0.0.0-20180901114220-8afd9cbb6cfb // indirect github.com/golangci/lint-1 v0.0.0-20181222135242-d2cdd8c08219 // indirect github.com/golangci/revgrep v0.0.0-20180812185044-276a5c0a1039 // indirect + github.com/google/go-cmp v0.3.1 // indirect github.com/google/pprof v0.0.0-20190723021845-34ac40c74b70 // indirect github.com/gorilla/mux v1.7.2 // indirect - github.com/gostaticanalysis/analysisutil v0.0.2 // indirect - github.com/grpc-ecosystem/grpc-gateway v1.9.5 // indirect + github.com/gostaticanalysis/analysisutil v0.0.3 // indirect + github.com/grpc-ecosystem/grpc-gateway v1.9.6 // indirect github.com/hashicorp/golang-lru v0.5.3 // indirect - github.com/hpe-storage/common-host-libs v0.0.0-20190729230508-ed4df55bd64a + github.com/hpe-storage/common-host-libs v0.0.0-20190821160716-b46821a0b5d1 github.com/hpe-storage/k8s-custom-resources v0.0.0-20190725185337-965fa924678a github.com/imdario/mergo v0.3.7 // indirect - github.com/json-iterator/go v1.1.7 // indirect github.com/kisielk/errcheck v1.2.0 // indirect - github.com/klauspost/compress v1.7.4 // indirect + github.com/klauspost/compress v1.7.6 // indirect github.com/klauspost/cpuid v1.2.1 // indirect github.com/konsorten/go-windows-terminal-sequences v1.0.2 // indirect github.com/kr/pty v1.1.8 // indirect github.com/kubernetes-csi/csi-lib-utils v0.6.1 github.com/kubernetes-csi/external-snapshotter v1.1.0 - github.com/logrusorgru/aurora v0.0.0-20190428105938-cea283e61946 // indirect + github.com/logrusorgru/aurora v0.0.0-20190803045625-94edacc10f9b // indirect github.com/magiconair/properties v1.8.1 // indirect github.com/mattn/go-colorable v0.1.2 // indirect + github.com/mattn/go-isatty v0.0.9 // indirect github.com/mitchellh/go-ps v0.0.0-20190716172923-621e5597135b // indirect github.com/mwitkow/go-conntrack v0.0.0-20190716064945-2f068394615f // indirect github.com/nbutton23/zxcvbn-go v0.0.0-20180912185939-ae427f1e4c1d // indirect + github.com/onsi/ginkgo v1.9.0 // indirect + github.com/onsi/gomega v1.6.0 // indirect github.com/pelletier/go-toml v1.4.0 // indirect github.com/pkg/errors v0.8.1 // indirect - github.com/prometheus/common v0.6.0 // indirect - github.com/prometheus/procfs v0.0.3 // indirect + github.com/prometheus/client_golang v1.1.0 // indirect + github.com/prometheus/client_model v0.0.0-20190812154241-14fe0d1b01d4 // indirect github.com/rogpeppe/fastuuid v1.2.0 // indirect github.com/russross/blackfriday v2.0.0+incompatible // indirect github.com/satori/go.uuid v1.2.0 @@ -58,18 +61,18 @@ require ( github.com/spf13/jwalterweatherman v1.1.0 // indirect github.com/spf13/viper v1.4.0 // indirect github.com/stretchr/objx v0.2.0 // indirect + github.com/stretchr/testify v1.4.0 // indirect github.com/timakin/bodyclose v0.0.0-20190721030226-87058b9bfcec // indirect github.com/ugorji/go v1.1.7 // indirect github.com/valyala/fasthttp v1.4.0 // indirect go.etcd.io/bbolt v1.3.3 // indirect - golang.org/x/crypto v0.0.0-20190701094942-4def268fd1a4 // indirect - golang.org/x/exp v0.0.0-20190718202018-cfdd5522f6f6 // indirect - golang.org/x/image v0.0.0-20190729225735-1bd0cf576493 // indirect - golang.org/x/mobile v0.0.0-20190719004257-d2bd2a29d028 // indirect - golang.org/x/net v0.0.0-20190724013045-ca1201d0de80 // indirect - golang.org/x/sys v0.0.0-20190726091711-fc99dfbffb4e // indirect - golang.org/x/tools v0.0.0-20190729092621-ff9f1409240a // indirect - google.golang.org/grpc v1.22.1 // indirect + golang.org/x/crypto v0.0.0-20190820162420-60c769a6c586 // indirect + golang.org/x/mobile v0.0.0-20190814143026-e8b3e6111d02 // indirect + golang.org/x/net v0.0.0-20190813141303-74dc4d7220e7 // indirect + golang.org/x/tools v0.0.0-20190822000311-fc82fb2afd64 // indirect + google.golang.org/api v0.9.0 // indirect + google.golang.org/genproto v0.0.0-20190819201941-24fa4b261c55 // indirect + google.golang.org/grpc v1.23.0 // indirect gopkg.in/natefinch/lumberjack.v2 v2.0.0 // indirect honnef.co/go/tools v0.0.1-2019.2.2 // indirect k8s.io/api v0.0.0-20190627205229-acea843d18eb diff --git a/go.sum b/go.sum index 42c6c83..3bd104b 100644 --- a/go.sum +++ b/go.sum @@ -3,12 +3,17 @@ cloud.google.com/go v0.34.0/go.mod h1:aQUYkXzVsufM+DwF1aE+0xfcU+56JwCaLick0ClmMT cloud.google.com/go v0.38.0/go.mod h1:990N+gfupTy94rShfmMCWGDn0LpTmnzTp2qbd1dvSRU= cloud.google.com/go v0.41.0/go.mod h1:OauMR7DV8fzvZIl2qg6rkaIhD/vmgk4iwEw/h6ercmg= cloud.google.com/go v0.43.0/go.mod h1:BOSR3VbTLkk6FDC/TcffxP4NF/FFBGA5ku+jvKOP7pg= +cloud.google.com/go v0.44.1/go.mod h1:iSa0KzasP4Uvy3f1mN/7PiObzGgflwredwwASm/v6AU= +cloud.google.com/go v0.44.3/go.mod h1:60680Gw3Yr4ikxnPRS/oxxkBccT6SA1yMk63TGekxKY= +cloud.google.com/go/datastore v1.0.0/go.mod h1:LXYbyblFSglQ5pkeyhO+Qmw7ukd3C+pD7TKLgZqpHYE= github.com/Azure/go-autorest v11.1.2+incompatible/go.mod h1:r+4oMnoxhatjLLJ6zxSWATqVooLgysK6ZNox3g/xq24= +github.com/BurntSushi/toml v0.3.1 h1:WXkYYl6Yr3qBf1K79EBnL4mak0OimBfB0XUf9Vl28OQ= github.com/BurntSushi/toml v0.3.1/go.mod h1:xHWCNGjB5oqiDr8zfno3MHue2Ht5sIBksp03qcyfWMU= github.com/BurntSushi/xgb v0.0.0-20160522181843-27f122750802/go.mod h1:IVnqGOEym/WlBOVXweHU+Q+/VP0lqqI8lqeDx9IjBqo= github.com/OneOfOne/xxhash v1.2.2/go.mod h1:HSdplMjZKSmBqAxg5vPj2TmRDmfkzw+cTzAElWljhcU= github.com/OneOfOne/xxhash v1.2.5/go.mod h1:eZbhyaAYD41SGSSsnmcpxVoRiQ/MPUTjUdIIOT9Um7Q= github.com/OpenPeeDeeP/depguard v0.0.0-20180806142446-a69c782687b2/go.mod h1:7/4sitnI9YlQgTLLk734QlzXT8DuHVnAyztLplQjk+o= +github.com/OpenPeeDeeP/depguard v1.0.0 h1:k9QF73nrHT3nPLz3lu6G5s+3Hi8Je36ODr1F5gjAXXM= github.com/OpenPeeDeeP/depguard v1.0.0/go.mod h1:7/4sitnI9YlQgTLLk734QlzXT8DuHVnAyztLplQjk+o= github.com/StackExchange/wmi v0.0.0-20180116203802-5d049714c4a6/go.mod h1:3eOhrUMpNV+6aFIbp5/iudMxNCF27Vw2OZgy4xEx0Fg= github.com/StackExchange/wmi v0.0.0-20190523213315-cbe66965904d/go.mod h1:3eOhrUMpNV+6aFIbp5/iudMxNCF27Vw2OZgy4xEx0Fg= @@ -19,13 +24,16 @@ github.com/alecthomas/units v0.0.0-20190717042225-c3de453c63f4/go.mod h1:ybxpYRF github.com/armon/consul-api v0.0.0-20180202201655-eb2c6b5be1b6/go.mod h1:grANhF5doyWs3UAsr3K4I6qtAmlQcZDesFNEHPZAzj8= github.com/beorn7/perks v0.0.0-20180321164747-3a771d992973/go.mod h1:Dwedo/Wpr24TaqPxmxbtue+5NUziq4I4S80YR8gNf3Q= github.com/beorn7/perks v1.0.0/go.mod h1:KWe93zE9D1o94FZ5RNwFwVgaQK1VOXiVxmqh+CedLV8= +github.com/beorn7/perks v1.0.1/go.mod h1:G2ZrVWU2WbWT9wwq4/hrbKbnv/1ERSJQ0ibhJ6rlkpw= github.com/cespare/xxhash v1.1.0/go.mod h1:XrSqR1VqqWfGrhpAt58auRo0WTKS1nRRg3ghfAqPWnc= github.com/client9/misspell v0.3.4/go.mod h1:qj6jICC3Q7zFZvVWo7KLAzC3yx5G7kyvSDkc90ppPyw= +github.com/container-storage-interface/spec v1.1.0 h1:qPsTqtR1VUPvMPeK0UnCZMtXaKGyyLPG8gj/wG6VqMs= github.com/container-storage-interface/spec v1.1.0/go.mod h1:6URME8mwIBbpVyZV93Ce5St17xBiQJQY67NDsuohiy4= github.com/coreos/bbolt v1.3.2/go.mod h1:iRUV2dpdMOn7Bo10OQBFzIJO9kkE559Wcmn+qkEiiKk= github.com/coreos/bbolt v1.3.3/go.mod h1:iRUV2dpdMOn7Bo10OQBFzIJO9kkE559Wcmn+qkEiiKk= github.com/coreos/etcd v3.3.10+incompatible/go.mod h1:uF7uidLiAD3TWHmW31ZFd/JWoc32PjwdhPthX9715RE= github.com/coreos/etcd v3.3.13+incompatible/go.mod h1:uF7uidLiAD3TWHmW31ZFd/JWoc32PjwdhPthX9715RE= +github.com/coreos/etcd v3.3.15+incompatible/go.mod h1:uF7uidLiAD3TWHmW31ZFd/JWoc32PjwdhPthX9715RE= github.com/coreos/go-etcd v2.0.0+incompatible/go.mod h1:Jez6KQU2B/sWsbdaef3ED8NzMklzPG4d5KIOhIy30Tk= github.com/coreos/go-semver v0.2.0/go.mod h1:nnelYz7RCh+5ahJtPPxZlU+153eP4D4r3EedlOD2RNk= github.com/coreos/go-semver v0.3.0/go.mod h1:nnelYz7RCh+5ahJtPPxZlU+153eP4D4r3EedlOD2RNk= @@ -36,6 +44,7 @@ github.com/coreos/pkg v0.0.0-20180928190104-399ea9e2e55f/go.mod h1:E3G3o1h8I7cfc github.com/cpuguy83/go-md2man v1.0.10/go.mod h1:SmD6nW6nTyfqj6ABTjUi3V3JVMnlJmwcJI5acqYI6dE= github.com/creack/pty v1.1.7/go.mod h1:lj5s0c3V2DBrqTV7llrYr5NG6My20zk30Fl46Y7DoTY= github.com/davecgh/go-spew v1.1.0/go.mod h1:J7Y8YcW2NihsgmVo/mv3lAwl/skON4iLHjSsI+c5H38= +github.com/davecgh/go-spew v1.1.1 h1:vj9j/u1bqnvCEfJOwUhtlOARqs3+rkHYY13jYWTU97c= github.com/davecgh/go-spew v1.1.1/go.mod h1:J7Y8YcW2NihsgmVo/mv3lAwl/skON4iLHjSsI+c5H38= github.com/dgrijalva/jwt-go v0.0.0-20160705203006-01aeca54ebda/go.mod h1:E3ru+11k8xSBh+hMPgOLZmtrrCbhqsmaPHjLKYnJCaQ= github.com/dgrijalva/jwt-go v3.2.0+incompatible/go.mod h1:E3ru+11k8xSBh+hMPgOLZmtrrCbhqsmaPHjLKYnJCaQ= @@ -45,14 +54,18 @@ github.com/docker/spdystream v0.0.0-20160310174837-449fdfce4d96/go.mod h1:Qh8CwZ github.com/elazarl/goproxy v0.0.0-20170405201442-c4fc26588b6e/go.mod h1:/Zj4wYkgs4iZTTu3o/KG3Itv/qCCa8VVMlb3i9OVuzc= github.com/evanphx/json-patch v4.2.0+incompatible/go.mod h1:50XU6AFN0ol/bzJsmQLiYLvXMP4fmwYFNcr97nuDLSk= github.com/fatih/color v1.6.0/go.mod h1:Zm6kSWBoL9eyXnKyktHP6abPY2pDugNf5KwzbycvMj4= +github.com/fatih/color v1.7.0 h1:DkWD4oS2D8LGGgTQ6IvwJJXSL5Vp2ffcQg58nFV38Ys= github.com/fatih/color v1.7.0/go.mod h1:Zm6kSWBoL9eyXnKyktHP6abPY2pDugNf5KwzbycvMj4= +github.com/fsnotify/fsnotify v1.4.7 h1:IXs+QLmnXW2CcXuY+8Mzv/fWEsPGWxqefPtCP5CnV9I= github.com/fsnotify/fsnotify v1.4.7/go.mod h1:jwhsz4b93w/PPRr/qN1Yymfu8t87LnFCMoQvtojpjFo= github.com/ghodss/yaml v1.0.0/go.mod h1:4dBDuWmgqj2HViK6kFavaiC9ZROes6MMH2rRYeMEF04= github.com/go-critic/go-critic v0.0.0-20181204210945-1df300866540/go.mod h1:+sE8vrLDS2M0pZkBk0wy6+nLdKexVDrl/jBqQOTDThA= +github.com/go-critic/go-critic v0.3.4 h1:FYaiaLjX0Nqei80KPhm4CyFQUBbmJwSrHxQ73taaGBc= github.com/go-critic/go-critic v0.3.4/go.mod h1:AHR42Lk/E/aOznsrYdMYeIQS5RH10HZHSqP+rD6AJrc= github.com/go-kit/kit v0.8.0/go.mod h1:xBxKIO96dXMWWy0MnWVtmwkA9/13aqxPnvrjFYMA2as= github.com/go-kit/kit v0.9.0/go.mod h1:xBxKIO96dXMWWy0MnWVtmwkA9/13aqxPnvrjFYMA2as= github.com/go-lintpack/lintpack v0.5.1/go.mod h1:NwZuYi2nUHho8XEIZ6SIxihrnPoqBTDqfpXvXAN0sXM= +github.com/go-lintpack/lintpack v0.5.2 h1:DI5mA3+eKdWeJ40nU4d6Wc26qmdG8RCi/btYq0TuRN0= github.com/go-lintpack/lintpack v0.5.2/go.mod h1:NwZuYi2nUHho8XEIZ6SIxihrnPoqBTDqfpXvXAN0sXM= github.com/go-logfmt/logfmt v0.3.0/go.mod h1:Qt1PoO58o5twSAckw1HlFXLmHsOX5/0LbT9GBnD5lWE= github.com/go-logfmt/logfmt v0.4.0/go.mod h1:3RMwSq7FuexP4Kalkev3ejPJsZTpXXBr9+V4qmtdjCk= @@ -60,68 +73,101 @@ github.com/go-ole/go-ole v1.2.1/go.mod h1:7FAglXiTm7HKlQRDeOQ6ZNUHidzCWXuZWq/1dT github.com/go-ole/go-ole v1.2.4/go.mod h1:XCwSNxSkXRo4vlyPy93sltvi/qJq0jqQhjqQNIwKuxM= github.com/go-stack/stack v1.8.0/go.mod h1:v0f6uXyyMGvRgIKkXu+yp6POWl0qKG85gN/melR3HDY= github.com/go-toolsmith/astcast v0.0.0-20181028201508-b7a89ed70af1/go.mod h1:TEo3Ghaj7PsZawQHxT/oBvo4HK/sl1RcuUHDKTTju+o= +github.com/go-toolsmith/astcast v1.0.0 h1:JojxlmI6STnFVG9yOImLeGREv8W2ocNUM+iOhR6jE7g= github.com/go-toolsmith/astcast v1.0.0/go.mod h1:mt2OdQTeAQcY4DQgPSArJjHCcOwlX+Wl/kwN+LbLGQ4= github.com/go-toolsmith/astcopy v0.0.0-20180903214859-79b422d080c4/go.mod h1:c9CPdq2AzM8oPomdlPniEfPAC6g1s7NqZzODt8y6ib8= +github.com/go-toolsmith/astcopy v1.0.0 h1:OMgl1b1MEpjFQ1m5ztEO06rz5CUd3oBv9RF7+DyvdG8= github.com/go-toolsmith/astcopy v1.0.0/go.mod h1:vrgyG+5Bxrnz4MZWPF+pI4R8h3qKRjjyvV/DSez4WVQ= github.com/go-toolsmith/astequal v0.0.0-20180903214952-dcb477bfacd6/go.mod h1:H+xSiq0+LtiDC11+h1G32h7Of5O3CYFJ99GVbS5lDKY= +github.com/go-toolsmith/astequal v1.0.0 h1:4zxD8j3JRFNyLN46lodQuqz3xdKSrur7U/sr0SDS/gQ= github.com/go-toolsmith/astequal v1.0.0/go.mod h1:H+xSiq0+LtiDC11+h1G32h7Of5O3CYFJ99GVbS5lDKY= github.com/go-toolsmith/astfmt v0.0.0-20180903215011-8f8ee99c3086/go.mod h1:mP93XdblcopXwlyN4X4uodxXQhldPGZbcEJIimQHrkg= +github.com/go-toolsmith/astfmt v1.0.0 h1:A0vDDXt+vsvLEdbMFJAUBI/uTbRw1ffOPnxsILnFL6k= github.com/go-toolsmith/astfmt v1.0.0/go.mod h1:cnWmsOAuq4jJY6Ct5YWlVLmcmLMn1JUPuQIHCY7CJDw= github.com/go-toolsmith/astinfo v0.0.0-20180906194353-9809ff7efb21/go.mod h1:dDStQCHtmZpYOmjRP/8gHHnCCch3Zz3oEgCdZVdtweU= github.com/go-toolsmith/astinfo v1.0.0/go.mod h1:dDStQCHtmZpYOmjRP/8gHHnCCch3Zz3oEgCdZVdtweU= github.com/go-toolsmith/astp v0.0.0-20180903215135-0af7e3c24f30/go.mod h1:SV2ur98SGypH1UjcPpCatrV5hPazG6+IfNHbkDXBRrk= +github.com/go-toolsmith/astp v1.0.0 h1:alXE75TXgcmupDsMK1fRAy0YUzLzqPVvBKoyWV+KPXg= github.com/go-toolsmith/astp v1.0.0/go.mod h1:RSyrtpVlfTFGDYRbrjyWP1pYu//tSFcvdYrA8meBmLI= github.com/go-toolsmith/pkgload v0.0.0-20181119091011-e9e65178eee8/go.mod h1:WoMrjiy4zvdS+Bg6z9jZH82QXwkcgCBX6nOfnmdaHks= github.com/go-toolsmith/pkgload v1.0.0/go.mod h1:5eFArkbO80v7Z0kdngIxsRXRMTaX4Ilcwuh3clNrQJc= github.com/go-toolsmith/strparse v0.0.0-20180903215201-830b6daa1241/go.mod h1:YI2nUKP9YGZnL/L1/DLFBfixrcjslWct4wyljWhSRy8= +github.com/go-toolsmith/strparse v1.0.0 h1:Vcw78DnpCAKlM20kSbAyO4mPfJn/lyYA4BJUDxe2Jb4= github.com/go-toolsmith/strparse v1.0.0/go.mod h1:YI2nUKP9YGZnL/L1/DLFBfixrcjslWct4wyljWhSRy8= github.com/go-toolsmith/typep v0.0.0-20181030061450-d63dc7650676/go.mod h1:JSQCQMUPdRlMZFswiq3TGpNp1GMktqkR2Ns5AIQkATU= +github.com/go-toolsmith/typep v1.0.0 h1:zKymWyA1TRYvqYrYDrfEMZULyrhcnGY3x7LDKU2XQaA= github.com/go-toolsmith/typep v1.0.0/go.mod h1:JSQCQMUPdRlMZFswiq3TGpNp1GMktqkR2Ns5AIQkATU= +github.com/gobwas/glob v0.2.3 h1:A4xDbljILXROh+kObIiy5kIaPYD8e96x1tgBhUI5J+Y= github.com/gobwas/glob v0.2.3/go.mod h1:d3Ez4x06l9bZtSvzIay5+Yzi0fmZzPgnTbPcKjJAkT8= github.com/gogo/protobuf v0.0.0-20171007142547-342cbe0a0415/go.mod h1:r8qH/GZQm5c6nD/R0oafs1akxWv10x8SbQlK7atdtwQ= github.com/gogo/protobuf v1.1.1/go.mod h1:r8qH/GZQm5c6nD/R0oafs1akxWv10x8SbQlK7atdtwQ= +github.com/gogo/protobuf v1.2.1 h1:/s5zKNz0uPFCZ5hddgPdo2TK2TVrUNMn0OOX8/aZMTE= github.com/gogo/protobuf v1.2.1/go.mod h1:hp+jE20tsWTFYpLwKvXlhS1hjn+gTNwPg2I6zVXpSg4= github.com/golang/glog v0.0.0-20160126235308-23def4e6c14b/go.mod h1:SBH7ygxi8pfUlaOkMMuAQtPIUF8ecWP5IEl/CR7VP2Q= github.com/golang/groupcache v0.0.0-20160516000752-02826c3e7903/go.mod h1:cIg4eruTrX1D+g88fzRXU5OdNfaM+9IcxsU14FzY7Hc= github.com/golang/groupcache v0.0.0-20190129154638-5b532d6fd5ef/go.mod h1:cIg4eruTrX1D+g88fzRXU5OdNfaM+9IcxsU14FzY7Hc= +github.com/golang/groupcache v0.0.0-20190702054246-869f871628b6 h1:ZgQEtGgCBiWRM39fZuwSd1LwSqqSW0hOdXCYYDX0R3I= github.com/golang/groupcache v0.0.0-20190702054246-869f871628b6/go.mod h1:cIg4eruTrX1D+g88fzRXU5OdNfaM+9IcxsU14FzY7Hc= github.com/golang/mock v1.0.0/go.mod h1:oTYuIxOrZwtPieC+H1uAHpcLFnEyAGVDL/k47Jfbm0A= github.com/golang/mock v1.1.1/go.mod h1:oTYuIxOrZwtPieC+H1uAHpcLFnEyAGVDL/k47Jfbm0A= github.com/golang/mock v1.2.0/go.mod h1:oTYuIxOrZwtPieC+H1uAHpcLFnEyAGVDL/k47Jfbm0A= +github.com/golang/mock v1.3.1 h1:qGJ6qTW+x6xX/my+8YUVl4WNpX9B7+/l2tRsHGZ7f2s= github.com/golang/mock v1.3.1/go.mod h1:sBzyDLLjw3U8JLTeZvSv8jJB+tU5PVekmnlKIyFUx0Y= github.com/golang/protobuf v1.2.0/go.mod h1:6lQm79b+lXiMfvg/cZm0SGofjICqVBUtrP5yJMmIC1U= github.com/golang/protobuf v1.3.1/go.mod h1:6lQm79b+lXiMfvg/cZm0SGofjICqVBUtrP5yJMmIC1U= +github.com/golang/protobuf v1.3.2 h1:6nsPYzhq5kReh6QImI3k5qWzO4PEbvbIW2cwSfR/6xs= github.com/golang/protobuf v1.3.2/go.mod h1:6lQm79b+lXiMfvg/cZm0SGofjICqVBUtrP5yJMmIC1U= github.com/golang/snappy v0.0.1/go.mod h1:/XxbfmMg8lxefKM7IXC3fBNl/7bRcc72aCRzEWrmP2Q= +github.com/golangci/check v0.0.0-20180506172741-cfe4005ccda2 h1:23T5iq8rbUYlhpt5DB4XJkc6BU31uODLD1o1gKvZmD0= github.com/golangci/check v0.0.0-20180506172741-cfe4005ccda2/go.mod h1:k9Qvh+8juN+UKMCS/3jFtGICgW8O96FVaZsaxdzDkR4= +github.com/golangci/dupl v0.0.0-20180902072040-3e9179ac440a h1:w8hkcTqaFpzKqonE9uMCefW1WDie15eSP/4MssdenaM= github.com/golangci/dupl v0.0.0-20180902072040-3e9179ac440a/go.mod h1:ryS0uhF+x9jgbj/N71xsEqODy9BN81/GonCZiOzirOk= github.com/golangci/errcheck v0.0.0-20181003203344-ef45e06d44b6/go.mod h1:DbHgvLiFKX1Sh2T1w8Q/h4NAI8MHIpzCdnBUDTXU3I0= +github.com/golangci/errcheck v0.0.0-20181223084120-ef45e06d44b6 h1:YYWNAGTKWhKpcLLt7aSj/odlKrSrelQwlovBpDuf19w= github.com/golangci/errcheck v0.0.0-20181223084120-ef45e06d44b6/go.mod h1:DbHgvLiFKX1Sh2T1w8Q/h4NAI8MHIpzCdnBUDTXU3I0= +github.com/golangci/go-misc v0.0.0-20180628070357-927a3d87b613 h1:9kfjN3AdxcbsZBf8NjltjWihK2QfBBBZuv91cMFfDHw= github.com/golangci/go-misc v0.0.0-20180628070357-927a3d87b613/go.mod h1:SyvUF2NxV+sN8upjjeVYr5W7tyxaT1JVtvhKhOn2ii8= github.com/golangci/go-tools v0.0.0-20180109140146-af6baa5dc196/go.mod h1:unzUULGw35sjyOYjUt0jMTXqHlZPpPc6e+xfO4cd6mM= +github.com/golangci/go-tools v0.0.0-20190124090046-35a9f45a5db0 h1:MRhC9XbUjE6XDOInSJ8pwHuPagqsyO89QDU9IdVhe3o= github.com/golangci/go-tools v0.0.0-20190124090046-35a9f45a5db0/go.mod h1:unzUULGw35sjyOYjUt0jMTXqHlZPpPc6e+xfO4cd6mM= +github.com/golangci/goconst v0.0.0-20180610141641-041c5f2b40f3 h1:pe9JHs3cHHDQgOFXJJdYkK6fLz2PWyYtP4hthoCMvs8= github.com/golangci/goconst v0.0.0-20180610141641-041c5f2b40f3/go.mod h1:JXrF4TWy4tXYn62/9x8Wm/K/dm06p8tCKwFRDPZG/1o= github.com/golangci/gocyclo v0.0.0-20180528134321-2becd97e67ee/go.mod h1:ozx7R9SIwqmqf5pRP90DhR2Oay2UIjGuKheCBCNwAYU= +github.com/golangci/gocyclo v0.0.0-20180528144436-0a533e8fa43d h1:pXTK/gkVNs7Zyy7WKgLXmpQ5bHTrq5GDsp8R9Qs67g0= github.com/golangci/gocyclo v0.0.0-20180528144436-0a533e8fa43d/go.mod h1:ozx7R9SIwqmqf5pRP90DhR2Oay2UIjGuKheCBCNwAYU= github.com/golangci/gofmt v0.0.0-20181105071733-0b8337e80d98/go.mod h1:9qCChq59u/eW8im404Q2WWTrnBUQKjpNYKMbU4M7EFU= +github.com/golangci/gofmt v0.0.0-20181222123516-0b8337e80d98 h1:0OkFarm1Zy2CjCiDKfK9XHgmc2wbDlRMD2hD8anAJHU= github.com/golangci/gofmt v0.0.0-20181222123516-0b8337e80d98/go.mod h1:9qCChq59u/eW8im404Q2WWTrnBUQKjpNYKMbU4M7EFU= +github.com/golangci/golangci-lint v1.17.1 h1:lc8Hf9GPCjIr0hg3S/xhvFT1+Hydass8F1xchr8jkME= github.com/golangci/golangci-lint v1.17.1/go.mod h1:+5sJSl2h3aly+fpmL2meSP8CaSKua2E4Twi9LPy7b1g= github.com/golangci/gosec v0.0.0-20180901114220-66fb7fc33547/go.mod h1:0qUabqiIQgfmlAmulqxyiGkkyF6/tOGSnY2cnPVwrzU= +github.com/golangci/gosec v0.0.0-20180901114220-8afd9cbb6cfb h1:Bi7BYmZVg4C+mKGi8LeohcP2GGUl2XJD4xCkJoZSaYc= github.com/golangci/gosec v0.0.0-20180901114220-8afd9cbb6cfb/go.mod h1:ON/c2UR0VAAv6ZEAFKhjCLplESSmRFfZcDLASbI1GWo= +github.com/golangci/ineffassign v0.0.0-20180808204949-42439a7714cc h1:XRFao922N8F3EcIXBSNX8Iywk+GI0dxD/8FicMX2D/c= github.com/golangci/ineffassign v0.0.0-20180808204949-42439a7714cc/go.mod h1:e5tpTHCfVze+7EpLEozzMB3eafxo2KT5veNg1k6byQU= github.com/golangci/lint-1 v0.0.0-20180610141402-ee948d087217/go.mod h1:66R6K6P6VWk9I95jvqGxkqJxVWGFy9XlDwLwVz1RCFg= +github.com/golangci/lint-1 v0.0.0-20181222135242-d2cdd8c08219 h1:utua3L2IbQJmauC5IXdEA547bcoU5dozgQAfc8Onsg4= github.com/golangci/lint-1 v0.0.0-20181222135242-d2cdd8c08219/go.mod h1:/X8TswGSh1pIozq4ZwCfxS0WA5JGXguxk94ar/4c87Y= +github.com/golangci/maligned v0.0.0-20180506175553-b1d89398deca h1:kNY3/svz5T29MYHubXix4aDDuE3RWHkPvopM/EDv/MA= github.com/golangci/maligned v0.0.0-20180506175553-b1d89398deca/go.mod h1:tvlJhZqDe4LMs4ZHD0oMUlt9G2LWuDGoisJTBzLMV9o= +github.com/golangci/misspell v0.0.0-20180809174111-950f5d19e770 h1:EL/O5HGrF7Jaq0yNhBLucz9hTuRzj2LdwGBOaENgxIk= github.com/golangci/misspell v0.0.0-20180809174111-950f5d19e770/go.mod h1:dEbvlSfYbMQDtrpRMQU675gSDLDNa8sCPPChZ7PhiVA= +github.com/golangci/prealloc v0.0.0-20180630174525-215b22d4de21 h1:leSNB7iYzLYSSx3J/s5sVf4Drkc68W2wm4Ixh/mr0us= github.com/golangci/prealloc v0.0.0-20180630174525-215b22d4de21/go.mod h1:tf5+bzsHdTM0bsB7+8mt0GUMvjCgwLpTapNZHU8AajI= github.com/golangci/revgrep v0.0.0-20180526074752-d9c87f5ffaf0/go.mod h1:qOQCunEYvmd/TLamH+7LlVccLvUH5kZNhbCgTHoBbp4= +github.com/golangci/revgrep v0.0.0-20180812185044-276a5c0a1039 h1:XQKc8IYQOeRwVs36tDrEmTgDgP88d5iEURwpmtiAlOM= github.com/golangci/revgrep v0.0.0-20180812185044-276a5c0a1039/go.mod h1:qOQCunEYvmd/TLamH+7LlVccLvUH5kZNhbCgTHoBbp4= +github.com/golangci/unconvert v0.0.0-20180507085042-28b1c447d1f4 h1:zwtduBRr5SSWhqsYNgcuWO2kFlpdOZbP0+yRjmvPGys= github.com/golangci/unconvert v0.0.0-20180507085042-28b1c447d1f4/go.mod h1:Izgrg8RkN3rCIMLGE9CyYmU9pY2Jer6DgANEnZ/L/cQ= github.com/google/btree v0.0.0-20160524151835-7d79101e329e/go.mod h1:lNA+9X1NB3Zf8V7Ke586lFgjr2dZNuvo3lPJSGZ5JPQ= github.com/google/btree v0.0.0-20180813153112-4030bb1f1f0c/go.mod h1:lNA+9X1NB3Zf8V7Ke586lFgjr2dZNuvo3lPJSGZ5JPQ= github.com/google/btree v1.0.0/go.mod h1:lNA+9X1NB3Zf8V7Ke586lFgjr2dZNuvo3lPJSGZ5JPQ= github.com/google/go-cmp v0.2.0/go.mod h1:oXzfMopK8JAjlY9xF4vHSVASa0yLyX7SntLO5aqRK0M= +github.com/google/go-cmp v0.3.0 h1:crn/baboCvb5fXaQ0IJ1SGTsTVrWpDsCWC8EGETZijY= github.com/google/go-cmp v0.3.0/go.mod h1:8QqcDgzrUqlUb/G2PQTWiueGozuR1884gddMywk6iLU= +github.com/google/go-cmp v0.3.1 h1:Xye71clBPdm5HgqGwUkwhbynsUJZhDbS20FvLhQ2izg= +github.com/google/go-cmp v0.3.1/go.mod h1:8QqcDgzrUqlUb/G2PQTWiueGozuR1884gddMywk6iLU= +github.com/google/gofuzz v1.0.0 h1:A8PeW59pxE9IoFRqBp37U+mSNaQoZ46F1f0f863XSXw= github.com/google/gofuzz v1.0.0/go.mod h1:dBl0BpW6vV/+mYPU4Po3pmUjxk6FQPldtuIdl/M65Eg= github.com/google/martian v2.1.0+incompatible/go.mod h1:9I4somxYTbIHy5NJKHRl3wXiIaQGbYVAs8BPL6v8lEs= github.com/google/pprof v0.0.0-20181206194817-3ea8567a2e57/go.mod h1:zfwlbNMJ+OItoe0UupaVj+oy1omPYYDuagoSzA8v9mc= @@ -131,43 +177,56 @@ github.com/google/renameio v0.1.0/go.mod h1:KWCgfxg9yswjAJkECMjeO8J8rahYeXnNhOm4 github.com/google/uuid v1.1.1/go.mod h1:TIyPZe4MgqvfeYDBFedMoGGpEw/LqOeaOT+nhxU+yHo= github.com/googleapis/gax-go/v2 v2.0.4/go.mod h1:0Wqv26UfaUD9n4G6kQubkQ+KchISgw+vpHVxEJEs9eg= github.com/googleapis/gax-go/v2 v2.0.5/go.mod h1:DWXyrwAJ9X0FpwwEdw+IPEYBICEFu5mhpdKc/us6bOk= +github.com/googleapis/gnostic v0.0.0-20170729233727-0c5108395e2d h1:7XGaL1e6bYS1yIonGp9761ExpPPV1ui0SAC59Yube9k= github.com/googleapis/gnostic v0.0.0-20170729233727-0c5108395e2d/go.mod h1:sJBsCZ4ayReDTBIg8b9dl28c5xFWyhBTVRp3pOg5EKY= github.com/gophercloud/gophercloud v0.0.0-20190126172459-c818fa66e4c8/go.mod h1:3WdhXV3rUYy9p6AUW8d94kr+HS62Y4VL9mBnFxsD8q4= +github.com/gorilla/mux v1.7.2 h1:zoNxOV7WjqXptQOVngLmcSQgXmgk4NMz1HibBchjl/I= github.com/gorilla/mux v1.7.2/go.mod h1:1lud6UwP+6orDFRuTfBEV8e9/aOM/c4fVVCaMa2zaAs= github.com/gorilla/websocket v1.4.0/go.mod h1:E7qHFY5m1UJ88s3WnNqhKjPHQ0heANvMoAMk2YaljkQ= github.com/gostaticanalysis/analysisutil v0.0.0-20190318220348-4088753ea4d3/go.mod h1:eEOZF4jCKGi+aprrirO9e7WKB3beBRtWgqGunKl6pKE= github.com/gostaticanalysis/analysisutil v0.0.2/go.mod h1:eEOZF4jCKGi+aprrirO9e7WKB3beBRtWgqGunKl6pKE= +github.com/gostaticanalysis/analysisutil v0.0.3 h1:iwp+5/UAyzQSFgQ4uR2sni99sJ8Eo9DEacKWM5pekIg= +github.com/gostaticanalysis/analysisutil v0.0.3/go.mod h1:eEOZF4jCKGi+aprrirO9e7WKB3beBRtWgqGunKl6pKE= github.com/gregjones/httpcache v0.0.0-20170728041850-787624de3eb7/go.mod h1:FecbI9+v66THATjSRHfNgh1IVFe/9kFxbXtjV0ctIMA= github.com/grpc-ecosystem/go-grpc-middleware v1.0.0/go.mod h1:FiyG127CGDf3tlThmgyCl78X/SZQqEOJBCDaAfeWzPs= github.com/grpc-ecosystem/go-grpc-prometheus v1.2.0/go.mod h1:8NvIoxWQoOIhqOTXgfV/d3M/q6VIi02HzZEHgUlZvzk= github.com/grpc-ecosystem/grpc-gateway v1.9.0/go.mod h1:vNeuVxBJEsws4ogUvrchl83t/GYV9WGTSLVdBhOQFDY= github.com/grpc-ecosystem/grpc-gateway v1.9.4/go.mod h1:vNeuVxBJEsws4ogUvrchl83t/GYV9WGTSLVdBhOQFDY= github.com/grpc-ecosystem/grpc-gateway v1.9.5/go.mod h1:vNeuVxBJEsws4ogUvrchl83t/GYV9WGTSLVdBhOQFDY= +github.com/grpc-ecosystem/grpc-gateway v1.9.6/go.mod h1:vNeuVxBJEsws4ogUvrchl83t/GYV9WGTSLVdBhOQFDY= github.com/hashicorp/golang-lru v0.5.0/go.mod h1:/m3WP610KZHVQ1SGc6re/UDhFvYD7pJ4Ao+sR/qLZy8= github.com/hashicorp/golang-lru v0.5.1/go.mod h1:/m3WP610KZHVQ1SGc6re/UDhFvYD7pJ4Ao+sR/qLZy8= +github.com/hashicorp/golang-lru v0.5.3 h1:YPkqC67at8FYaadspW/6uE0COsBxS2656RLEr8Bppgk= github.com/hashicorp/golang-lru v0.5.3/go.mod h1:iADmTwqILo4mZ8BN3D2Q6+9jd8WM5uGBxy+E8yxSoD4= github.com/hashicorp/hcl v0.0.0-20180404174102-ef8a98b0bbce/go.mod h1:oZtUIOe8dh44I2q6ScRibXws4Ajl+d+nod3AaR9vL5w= +github.com/hashicorp/hcl v1.0.0 h1:0Anlzjpi4vEasTeNFn2mLJgTSwt0+6sfsiTG8qcWGx4= github.com/hashicorp/hcl v1.0.0/go.mod h1:E5yfLk+7swimpb2L/Alb/PJmXilQ/rhwaUYs4T20WEQ= github.com/hpcloud/tail v1.0.0/go.mod h1:ab1qPbhIpdTxEkNHXyeSf5vhxWSCs/tWer42PpOxQnU= github.com/hpe-storage/common-host-libs v0.0.0-20190729230508-ed4df55bd64a h1:wqeKj/nXihwDjpQYDeVhkiGvqO1nHVGlq42nmFsmeFQ= github.com/hpe-storage/common-host-libs v0.0.0-20190729230508-ed4df55bd64a/go.mod h1:qQxvwt4l9C79p2V8bY1P13As1+ylyznKJVp3K2P5bz8= +github.com/hpe-storage/common-host-libs v0.0.0-20190821160716-b46821a0b5d1 h1:m4srbYPw5WGnH74GjiP2C4x5asHjTDwUelv0v/YBFXg= +github.com/hpe-storage/common-host-libs v0.0.0-20190821160716-b46821a0b5d1/go.mod h1:qQxvwt4l9C79p2V8bY1P13As1+ylyznKJVp3K2P5bz8= github.com/hpe-storage/k8s-custom-resources v0.0.0-20190725185337-965fa924678a h1:cpkiN7PNdZKOElyH1tYgEc+a7X1BbqS7fCd/dMski1c= github.com/hpe-storage/k8s-custom-resources v0.0.0-20190725185337-965fa924678a/go.mod h1:J5Gwdo2nG3SwcXUG4dXWeQWWfQNd3FDcXH/7VyuHSy0= github.com/imdario/mergo v0.3.5/go.mod h1:2EnlNZ0deacrJVfApfmtdGgDfMuh/nq6Ok1EcJh5FfA= +github.com/imdario/mergo v0.3.7 h1:Y+UAYTZ7gDEuOfhxKWy+dvb5dRQ6rJjFSdX2HZY1/gI= github.com/imdario/mergo v0.3.7/go.mod h1:2EnlNZ0deacrJVfApfmtdGgDfMuh/nq6Ok1EcJh5FfA= github.com/inconshreveable/mousetrap v1.0.0/go.mod h1:PxqpIevigyE2G7u3NXJIT2ANytuPF1OarO4DADm73n8= github.com/jonboulle/clockwork v0.1.0/go.mod h1:Ii8DK3G1RaLaWxj9trq07+26W01tbo22gdxWY5EU2bo= github.com/json-iterator/go v1.1.6/go.mod h1:+SdeFBvtyEkXs7REEP0seUULqWtbJapLOCVDaaPEHmU= +github.com/json-iterator/go v1.1.7 h1:KfgG9LzI+pYjr4xvmz/5H4FXjokeP+rlHLhv3iH62Fo= github.com/json-iterator/go v1.1.7/go.mod h1:KdQUCv79m/52Kvf8AW2vK1V8akMuk1QjK/uOdHXbAo4= github.com/jstemmer/go-junit-report v0.0.0-20190106144839-af01ea7f8024/go.mod h1:6v2b51hI/fHJwM22ozAgKL4VKDeJcHhJFhtBdhmNjmU= github.com/julienschmidt/httprouter v1.2.0/go.mod h1:SYymIcj16QtmaHHD7aYtjjsJG7VTCxuUUipMqKk8s4w= github.com/kisielk/errcheck v1.1.0/go.mod h1:EZBBE59ingxPouuu3KfxchcWSUPOHkagtvWXihfKN4Q= github.com/kisielk/errcheck v1.2.0/go.mod h1:/BMXB+zMLi60iA8Vv6Ksmxu/1UDYcXs4uQLJ+jE2L00= github.com/kisielk/gotool v0.0.0-20161130080628-0de1eaf82fa3/go.mod h1:jxZFDH7ILpTPQTk+E2s+z4CUas9lVNjIuKR4c5/zKgM= +github.com/kisielk/gotool v1.0.0 h1:AV2c/EiW3KqPNT9ZKl07ehoAGi4C5/01Cfbblndcapg= github.com/kisielk/gotool v1.0.0/go.mod h1:XhKaO+MFFWcvkIS/tQcRk01m1F5IRFswLeQ+oQHNcck= github.com/klauspost/compress v1.4.0/go.mod h1:RyIbtBH6LamlWaDj8nUwkbUhJ87Yi3uG0guNDohfE1A= github.com/klauspost/compress v1.4.1/go.mod h1:RyIbtBH6LamlWaDj8nUwkbUhJ87Yi3uG0guNDohfE1A= github.com/klauspost/compress v1.7.4/go.mod h1:RyIbtBH6LamlWaDj8nUwkbUhJ87Yi3uG0guNDohfE1A= +github.com/klauspost/compress v1.7.6/go.mod h1:RyIbtBH6LamlWaDj8nUwkbUhJ87Yi3uG0guNDohfE1A= github.com/klauspost/cpuid v0.0.0-20180405133222-e7e905edc00e/go.mod h1:Pj4uuM528wm8OyEC2QMXAi2YiTZ96dNQPGgoMS4s3ek= github.com/klauspost/cpuid v1.2.0/go.mod h1:Pj4uuM528wm8OyEC2QMXAi2YiTZ96dNQPGgoMS4s3ek= github.com/klauspost/cpuid v1.2.1/go.mod h1:Pj4uuM528wm8OyEC2QMXAi2YiTZ96dNQPGgoMS4s3ek= @@ -178,28 +237,39 @@ github.com/kr/pretty v0.1.0/go.mod h1:dAy3ld7l9f0ibDNOQOHHMYYIIbhfbHSm3C4ZsoJORN github.com/kr/pty v1.1.1/go.mod h1:pFQYn66WHrOpPYNljwOMqo10TkYh1fy3cYio2l3bCsQ= github.com/kr/pty v1.1.8/go.mod h1:O1sed60cT9XZ5uDucP5qwvh+TE3NnUj51EiZO/lmSfw= github.com/kr/text v0.1.0/go.mod h1:4Jbv+DJW3UT/LiOwJeYQe1efqtUx/iVham/4vfdArNI= +github.com/kubernetes-csi/csi-lib-utils v0.6.1 h1:+AZ58SRSRWh2vmMoWAAGcv7x6fIyBMpyCXAgIc9kT28= github.com/kubernetes-csi/csi-lib-utils v0.6.1/go.mod h1:GVmlUmxZ+SUjVLXicRFjqWUUvWez0g0Y78zNV9t7KfQ= +github.com/kubernetes-csi/external-snapshotter v1.1.0 h1:godlw8BSOac5TMGH2rVPJrmllek3y8wuqd9JsJHgulw= github.com/kubernetes-csi/external-snapshotter v1.1.0/go.mod h1:oYfxnsuh48V1UDYORl77YQxQbbdokNy7D73phuFpksY= github.com/logrusorgru/aurora v0.0.0-20181002194514-a7b3b318ed4e/go.mod h1:7rIyQOR62GCctdiQpZ/zOJlFyk6y+94wXzv6RNZgaR4= github.com/logrusorgru/aurora v0.0.0-20190428105938-cea283e61946/go.mod h1:7rIyQOR62GCctdiQpZ/zOJlFyk6y+94wXzv6RNZgaR4= +github.com/logrusorgru/aurora v0.0.0-20190803045625-94edacc10f9b/go.mod h1:7rIyQOR62GCctdiQpZ/zOJlFyk6y+94wXzv6RNZgaR4= github.com/magiconair/properties v1.7.6/go.mod h1:PppfXfuXeibc/6YijjN8zIbojt8czPbwD3XqdrwzmxQ= github.com/magiconair/properties v1.8.0/go.mod h1:PppfXfuXeibc/6YijjN8zIbojt8czPbwD3XqdrwzmxQ= +github.com/magiconair/properties v1.8.1 h1:ZC2Vc7/ZFkGmsVC9KvOjumD+G5lXy2RtTKyzRKO2BQ4= github.com/magiconair/properties v1.8.1/go.mod h1:PppfXfuXeibc/6YijjN8zIbojt8czPbwD3XqdrwzmxQ= github.com/mattn/go-colorable v0.0.9/go.mod h1:9vuHe8Xs5qXnSaW/c/ABM9alt+Vo+STaOChaDxuIBZU= +github.com/mattn/go-colorable v0.1.2 h1:/bC9yWikZXAL9uJdulbSfyVNIR3n3trXl+v8+1sx8mU= github.com/mattn/go-colorable v0.1.2/go.mod h1:U0ppj6V5qS13XJ6of8GYAs25YV2eR4EVcfRqFIhoBtE= github.com/mattn/go-isatty v0.0.3/go.mod h1:M+lRXTBqGeGNdLjl/ufCoiOlB5xdOkqRJdNxMWT7Zi4= github.com/mattn/go-isatty v0.0.8/go.mod h1:Iq45c/XA43vh69/j3iqttzPXn0bhXyGjM0Hdxcsrc5s= +github.com/mattn/go-isatty v0.0.9 h1:d5US/mDsogSGW37IV293h//ZFaeajb69h+EHFsv2xGg= +github.com/mattn/go-isatty v0.0.9/go.mod h1:YNRxwqDuOph6SZLI9vUUz6OYw3QyUt7WiY2yME+cCiQ= github.com/mattn/goveralls v0.0.2/go.mod h1:8d1ZMHsd7fW6IRPKQh46F2WRpyib5/X4FOpevwGNQEw= github.com/matttproud/golang_protobuf_extensions v1.0.1/go.mod h1:D8He9yQNgCq6Z5Ld7szi9bcBfOoFv/3dc6xSMkL2PC0= github.com/mitchellh/go-homedir v1.0.0/go.mod h1:SfyaCUpYCn1Vlf4IUYiD9fPX4A5wJrkLzIz1N1q0pr0= +github.com/mitchellh/go-homedir v1.1.0 h1:lukF9ziXFxDFPkA1vsr5zpc1XuPDn/wFntq5mG+4E0Y= github.com/mitchellh/go-homedir v1.1.0/go.mod h1:SfyaCUpYCn1Vlf4IUYiD9fPX4A5wJrkLzIz1N1q0pr0= github.com/mitchellh/go-ps v0.0.0-20170309133038-4fdf99ab2936/go.mod h1:r1VsdOzOPt1ZSrGZWFoNhsAedKnEd6r9Np1+5blZCWk= github.com/mitchellh/go-ps v0.0.0-20190716172923-621e5597135b/go.mod h1:r1VsdOzOPt1ZSrGZWFoNhsAedKnEd6r9Np1+5blZCWk= github.com/mitchellh/mapstructure v0.0.0-20180220230111-00c29f56e238/go.mod h1:FVVH3fgwuzCH5S8UJGiWEs2h04kUh9fWfEaFds41c1Y= +github.com/mitchellh/mapstructure v1.1.2 h1:fmNYVwqnSfB9mZU6OS2O6GsXM+wcskZDuKQzvN1EDeE= github.com/mitchellh/mapstructure v1.1.2/go.mod h1:FVVH3fgwuzCH5S8UJGiWEs2h04kUh9fWfEaFds41c1Y= github.com/modern-go/concurrent v0.0.0-20180228061459-e0a39a4cb421/go.mod h1:6dJC0mAP4ikYIbvyc7fijjWJddQyLn8Ig3JB5CqoB9Q= +github.com/modern-go/concurrent v0.0.0-20180306012644-bacd9c7ef1dd h1:TRLaZ9cD/w8PVh93nsPXa1VrQ6jlwL5oN8l14QlcNfg= github.com/modern-go/concurrent v0.0.0-20180306012644-bacd9c7ef1dd/go.mod h1:6dJC0mAP4ikYIbvyc7fijjWJddQyLn8Ig3JB5CqoB9Q= github.com/modern-go/reflect2 v0.0.0-20180701023420-4b7aa43c6742/go.mod h1:bx2lNnkwVCuqBIxFjflWJWanXIb3RllmbCylyMrvgv0= +github.com/modern-go/reflect2 v1.0.1 h1:9f412s+6RmYXLWZSEzVVgPGK7C2PphHj5RJrvfx9AWI= github.com/modern-go/reflect2 v1.0.1/go.mod h1:bx2lNnkwVCuqBIxFjflWJWanXIb3RllmbCylyMrvgv0= github.com/mozilla/tls-observatory v0.0.0-20180409132520-8791a200eb40/go.mod h1:SrKMQvPiws7F7iqYp8/TX+IhxCYhzr6N/1yb8cwHsGk= github.com/mozilla/tls-observatory v0.0.0-20190404164649-a3c1b6cfecfd/go.mod h1:SrKMQvPiws7F7iqYp8/TX+IhxCYhzr6N/1yb8cwHsGk= @@ -208,26 +278,33 @@ github.com/mwitkow/go-conntrack v0.0.0-20190716064945-2f068394615f/go.mod h1:qRW github.com/mxk/go-flowrate v0.0.0-20140419014527-cca7078d478f/go.mod h1:ZdcZmHo+o7JKHSa8/e818NopupXU1YMK5fe1lsApnBw= github.com/nbutton23/zxcvbn-go v0.0.0-20160627004424-a22cb81b2ecd/go.mod h1:o96djdrsSGy3AWPyBgZMAGfxZNfgntdJG+11KU4QvbU= github.com/nbutton23/zxcvbn-go v0.0.0-20171102151520-eafdab6b0663/go.mod h1:o96djdrsSGy3AWPyBgZMAGfxZNfgntdJG+11KU4QvbU= +github.com/nbutton23/zxcvbn-go v0.0.0-20180912185939-ae427f1e4c1d h1:AREM5mwr4u1ORQBMvzfzBgpsctsbQikCVpvC+tX285E= github.com/nbutton23/zxcvbn-go v0.0.0-20180912185939-ae427f1e4c1d/go.mod h1:o96djdrsSGy3AWPyBgZMAGfxZNfgntdJG+11KU4QvbU= github.com/oklog/ulid v1.3.1/go.mod h1:CirwcVhetQ6Lv90oh/F+FBtV6XMibvdAFo93nm5qn4U= github.com/onsi/ginkgo v0.0.0-20170829012221-11459a886d9c/go.mod h1:lLunBs/Ym6LB5Z9jYTR76FiuTmxDTDusOGeTQH+WWjE= github.com/onsi/ginkgo v1.6.0/go.mod h1:lLunBs/Ym6LB5Z9jYTR76FiuTmxDTDusOGeTQH+WWjE= github.com/onsi/ginkgo v1.8.0/go.mod h1:lLunBs/Ym6LB5Z9jYTR76FiuTmxDTDusOGeTQH+WWjE= +github.com/onsi/ginkgo v1.9.0/go.mod h1:lLunBs/Ym6LB5Z9jYTR76FiuTmxDTDusOGeTQH+WWjE= github.com/onsi/gomega v0.0.0-20170829124025-dcabb60a477c/go.mod h1:C1qb7wdrVGGVU+Z6iS04AVkA3Q65CEZX59MT0QO5uiA= github.com/onsi/gomega v1.4.2/go.mod h1:ex+gbHU/CVuBBDIJjb2X0qEXbFg53c61hWP/1CpauHY= github.com/onsi/gomega v1.5.0/go.mod h1:ex+gbHU/CVuBBDIJjb2X0qEXbFg53c61hWP/1CpauHY= +github.com/onsi/gomega v1.6.0/go.mod h1:ex+gbHU/CVuBBDIJjb2X0qEXbFg53c61hWP/1CpauHY= github.com/pelletier/go-toml v1.1.0/go.mod h1:5z9KED0ma1S8pY6P1sdut58dfprrGBbd/94hg7ilaic= github.com/pelletier/go-toml v1.2.0/go.mod h1:5z9KED0ma1S8pY6P1sdut58dfprrGBbd/94hg7ilaic= +github.com/pelletier/go-toml v1.4.0 h1:u3Z1r+oOXJIkxqw34zVhyPgjBsm6X2wn21NWs/HfSeg= github.com/pelletier/go-toml v1.4.0/go.mod h1:PN7xzY2wHTK0K9p34ErDQMlFxa51Fk0OUruD3k1mMwo= github.com/peterbourgon/diskv v2.0.1+incompatible/go.mod h1:uqqh8zWWbv1HBMNONnaR/tNboyR3/BZd58JJSHlUSCU= github.com/pkg/errors v0.8.0/go.mod h1:bwawxfHBFNV+L2hUp1rHADufV3IMtnDRdf1r5NINEl0= +github.com/pkg/errors v0.8.1 h1:iURUrRGxPUNPdy5/HRSm+Yj6okJ6UtLINN0Q9M4+h3I= github.com/pkg/errors v0.8.1/go.mod h1:bwawxfHBFNV+L2hUp1rHADufV3IMtnDRdf1r5NINEl0= github.com/pmezard/go-difflib v1.0.0/go.mod h1:iKH77koFhYxTK1pcRnkKkqfTogsbg7gZNVY4sRDYZ/4= github.com/prometheus/client_golang v0.9.1/go.mod h1:7SWBe2y4D6OKWSNQJUaRYU/AaXPKyh/dDVn+NZz0KFw= github.com/prometheus/client_golang v0.9.3/go.mod h1:/TN21ttK/J9q6uSwhBd54HahCDft0ttaMvbicHlPoso= github.com/prometheus/client_golang v1.0.0/go.mod h1:db9x61etRT2tGnBNRi70OPL5FsnadC4Ky3P0J6CfImo= +github.com/prometheus/client_golang v1.1.0/go.mod h1:I1FGZT9+L76gKKOs5djB6ezCbFQP1xR9D75/vuwEF3g= github.com/prometheus/client_model v0.0.0-20180712105110-5c3871d89910/go.mod h1:MbSGuTsp3dbXC40dX6PRTWyKYBIrTGTE9sqQNg2J8bo= github.com/prometheus/client_model v0.0.0-20190129233127-fd36f4220a90/go.mod h1:xMI15A0UPsDsEKsMN9yxemIoYk6Tm2C1GtYGdfGttqA= +github.com/prometheus/client_model v0.0.0-20190812154241-14fe0d1b01d4/go.mod h1:xMI15A0UPsDsEKsMN9yxemIoYk6Tm2C1GtYGdfGttqA= github.com/prometheus/common v0.0.0-20181113130724-41aa239b4cce/go.mod h1:daVV7qP5qjZbuso7PdcryaAu0sAZbrN9i7WWcTMWvro= github.com/prometheus/common v0.4.0/go.mod h1:TNfzLD0ON7rHzMJeJkieUDPYmFC7Snx/y86RQel1bk4= github.com/prometheus/common v0.4.1/go.mod h1:TNfzLD0ON7rHzMJeJkieUDPYmFC7Snx/y86RQel1bk4= @@ -248,6 +325,7 @@ github.com/russross/blackfriday v1.5.2/go.mod h1:JO/DiYxRf+HjHt06OyowR9PTA263kcR github.com/russross/blackfriday v2.0.0+incompatible/go.mod h1:JO/DiYxRf+HjHt06OyowR9PTA263kcR/rfWxYHBV53g= github.com/ryanuber/go-glob v0.0.0-20170128012129-256dc444b735/go.mod h1:807d1WSdnB0XRJzKNil9Om6lcp/3a0v4qIHxIXzX/Yc= github.com/ryanuber/go-glob v1.0.0/go.mod h1:807d1WSdnB0XRJzKNil9Om6lcp/3a0v4qIHxIXzX/Yc= +github.com/satori/go.uuid v1.2.0 h1:0uYX9dsZ2yD7q2RtLRtPSdGDWzjeM3TbMJP9utgA0ww= github.com/satori/go.uuid v1.2.0/go.mod h1:dA0hQrYB0VpLJoorglMZABFdXlWrHn1NEOzdhQKdks0= github.com/shirou/gopsutil v0.0.0-20180427012116-c95755e4bcd7/go.mod h1:5b4v6he4MtMOwMlS0TUMTu2PcXUg8+E1lC7eC3UO/RA= github.com/shirou/gopsutil v2.18.12+incompatible/go.mod h1:5b4v6he4MtMOwMlS0TUMTu2PcXUg8+E1lC7eC3UO/RA= @@ -257,33 +335,43 @@ github.com/shurcooL/go v0.0.0-20190704215121-7189cc372560/go.mod h1:TDJrrUr11Vxr github.com/shurcooL/go-goon v0.0.0-20170922171312-37c2f522c041/go.mod h1:N5mDOmsrJOB+vfqUK+7DmDyjhSLIIBnXo9lvZJj3MWQ= github.com/sirupsen/logrus v1.0.5/go.mod h1:pMByvHTf9Beacp5x1UXfOR9xyW/9antXMhjMPG0dEzc= github.com/sirupsen/logrus v1.2.0/go.mod h1:LxeOpSwHxABJmUn/MG1IvRgCAasNZTLOkJPxbbu5VWo= +github.com/sirupsen/logrus v1.4.2 h1:SPIRibHv4MatM3XXNO2BJeFLZwZ2LvZgfQ5+UNI2im4= github.com/sirupsen/logrus v1.4.2/go.mod h1:tLMulIdttU9McNUspp0xgXVQah82FyeX6MwdIuYE2rE= github.com/soheilhy/cmux v0.1.4/go.mod h1:IM3LyeVVIOuxMH7sFAkER9+bJ4dT7Ms6E4xg4kGIyLM= +github.com/sourcegraph/go-diff v0.5.1 h1:gO6i5zugwzo1RVTvgvfwCOSVegNuvnNi6bAD1QCmkHs= github.com/sourcegraph/go-diff v0.5.1/go.mod h1:j2dHj3m8aZgQO8lMTcTnBcXkRRRqi34cd2MNlA9u1mE= github.com/spaolacci/murmur3 v0.0.0-20180118202830-f09979ecbc72/go.mod h1:JwIasOWyU6f++ZhiEuf87xNszmSA2myDM2Kzu9HwQUA= github.com/spaolacci/murmur3 v1.1.0/go.mod h1:JwIasOWyU6f++ZhiEuf87xNszmSA2myDM2Kzu9HwQUA= github.com/spf13/afero v1.1.0/go.mod h1:j4pytiNVoe2o6bmDsKpLACNPDBIoEAkihy7loJ1B0CQ= github.com/spf13/afero v1.1.2/go.mod h1:j4pytiNVoe2o6bmDsKpLACNPDBIoEAkihy7loJ1B0CQ= +github.com/spf13/afero v1.2.2 h1:5jhuqJyZCZf2JRofRvN/nIFgIWNzPa3/Vz8mYylgbWc= github.com/spf13/afero v1.2.2/go.mod h1:9ZxEEn6pIJ8Rxe320qSDBk6AsU0r9pR7Q4OcevTdifk= github.com/spf13/cast v1.2.0/go.mod h1:r2rcYCSwa1IExKTDiTfzaxqT2FNHs8hODu4LnUfgKEg= +github.com/spf13/cast v1.3.0 h1:oget//CVOEoFewqQxwr0Ej5yjygnqGkvggSE/gB35Q8= github.com/spf13/cast v1.3.0/go.mod h1:Qx5cxh0v+4UWYiBimWS+eyWzqEqokIECu5etghLkUJE= github.com/spf13/cobra v0.0.2/go.mod h1:1l0Ry5zgKvJasoi3XT1TypsSe7PqH0Sj9dhYf7v3XqQ= +github.com/spf13/cobra v0.0.5 h1:f0B+LkLX6DtmRH1isoNA9VTtNUK9K8xYd28JNNfOv/s= github.com/spf13/cobra v0.0.5/go.mod h1:3K3wKZymM7VvHMDS9+Akkh4K60UwM26emMESw8tLCHU= github.com/spf13/jwalterweatherman v0.0.0-20180109140146-7c0cea34c8ec/go.mod h1:cQK4TGJAtQXfYWX+Ddv3mKDzgVb68N+wFjFa4jdeBTo= github.com/spf13/jwalterweatherman v1.0.0/go.mod h1:cQK4TGJAtQXfYWX+Ddv3mKDzgVb68N+wFjFa4jdeBTo= +github.com/spf13/jwalterweatherman v1.1.0 h1:ue6voC5bR5F8YxI5S67j9i582FU4Qvo2bmqnqMYADFk= github.com/spf13/jwalterweatherman v1.1.0/go.mod h1:aNWZUN0dPAAO/Ljvb5BEdw96iTZ0EXowPYD95IqWIGo= github.com/spf13/pflag v1.0.1/go.mod h1:DYY7MBk1bdzusC3SYhjObp+wFpr4gzcvqqNjLnInEg4= +github.com/spf13/pflag v1.0.3 h1:zPAT6CGy6wXeQ7NtTnaTerfKOsV6V6F8agHXFiazDkg= github.com/spf13/pflag v1.0.3/go.mod h1:DYY7MBk1bdzusC3SYhjObp+wFpr4gzcvqqNjLnInEg4= github.com/spf13/viper v1.0.2/go.mod h1:A8kyI5cUJhb8N+3pkfONlcEcZbueH6nhAm0Fq7SrnBM= github.com/spf13/viper v1.3.2/go.mod h1:ZiWeW+zYFKm7srdB9IoDzzZXaJaI5eL9QjNiN/DMA2s= +github.com/spf13/viper v1.4.0 h1:yXHLWeravcrgGyFSyCgdYpXQ9dR9c/WED3pg1RhxqEU= github.com/spf13/viper v1.4.0/go.mod h1:PTJ7Z/lr49W6bUbkmS1V3by4uWynFiR9p7+dSq/yZzE= github.com/stretchr/objx v0.1.0/go.mod h1:HFkY916IF+rwdDfMAkV7OtwuqBVzrE8GR6GFx+wExME= github.com/stretchr/objx v0.1.1/go.mod h1:HFkY916IF+rwdDfMAkV7OtwuqBVzrE8GR6GFx+wExME= github.com/stretchr/objx v0.2.0/go.mod h1:qt09Ya8vawLte6SNmTgCsAVtYtaKzEcn8ATUoHMkEqE= github.com/stretchr/testify v1.2.2/go.mod h1:a8OnRcib4nhh0OaRAV+Yts87kKdq0PP7pXfy6kDkUVs= github.com/stretchr/testify v1.3.0/go.mod h1:M5WIy9Dh21IEIfnGCwXGc5bZfKNJtfHm1UVUgZn+9EI= +github.com/stretchr/testify v1.4.0/go.mod h1:j7eGeouHqKxXV5pUuKE4zz7dFj8WfuZ+81PSLYec5m4= github.com/timakin/bodyclose v0.0.0-20190407043127-4a873e97b2bb/go.mod h1:Qimiffbc6q9tBWlVV6x0P9sat/ao1xEkREYPPj9hphk= github.com/timakin/bodyclose v0.0.0-20190713050349-d96ec0dee822/go.mod h1:Qimiffbc6q9tBWlVV6x0P9sat/ao1xEkREYPPj9hphk= +github.com/timakin/bodyclose v0.0.0-20190721030226-87058b9bfcec h1:AmoEvWAO3nDx1MEcMzPh+GzOOIA5Znpv6++c7bePPY0= github.com/timakin/bodyclose v0.0.0-20190721030226-87058b9bfcec/go.mod h1:Qimiffbc6q9tBWlVV6x0P9sat/ao1xEkREYPPj9hphk= github.com/tmc/grpc-websocket-proxy v0.0.0-20190109142713-0ad062ec5ee5/go.mod h1:ncp9v5uamzpCO7NfCPTXjqaC+bZgJeR0sMTm6dMHP7U= github.com/ugorji/go v1.1.4/go.mod h1:uQMGLiO92mf5W77hV/PUCpI3pbzQx3CRekS0kk+RGrc= @@ -311,15 +399,20 @@ golang.org/x/crypto v0.0.0-20190313024323-a1f597ede03a/go.mod h1:djNgcEr1/C05ACk golang.org/x/crypto v0.0.0-20190510104115-cbcb75029529/go.mod h1:yigFU9vqHzYiE8UmvKecakEJjdnWj3jj499lnFckfCI= golang.org/x/crypto v0.0.0-20190605123033-f99c8df09eb5/go.mod h1:yigFU9vqHzYiE8UmvKecakEJjdnWj3jj499lnFckfCI= golang.org/x/crypto v0.0.0-20190611184440-5c40567a22f8/go.mod h1:yigFU9vqHzYiE8UmvKecakEJjdnWj3jj499lnFckfCI= +golang.org/x/crypto v0.0.0-20190701094942-4def268fd1a4 h1:HuIa8hRrWRSrqYzx1qI49NNxhdi2PrY7gxVSq1JjLDc= golang.org/x/crypto v0.0.0-20190701094942-4def268fd1a4/go.mod h1:yigFU9vqHzYiE8UmvKecakEJjdnWj3jj499lnFckfCI= +golang.org/x/crypto v0.0.0-20190820162420-60c769a6c586 h1:7KByu05hhLed2MO29w7p1XfZvZ13m8mub3shuVftRs0= +golang.org/x/crypto v0.0.0-20190820162420-60c769a6c586/go.mod h1:yigFU9vqHzYiE8UmvKecakEJjdnWj3jj499lnFckfCI= golang.org/x/exp v0.0.0-20190121172915-509febef88a4/go.mod h1:CJ0aWSM057203Lf6IL+f9T1iT9GByDxfZKAQTCR3kQA= golang.org/x/exp v0.0.0-20190306152737-a1d7652674e8/go.mod h1:CJ0aWSM057203Lf6IL+f9T1iT9GByDxfZKAQTCR3kQA= golang.org/x/exp v0.0.0-20190510132918-efd6b22b2522/go.mod h1:ZjyILWgesfNpC6sMxTJOJm9Kp84zZh5NQWvqDGG3Qr8= golang.org/x/exp v0.0.0-20190627132806-fd42eb6b336f/go.mod h1:ZjyILWgesfNpC6sMxTJOJm9Kp84zZh5NQWvqDGG3Qr8= golang.org/x/exp v0.0.0-20190718202018-cfdd5522f6f6/go.mod h1:JhuoJpWY28nO4Vef9tZUw9qufEGTyX1+7lmHxV5q5G4= +golang.org/x/exp v0.0.0-20190731235908-ec7cb31e5a56/go.mod h1:JhuoJpWY28nO4Vef9tZUw9qufEGTyX1+7lmHxV5q5G4= golang.org/x/image v0.0.0-20190227222117-0694c2d4d067/go.mod h1:kZ7UVZpmo3dzQBMxlp+ypCbDeSB+sBbTgSJuh5dn5js= golang.org/x/image v0.0.0-20190703141733-d6a02ce849c9/go.mod h1:FeLwcggjj3mMvU+oOTbSwawSJRM1uh48EjtB4UJZlP0= golang.org/x/image v0.0.0-20190729225735-1bd0cf576493/go.mod h1:FeLwcggjj3mMvU+oOTbSwawSJRM1uh48EjtB4UJZlP0= +golang.org/x/image v0.0.0-20190802002840-cff245a6509b/go.mod h1:FeLwcggjj3mMvU+oOTbSwawSJRM1uh48EjtB4UJZlP0= golang.org/x/lint v0.0.0-20181026193005-c67002cb31c3/go.mod h1:UVdnD1Gm6xHRNCYTkRU2/jEulfH38KcIWyp/GAMgvoE= golang.org/x/lint v0.0.0-20190227174305-5b3e6a55c961/go.mod h1:wehouNa3lNwaWXcvxsM5YxQ5yQlVC4a0KAMCusXpPoU= golang.org/x/lint v0.0.0-20190301231843-5614ed5bae6f/go.mod h1:UVdnD1Gm6xHRNCYTkRU2/jEulfH38KcIWyp/GAMgvoE= @@ -328,6 +421,7 @@ golang.org/x/lint v0.0.0-20190409202823-959b441ac422/go.mod h1:6SW0HCj/g11FgYtHl golang.org/x/mobile v0.0.0-20190312151609-d3739f865fa6/go.mod h1:z+o9i4GpDbdi3rU15maQ/Ox0txvL9dWGYEHz965HBQE= golang.org/x/mobile v0.0.0-20190711165009-e47acb2ca7f9/go.mod h1:E/iHnbuqvinMTCcRqshq8CkpyQDoeVncDDYHnLhea+o= golang.org/x/mobile v0.0.0-20190719004257-d2bd2a29d028/go.mod h1:E/iHnbuqvinMTCcRqshq8CkpyQDoeVncDDYHnLhea+o= +golang.org/x/mobile v0.0.0-20190814143026-e8b3e6111d02/go.mod h1:z5wpDCy2wbnXyFdvEuY3LhY9gBUL86/IOILm+Hsjx+E= golang.org/x/mod v0.0.0-20190513183733-4bf6d317e70e/go.mod h1:mXi4GBBbnImb6dmsKGUJ2LatrhH/nqhxcFungHvyanc= golang.org/x/mod v0.1.0/go.mod h1:0QHyrYULN0/3qlju5TqG8bIK38QM8yzMo5ekMj3DlcY= golang.org/x/net v0.0.0-20170915142106-8351a756f30f/go.mod h1:mL1N/T3taQHkDXs73rZJwtUhF3w3ftmwwsq0BUmARs4= @@ -349,10 +443,14 @@ golang.org/x/net v0.0.0-20190603091049-60506f45cf65/go.mod h1:HSz+uSET+XFnRR8LxR golang.org/x/net v0.0.0-20190613194153-d28f0bde5980/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s= golang.org/x/net v0.0.0-20190620200207-3b0461eec859/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s= golang.org/x/net v0.0.0-20190628185345-da137c7871d7/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s= +golang.org/x/net v0.0.0-20190724013045-ca1201d0de80 h1:Ao/3l156eZf2AW5wK8a7/smtodRU+gha3+BeqJ69lRk= golang.org/x/net v0.0.0-20190724013045-ca1201d0de80/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s= +golang.org/x/net v0.0.0-20190813141303-74dc4d7220e7 h1:fHDIZ2oxGnUZRN6WgWFCbYBjH9uqVPRCUVUDhs0wnbA= +golang.org/x/net v0.0.0-20190813141303-74dc4d7220e7/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s= golang.org/x/oauth2 v0.0.0-20180821212333-d2e6202438be/go.mod h1:N/0e6XlmueqKjAGxoOufVs8QHGRruUQn6yWY3a++T0U= golang.org/x/oauth2 v0.0.0-20190226205417-e64efc72b421/go.mod h1:gOpvHmFTYa4IltrdGE7lF6nIHvwfUNPOp7c8zoXwtLw= golang.org/x/oauth2 v0.0.0-20190402181905-9f3314589c9a/go.mod h1:gOpvHmFTYa4IltrdGE7lF6nIHvwfUNPOp7c8zoXwtLw= +golang.org/x/oauth2 v0.0.0-20190604053449-0f29369cfe45 h1:SVwTIAaPC2U/AvvLNZ2a7OVsmBpC8L5BlwK1whH3hm0= golang.org/x/oauth2 v0.0.0-20190604053449-0f29369cfe45/go.mod h1:gOpvHmFTYa4IltrdGE7lF6nIHvwfUNPOp7c8zoXwtLw= golang.org/x/sync v0.0.0-20180314180146-1d60e4601c6f/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= golang.org/x/sync v0.0.0-20181108010431-42b317875d0f/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= @@ -377,13 +475,19 @@ golang.org/x/sys v0.0.0-20190606165138-5da285871e9c/go.mod h1:h1NjWce9XRLGQEsW7w golang.org/x/sys v0.0.0-20190616124812-15dcb6c0061f/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20190624142023-c5567b49c5d0/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20190712062909-fae7ac547cb7/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= +golang.org/x/sys v0.0.0-20190726091711-fc99dfbffb4e h1:D5TXcfTk7xF7hvieo4QErS3qqCB4teTffacDWr7CI+0= golang.org/x/sys v0.0.0-20190726091711-fc99dfbffb4e/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= +golang.org/x/sys v0.0.0-20190801041406-cbf593c0f2f3/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= +golang.org/x/sys v0.0.0-20190813064441-fde4db37ae7a h1:aYOabOQFp6Vj6W1F80affTUvO9UxmJRx8K0gsfABByQ= +golang.org/x/sys v0.0.0-20190813064441-fde4db37ae7a/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/text v0.0.0-20170915090833-1cbadb444a80/go.mod h1:NqM8EUOU14njkJ3fqMW+pc6Ldnwhi/IjpwHt7yyuwOQ= golang.org/x/text v0.3.0/go.mod h1:NqM8EUOU14njkJ3fqMW+pc6Ldnwhi/IjpwHt7yyuwOQ= golang.org/x/text v0.3.1-0.20180807135948-17ff2d5776d2/go.mod h1:NqM8EUOU14njkJ3fqMW+pc6Ldnwhi/IjpwHt7yyuwOQ= +golang.org/x/text v0.3.2 h1:tW2bmiBqwgJj/UpqtC8EpXEZVYOwU0yG4iWbprSVAcs= golang.org/x/text v0.3.2/go.mod h1:bEr9sfX3Q8Zfm5fL9x+3itogRgK3+ptLWKqgva+5dAk= golang.org/x/time v0.0.0-20161028155119-f51c12702a4d/go.mod h1:tRJNPiyCQ0inRvYxbN9jk5I+vvW/OXSQhTDSoE431IQ= golang.org/x/time v0.0.0-20181108054448-85acf8d2951c/go.mod h1:tRJNPiyCQ0inRvYxbN9jk5I+vvW/OXSQhTDSoE431IQ= +golang.org/x/time v0.0.0-20190308202827-9d24e82272b4 h1:SvFZT6jyqRaOeXpc5h/JSfZenJ2O330aBsf7JfSUXmQ= golang.org/x/time v0.0.0-20190308202827-9d24e82272b4/go.mod h1:tRJNPiyCQ0inRvYxbN9jk5I+vvW/OXSQhTDSoE431IQ= golang.org/x/tools v0.0.0-20170915040203-e531a2a1c15f/go.mod h1:n7NCudcB/nEzxVGmLbDWY5pfWTLqBcC2KZ6jyYvM4mQ= golang.org/x/tools v0.0.0-20180221164845-07fd8470d635/go.mod h1:n7NCudcB/nEzxVGmLbDWY5pfWTLqBcC2KZ6jyYvM4mQ= @@ -412,8 +516,14 @@ golang.org/x/tools v0.0.0-20190628153133-6cdbf07be9d0/go.mod h1:/rFqwRUd4F7ZHNgw golang.org/x/tools v0.0.0-20190715172921-9e48ab1d90cd/go.mod h1:jcCCGcm9btYwXyDqrUWc6MKQKKGJCWEQ3AfLSRIbEuI= golang.org/x/tools v0.0.0-20190719005602-e377ae9d6386/go.mod h1:jcCCGcm9btYwXyDqrUWc6MKQKKGJCWEQ3AfLSRIbEuI= golang.org/x/tools v0.0.0-20190729092621-ff9f1409240a/go.mod h1:jcCCGcm9btYwXyDqrUWc6MKQKKGJCWEQ3AfLSRIbEuI= +golang.org/x/tools v0.0.0-20190808195139-e713427fea3f/go.mod h1:b+2E5dAYhXwXZwtnZ6UAqBI28+e2cm9otk0dWdXHAEo= +golang.org/x/tools v0.0.0-20190822000311-fc82fb2afd64 h1:4EN1tY9aQxwLGYHWT5WdQN56Xzbwlg2UTINDbZ04l10= +golang.org/x/tools v0.0.0-20190822000311-fc82fb2afd64/go.mod h1:b+2E5dAYhXwXZwtnZ6UAqBI28+e2cm9otk0dWdXHAEo= +golang.org/x/xerrors v0.0.0-20190717185122-a985d3407aa7/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0= google.golang.org/api v0.4.0/go.mod h1:8k5glujaEP+g9n7WNsDg8QP6cUVNI86fCNMcbazEtwE= google.golang.org/api v0.7.0/go.mod h1:WtwebWUNSVBH/HAw79HIFXZNqEvBhG+Ra+ax0hx3E3M= +google.golang.org/api v0.8.0/go.mod h1:o4eAsZoiT+ibD93RtjEohWalFOjRDx6CVaqeizhEnKg= +google.golang.org/api v0.9.0/go.mod h1:o4eAsZoiT+ibD93RtjEohWalFOjRDx6CVaqeizhEnKg= google.golang.org/appengine v1.1.0/go.mod h1:EbEs0AVv82hx2wNQdGPgUI5lhzA/G0D9YwlJXL52JkM= google.golang.org/appengine v1.4.0/go.mod h1:xpcJRLb0r/rnEns0DIKYYv+WjYCduHsrkT7/EB5XEv4= google.golang.org/appengine v1.5.0/go.mod h1:xpcJRLb0r/rnEns0DIKYYv+WjYCduHsrkT7/EB5XEv4= @@ -425,13 +535,20 @@ google.golang.org/genproto v0.0.0-20190425155659-357c62f0e4bb/go.mod h1:VzzqZJRn google.golang.org/genproto v0.0.0-20190502173448-54afdca5d873/go.mod h1:VzzqZJRnGkLBvHegQrXjBqPurQTc5/KpmUdxsrq26oE= google.golang.org/genproto v0.0.0-20190626174449-989357319d63/go.mod h1:z3L6/3dTEVtUr6QSP8miRzeRqwQOioJ9I66odjN4I7s= google.golang.org/genproto v0.0.0-20190708153700-3bdd9d9f5532/go.mod h1:z3L6/3dTEVtUr6QSP8miRzeRqwQOioJ9I66odjN4I7s= +google.golang.org/genproto v0.0.0-20190716160619-c506a9f90610 h1:Ygq9/SRJX9+dU0WCIICM8RkWvDw03lvB77hrhJnpxfU= google.golang.org/genproto v0.0.0-20190716160619-c506a9f90610/go.mod h1:DMBHOl98Agz4BDEuKkezgsaosCRResVns1a3J2ZsMNc= +google.golang.org/genproto v0.0.0-20190801165951-fa694d86fc64/go.mod h1:DMBHOl98Agz4BDEuKkezgsaosCRResVns1a3J2ZsMNc= +google.golang.org/genproto v0.0.0-20190819201941-24fa4b261c55 h1:gSJIx1SDwno+2ElGhA4+qG2zF97qiUzTM+rQ0klBOcE= +google.golang.org/genproto v0.0.0-20190819201941-24fa4b261c55/go.mod h1:DMBHOl98Agz4BDEuKkezgsaosCRResVns1a3J2ZsMNc= google.golang.org/grpc v1.19.0/go.mod h1:mqu4LbDTu4XGKhr4mRzUsmM4RtVoemTSY81AxZiDr8c= google.golang.org/grpc v1.20.1/go.mod h1:10oTOabMzJvdu6/UiuZezV6QK5dSlG84ov/aaiqXj38= google.golang.org/grpc v1.21.0/go.mod h1:oYelfM1adQP15Ek0mdvEgi9Df8B9CZIaU1084ijfRaM= google.golang.org/grpc v1.21.1/go.mod h1:oYelfM1adQP15Ek0mdvEgi9Df8B9CZIaU1084ijfRaM= google.golang.org/grpc v1.22.0/go.mod h1:Y5yQAOtifL1yxbo5wqy6BxZv8vAUGQwXBOALyacEbxg= +google.golang.org/grpc v1.22.1 h1:/7cs52RnTJmD43s3uxzlq2U7nqVTd/37viQwMrMNlOM= google.golang.org/grpc v1.22.1/go.mod h1:Y5yQAOtifL1yxbo5wqy6BxZv8vAUGQwXBOALyacEbxg= +google.golang.org/grpc v1.23.0 h1:AzbTB6ux+okLTzP8Ru1Xs41C303zdcfEht7MQnYJt5A= +google.golang.org/grpc v1.23.0/go.mod h1:Y5yQAOtifL1yxbo5wqy6BxZv8vAUGQwXBOALyacEbxg= gopkg.in/airbrake/gobrake.v2 v2.0.9/go.mod h1:/h5ZAUhDkGaJfjzjKLSjv6zCL6O0LLBxU4K+aSYdM/U= gopkg.in/alecthomas/kingpin.v2 v2.2.6/go.mod h1:FMv+mEhP44yOT+4EoQTLFTRgOQ1FBLkstjWtayDeSgw= gopkg.in/check.v1 v0.0.0-20161208181325-20d25e280405/go.mod h1:Co6ibVJAznAaIkqp8huTwlJQCZ016jof/cbN4VW5Yz0= @@ -439,35 +556,50 @@ gopkg.in/check.v1 v1.0.0-20180628173108-788fd7840127/go.mod h1:Co6ibVJAznAaIkqp8 gopkg.in/errgo.v2 v2.1.0/go.mod h1:hNsd1EY+bozCKY1Ytp96fpM3vjJbqLJn88ws8XvfDNI= gopkg.in/fsnotify.v1 v1.4.7/go.mod h1:Tz8NjZHkW78fSQdbUxIjBTcgA1z1m8ZHf0WmKUhAMys= gopkg.in/gemnasium/logrus-airbrake-hook.v2 v2.1.2/go.mod h1:Xk6kEKp8OKb+X14hQBKWaSkCsqBpgog8nAV2xsGOxlo= +gopkg.in/inf.v0 v0.9.0 h1:3zYtXIO92bvsdS3ggAdA8Gb4Azj0YU+TVY1uGYNFA8o= gopkg.in/inf.v0 v0.9.0/go.mod h1:cWUDdTG/fYaXco+Dcufb5Vnc6Gp2YChqWtbxRZE0mXw= +gopkg.in/natefinch/lumberjack.v2 v2.0.0 h1:1Lc07Kr7qY4U2YPouBjpCLxpiyxIVoxqXgkXLknAOE8= gopkg.in/natefinch/lumberjack.v2 v2.0.0/go.mod h1:l0ndWWf7gzL7RNwBG7wST/UCcT4T24xpD6X8LsfU/+k= gopkg.in/resty.v1 v1.12.0/go.mod h1:mDo4pnntr5jdWRML875a/NmxYqAlA73dVijT2AXvQQo= gopkg.in/tomb.v1 v1.0.0-20141024135613-dd632973f1e7/go.mod h1:dt/ZhP58zS4L8KSrWDmTeBkI65Dw0HsyUHuEVlX15mw= gopkg.in/yaml.v2 v2.0.0-20170812160011-eb3733d160e7/go.mod h1:JAlM8MvJe8wmxCU4Bli9HhUf9+ttbYbLASfIpnQbh74= gopkg.in/yaml.v2 v2.2.1/go.mod h1:hI93XBmqTisBFMUTm0b8Fm+jr3Dg1NNxqwp+5A1VGuI= +gopkg.in/yaml.v2 v2.2.2 h1:ZCJp+EgiOT7lHqUV2J862kp8Qj64Jo6az82+3Td9dZw= gopkg.in/yaml.v2 v2.2.2/go.mod h1:hI93XBmqTisBFMUTm0b8Fm+jr3Dg1NNxqwp+5A1VGuI= honnef.co/go/tools v0.0.0-20190102054323-c2f93a96b099/go.mod h1:rf3lG4BRIbNafJWhAfAdb/ePZxsR/4RtNHQocxwk9r4= honnef.co/go/tools v0.0.0-20190106161140-3f1c8253044a/go.mod h1:rf3lG4BRIbNafJWhAfAdb/ePZxsR/4RtNHQocxwk9r4= honnef.co/go/tools v0.0.0-20190418001031-e561f6794a2a/go.mod h1:rf3lG4BRIbNafJWhAfAdb/ePZxsR/4RtNHQocxwk9r4= honnef.co/go/tools v0.0.0-20190523083050-ea95bdfd59fc/go.mod h1:rf3lG4BRIbNafJWhAfAdb/ePZxsR/4RtNHQocxwk9r4= honnef.co/go/tools v0.0.1-2019.2.2/go.mod h1:a3bituU0lyd329TUQxRnasdCoJDkEUEAqEt0JzvZhAg= +k8s.io/api v0.0.0-20190627205229-acea843d18eb h1:GPqcjfATaKQE9eB8VRN0cpueOB7NQZ7ZuAGy9j2fZoo= k8s.io/api v0.0.0-20190627205229-acea843d18eb/go.mod h1:dNIey7Yoxc4u51YMhX4E5Cs6xiuGvXIGghzAZ9RzR88= k8s.io/apimachinery v0.0.0-20190627205106-bc5732d141a8/go.mod h1:T1Vra67tZppnhHB3gqfn8/pmTb9EMVZXLvaevIRo6cU= +k8s.io/apimachinery v0.0.0-20190628045107-49e757626700 h1:KfcEdIwnKQSmbTjPEuoJ5COKHsjVgJt0pWGAyeStCqU= k8s.io/apimachinery v0.0.0-20190628045107-49e757626700/go.mod h1:T1Vra67tZppnhHB3gqfn8/pmTb9EMVZXLvaevIRo6cU= +k8s.io/client-go v0.0.0-20190628005442-8873628f237b h1:MJXXIXQvidxVqCCyL8hLH/hPIYTAB4BIFrkVodP+Uuc= k8s.io/client-go v0.0.0-20190628005442-8873628f237b/go.mod h1:bEK8WFVy0Z0hvIzC2kqoZwu2H95SMfMkn5LL5H0Uh3U= +k8s.io/csi-api v0.0.0-20190313123203-94ac839bf26c h1:m3xih+9aI7l7Z/PvwzizV1J4vBvaUpkHrmagnGa5UNg= k8s.io/csi-api v0.0.0-20190313123203-94ac839bf26c/go.mod h1:GH854hXKH+vaEO06X/DMiE/o3rVO1aw8dXJJpP7awjA= k8s.io/klog v0.3.0/go.mod h1:Gq+BEi5rUBO/HRz0bTSXDUcqjScdoY3a9IHpCEIOOfk= k8s.io/klog v0.3.1/go.mod h1:Gq+BEi5rUBO/HRz0bTSXDUcqjScdoY3a9IHpCEIOOfk= +k8s.io/klog v0.3.3 h1:niceAagH1tzskmaie/icWd7ci1wbG7Bf2c6YGcQv+3c= k8s.io/klog v0.3.3/go.mod h1:Gq+BEi5rUBO/HRz0bTSXDUcqjScdoY3a9IHpCEIOOfk= +k8s.io/kube-openapi v0.0.0-20190228160746-b3a7cee44a30 h1:TRb4wNWoBVrH9plmkp2q86FIDppkbrEXdXlxU3a3BMI= k8s.io/kube-openapi v0.0.0-20190228160746-b3a7cee44a30/go.mod h1:BXM9ceUBTj2QnfH2MK1odQs778ajze1RxcmP6S8RVVc= k8s.io/utils v0.0.0-20190221042446-c2654d5206da/go.mod h1:8k8uAuAQ0rXslZKaEWd0c3oVhZz7sSzSiPnVZayjIX0= +k8s.io/utils v0.0.0-20190607212802-c55fbcfc754a h1:2jUDc9gJja832Ftp+QbDV0tVhQHMISFn01els+2ZAcw= k8s.io/utils v0.0.0-20190607212802-c55fbcfc754a/go.mod h1:sZAwmy6armz5eXlNoLmJcl4F1QuKu7sr+mFQ0byX7Ew= +mvdan.cc/interfacer v0.0.0-20180901003855-c20040233aed h1:WX1yoOaKQfddO/mLzdV4wptyWgoH/6hwLs7QHTixo0I= mvdan.cc/interfacer v0.0.0-20180901003855-c20040233aed/go.mod h1:Xkxe497xwlCKkIaQYRfC7CSLworTXY9RMqwhhCm+8Nc= +mvdan.cc/lint v0.0.0-20170908181259-adc824a0674b h1:DxJ5nJdkhDlLok9K6qO+5290kphDJbHOQO1DFFFTeBo= mvdan.cc/lint v0.0.0-20170908181259-adc824a0674b/go.mod h1:2odslEg/xrtNQqCYg2/jCoyKnw3vv5biOc3JnIcYfL4= mvdan.cc/unparam v0.0.0-20190124213536-fbb59629db34/go.mod h1:H6SUd1XjIs+qQCyskXg5OFSrilMRUkD8ePJpHKDPaeY= mvdan.cc/unparam v0.0.0-20190310220240-1b9ccfa71afe/go.mod h1:BnhuWBAqxH3+J5bDybdxgw5ZfS+DsVd4iylsKQePN8o= +mvdan.cc/unparam v0.0.0-20190720180237-d51796306d8f h1:Cq7MalBHYACRd6EesksG1Q8EoIAKOsiZviGKbOLIej4= mvdan.cc/unparam v0.0.0-20190720180237-d51796306d8f/go.mod h1:4G1h5nDURzA3bwVMZIVpwbkw+04kSxk3rAtzlimaUJw= rsc.io/binaryregexp v0.2.0/go.mod h1:qTv7/COck+e2FymRvadv62gMdZztPaShugOCi3I+8D8= +sigs.k8s.io/yaml v1.1.0 h1:4A07+ZFc2wgJwo8YNlQpr1rVlgUDlxXHhPJciaPY5gs= sigs.k8s.io/yaml v1.1.0/go.mod h1:UJmg0vDUVViEyp3mgSv9WPwZCDxu4rQW1olrI1uml+o= sourcegraph.com/sqs/pbtypes v0.0.0-20180604144634-d3ebe8f20ae4/go.mod h1:ketZ/q3QxT9HOBeFhu6RdvsftgpsbFHBF5Cas6cDKZ0= +sourcegraph.com/sqs/pbtypes v1.0.0 h1:f7lAwqviDEGvON4kRv0o5V7FT/IQK+tbkF664XMbP3o= sourcegraph.com/sqs/pbtypes v1.0.0/go.mod h1:3AciMUv4qUuRHRHhOG4TZOB+72GdPVz5k+c648qsFS4= diff --git a/pkg/provisioner/claim.go b/pkg/provisioner/claim.go index 555441b..1408aec 100644 --- a/pkg/provisioner/claim.go +++ b/pkg/provisioner/claim.go @@ -20,7 +20,7 @@ import ( "fmt" "strings" - "github.com/hpe-storage/common-host-libs/util" + log "github.com/hpe-storage/common-host-libs/logger" api_v1 "k8s.io/api/core/v1" meta_v1 "k8s.io/apimachinery/pkg/apis/meta/v1" "k8s.io/apimachinery/pkg/runtime" @@ -58,7 +58,7 @@ func (p *Provisioner) newClaimController() (cache.Store, cache.Controller) { func (p *Provisioner) addedClaim(t interface{}) { claim, err := getPersistentVolumeClaim(t) if err != nil { - util.LogError.Printf("Failed to get persistent volume claim from %v, %s", t, err.Error()) + log.Errorf("Failed to get persistent volume claim from %v, %s", t, err.Error()) return } go p.processAddedClaim(claim) @@ -67,7 +67,7 @@ func (p *Provisioner) addedClaim(t interface{}) { func (p *Provisioner) processAddedClaim(claim *api_v1.PersistentVolumeClaim) { // is this a state we can do anything about if claim.Status.Phase != api_v1.ClaimPending { - util.LogInfo.Printf("pvc %s was not in pending phase. current phase=%s - skipping", claim.Name, claim.Status.Phase) + log.Infof("pvc %s was not in pending phase. current phase=%s - skipping", claim.Name, claim.Status.Phase) return } @@ -75,15 +75,15 @@ func (p *Provisioner) processAddedClaim(claim *api_v1.PersistentVolumeClaim) { className := getClaimClassName(claim) class, err := p.getClass(className) if err != nil { - util.LogError.Printf("error getting class named %s for pvc %s. err=%v", className, claim.Name, err) + log.Errorf("error getting class named %s for pvc %s. err=%v", className, claim.Name, err) return } if !strings.HasPrefix(class.Provisioner, FlexVolumeProvisioner) && !strings.HasPrefix(class.Provisioner, CsiProvisioner) { - util.LogInfo.Printf("class named %s in pvc %s did not refer to a supported provisioner (name must begin with %s or %s). current provisioner=%s - skipping", className, claim.Name, CsiProvisioner, FlexVolumeProvisioner, class.Provisioner) + log.Infof("class named %s in pvc %s did not refer to a supported provisioner (name must begin with %s or %s). current provisioner=%s - skipping", className, claim.Name, CsiProvisioner, FlexVolumeProvisioner, class.Provisioner) return } - util.LogInfo.Printf("processAddedClaim: provisioner:%s pvc:%s class:%s", class.Provisioner, claim.Name, className) + log.Infof("processAddedClaim: provisioner:%s pvc:%s class:%s", class.Provisioner, claim.Name, className) p.addMessageChan(fmt.Sprintf("%s", claim.UID), nil) p.provisionVolume(claim, class) } @@ -91,10 +91,10 @@ func (p *Provisioner) processAddedClaim(claim *api_v1.PersistentVolumeClaim) { func (p *Provisioner) updatedClaim(oldT interface{}, newT interface{}) { claim, err := getPersistentVolumeClaim(newT) if err != nil { - util.LogError.Printf("Oops - %s\n", err.Error()) + log.Errorf("Oops - %s\n", err.Error()) return } - util.LogDebug.Printf("updatedClaim: pvc %s current phase=%s", claim.Name, claim.Status.Phase) + log.Debugf("updatedClaim: pvc %s current phase=%s", claim.Name, claim.Status.Phase) go p.sendUpdate(claim) } @@ -127,8 +127,8 @@ func getPersistentVolumeClaim(t interface{}) (*api_v1.PersistentVolumeClaim, err } func (p *Provisioner) getClaimFromPVCName(nameSpace, claimName string) (*api_v1.PersistentVolumeClaim, error) { - util.LogDebug.Printf(">>>>> getClaimFromPVCNames called with %s/%s", nameSpace, claimName) - defer util.LogDebug.Printf("<<<<< getClaimFromPVCName") + log.Debugf(">>>>> getClaimFromPVCNames called with %s/%s", nameSpace, claimName) + defer log.Debug("<<<<< getClaimFromPVCName") if p.claimsStore == nil { return nil, fmt.Errorf("requested pvc %s/%s was not found because claimStore was nil", nameSpace, claimName) } @@ -137,27 +137,27 @@ func (p *Provisioner) getClaimFromPVCName(nameSpace, claimName string) (*api_v1. } claimInterface, found, err := p.claimsStore.GetByKey(nameSpace + "/" + claimName) if err != nil { - util.LogError.Printf("Error to retrieve pvc %s/%s : %s", nameSpace, claimName, err.Error()) + log.Errorf("Error to retrieve pvc %s/%s : %s", nameSpace, claimName, err.Error()) return nil, fmt.Errorf("Error to retrieve pvc %s/%s : %s", nameSpace, claimName, err.Error()) } if !found { - util.LogError.Printf("requested pvc %s/%s was not found", nameSpace, claimName) + log.Errorf("requested pvc %s/%s was not found", nameSpace, claimName) return nil, fmt.Errorf("requested pvc %s/%s was not found", nameSpace, claimName) } var claim *api_v1.PersistentVolumeClaim claim, err = getPersistentVolumeClaim(claimInterface) if err != nil { - util.LogError.Printf("requested pvc %s/%s was not found : %s", nameSpace, claimName, err.Error()) + log.Errorf("requested pvc %s/%s was not found : %s", nameSpace, claimName, err.Error()) return nil, fmt.Errorf("requested pvc %s/%s was not found : %s", nameSpace, claimName, err.Error()) } - util.LogDebug.Printf("claim found namespace :%s name: %s", claim.Namespace, claim.Name) + log.Debugf("claim found namespace :%s name: %s", claim.Namespace, claim.Name) return claim, nil } func (p *Provisioner) getClaimOverrideOptions(claim *api_v1.PersistentVolumeClaim, overrides []string, optionsMap map[string]interface{}, provisioner string) (map[string]interface{}, error) { - util.LogDebug.Printf(">>>> getClaimOverrideOptions for %s", provisioner) - defer util.LogDebug.Printf("<<<<< getClaimOverrideOptions") + log.Debugf(">>>> getClaimOverrideOptions for %s", provisioner) + defer log.Debug("<<<<< getClaimOverrideOptions") provisionerName := provisioner for _, override := range overrides { for key, annotation := range claim.Annotations { @@ -165,12 +165,12 @@ func (p *Provisioner) getClaimOverrideOptions(claim *api_v1.PersistentVolumeClai if valOpt, ok := optionsMap[override]; ok { if override == "size" || override == "sizeInGiB" { // do not allow override of size and sizeInGiB - util.LogDebug.Printf("override of size and sizeInGiB is not permitted, default to claim capacity of %v", valOpt) + log.Debugf("override of size and sizeInGiB is not permitted, default to claim capacity of %v", valOpt) p.eventRecorder.Event(claim, api_v1.EventTypeNormal, "ProvisionStorage", fmt.Errorf("override of size and sizeInGiB is not permitted, default to claim capacity of %v", valOpt).Error()) continue } } - util.LogDebug.Printf("adding key: %v with override value: %v", override, annotation) + log.Debugf("adding key: %v with override value: %v", override, annotation) optionsMap[override] = annotation } } @@ -199,7 +199,7 @@ func (p *Provisioner) getClaimNameSpace(claim *api_v1.PersistentVolumeClaim) str if claim != nil && claim.Namespace != "" { nameSpace = claim.Namespace } - util.LogDebug.Printf("namespace of the claim %s is : %s", claim.Name, nameSpace) + log.Debugf("namespace of the claim %s is : %s", claim.Name, nameSpace) return nameSpace } @@ -211,10 +211,10 @@ func (p *Provisioner) getPVFromPVCAnnotation(claim *api_v1.PersistentVolumeClaim } namespace := p.getClaimNameSpace(claim) - util.LogDebug.Printf("%s%s: %s was found in claim annotations", provisioner, cloneOfPVC, pvcToClone) + log.Debugf("%s%s: %s was found in claim annotations", provisioner, cloneOfPVC, pvcToClone) pvName, err := p.getVolumeNameFromClaimName(namespace, pvcToClone) - util.LogDebug.Printf("pvc %s/%s maps to pv %s", namespace, pvcToClone, pvName) + log.Debugf("pvc %s/%s maps to pv %s", namespace, pvcToClone, pvName) if err != nil { return "", fmt.Errorf("unable to retrieve pvc %s/%s : %s", namespace, pvcToClone, err.Error()) } @@ -225,8 +225,8 @@ func (p *Provisioner) getPVFromPVCAnnotation(claim *api_v1.PersistentVolumeClaim } func (p *Provisioner) checkClaimDataSorce(claim *api_v1.PersistentVolumeClaim) (bool, error) { - util.LogDebug.Printf(">>>>> checkClaimDataSorce called for PVC %s", claim.Name) - defer util.LogDebug.Printf("<<<<<< checkClaimDataSorce") + log.Debugf(">>>>> checkClaimDataSorce called for PVC %s", claim.Name) + defer log.Debug("<<<<<< checkClaimDataSorce") if claim.Spec.DataSource == nil { return false, nil } diff --git a/pkg/provisioner/class.go b/pkg/provisioner/class.go index 4ae7283..8dfb6b1 100644 --- a/pkg/provisioner/class.go +++ b/pkg/provisioner/class.go @@ -18,7 +18,7 @@ package provisioner import ( "fmt" - "github.com/hpe-storage/common-host-libs/util" + log "github.com/hpe-storage/common-host-libs/logger" storage_v1 "k8s.io/api/storage/v1" storage_v1beta1 "k8s.io/api/storage/v1beta1" meta_v1 "k8s.io/apimachinery/pkg/apis/meta/v1" @@ -69,32 +69,32 @@ func (p *Provisioner) newClassReflector(kubeClient *kubernetes.Clientset) (cache func (p *Provisioner) getClass(className string) (*storage_v1.StorageClass, error) { classObj, found, err := p.classStore.GetByKey(className) if err != nil { - util.LogError.Printf("error getting class named %s. err=%v", className, err) + log.Errorf("error getting class named %s. err=%v", className, err) return nil, err } if !found { - util.LogError.Printf("unable to find a class named %s", className) + log.Errorf("unable to find a class named %s", className) return nil, fmt.Errorf("unable to find a class named %s", className) } return getStorageClass(classObj) } func (p *Provisioner) getClassOverrideOptions(optionsMap map[string]string) []string { - util.LogDebug.Print(">>>> getClassOverrideOptions") - defer util.LogDebug.Print("<<<<< getClassOverrideOptions") + log.Debug(">>>> getClassOverrideOptions") + defer log.Debug("<<<<< getClassOverrideOptions") var overridekeys []string if val, ok := optionsMap[allowOverrides]; ok { - util.LogDebug.Printf("allowOverrides %s", val) + log.Debugf("allowOverrides %s", val) for _, v := range strings.Split(val, ",") { // remove leading and trailing spaces from value before Trim (needed to support multiline overrides e.g ", ") v = strings.TrimSpace(v) if len(v) > 0 && v != "" { - util.LogDebug.Printf("processing key: %v", v) + log.Debugf("processing key: %v", v) overridekeys = append(overridekeys, v) } } } - util.LogDebug.Printf("resulting override keys :%#v", overridekeys) + log.Debugf("resulting override keys :%#v", overridekeys) return overridekeys } diff --git a/pkg/provisioner/csi.go b/pkg/provisioner/csi.go index 061530f..1198244 100644 --- a/pkg/provisioner/csi.go +++ b/pkg/provisioner/csi.go @@ -13,7 +13,7 @@ import ( "github.com/kubernetes-csi/csi-lib-utils/connection" "github.com/kubernetes-csi/csi-lib-utils/rpc" - "github.com/hpe-storage/common-host-libs/util" + log "github.com/hpe-storage/common-host-libs/logger" api_v1 "k8s.io/api/core/v1" storage_v1 "k8s.io/api/storage/v1" meta_v1 "k8s.io/apimachinery/pkg/apis/meta/v1" @@ -89,10 +89,10 @@ func (c *createCsiVol) Run() (name interface{}, err error) { defer cancel() c.createVolumeResponse, err = c.client.CreateVolume(ctx, c.createRequest) if err != nil { - util.LogError.Printf("failed to create csi volume %s, error=%s", c.requestedName, err.Error()) + log.Errorf("failed to create csi volume %s, error=%s", c.requestedName, err.Error()) return nil, err } - util.LogInfo.Printf("created csi volume %v", c.createVolumeResponse) + log.Infof("created csi volume %v", c.createVolumeResponse) name, ok := c.createVolumeResponse.Volume.VolumeContext["name"] if !ok { return nil, fmt.Errorf("unable to retrieve the name from csi volume %v", c.createVolumeResponse) @@ -109,7 +109,7 @@ func (c *createCsiVol) Run() (name interface{}, err error) { fstype, ok := c.createRequest.Parameters[csiFsTypeParameter] if !ok { // the fstype parameter is not present, default to xfs - util.LogDebug.Printf("%s is not set. Setting the fstype to %s", csiFsTypeParameter, defaultFSType) + log.Debugf("%s is not set. Setting the fstype to %s", csiFsTypeParameter, defaultFSType) fstype = defaultFSType } c.pv.Spec.PersistentVolumeSource.CSI.FSType = fstype @@ -122,7 +122,7 @@ func (c *createCsiVol) Run() (name interface{}, err error) { if respCap < volSizeBytes { capErr := fmt.Errorf("created volume capacity %v less than requested capacity %v", respCap, volSizeBytes) // Log error and invoke volume delete - util.LogError.Printf("Volume %s with id %s created with insufficient size. So, deleting it", + log.Errorf("Volume %s with id %s created with insufficient size. So, deleting it", c.createRequest.GetName(), c.createVolumeResponse.GetVolume().GetVolumeId()) delReq := &csi_spec.DeleteVolumeRequest{ VolumeId: c.createVolumeResponse.GetVolume().GetVolumeId(), @@ -159,7 +159,7 @@ func (d *deleteCsiVol) Run() (name interface{}, err error) { defer cancel() d.deleteVolumeResponse, err = d.client.DeleteVolume(ctx, d.deleteRequest) if err != nil { - util.LogError.Printf("failed to delete csi volume %s, error=%s", d.requestedName, err.Error()) + log.Errorf("failed to delete csi volume %s, error=%s", d.requestedName, err.Error()) } return nil, err } @@ -170,17 +170,17 @@ func (d *deleteCsiVol) Rollback() (err error) { // GetCsiDriverClient : get the csiDriverClient func GetCsiDriverClient() (csi_spec.ControllerClient, error) { - util.LogDebug.Print(">>>> GetCsiDriverClient called") - defer util.LogDebug.Print("<<<<<< GetCsiDriverClient") + log.Debug(">>>> GetCsiDriverClient called") + defer log.Debug("<<<<<< GetCsiDriverClient") csiConn, err := connection.Connect(CsiEndpoint) if err != nil { - util.LogError.Printf("unable to connect to CsiEndpoint %s err=%s", CsiEndpoint, err.Error()) + log.Errorf("unable to connect to CsiEndpoint %s err=%s", CsiEndpoint, err.Error()) return nil, err } err = rpc.ProbeForever(csiConn, csiTimeout) if err != nil { - util.LogError.Printf(err.Error()) + log.Errorf(err.Error()) return nil, err } @@ -189,7 +189,7 @@ func GetCsiDriverClient() (csi_spec.ControllerClient, error) { // Find driver name and validate it is csiProvisioner csiDriver, err := rpc.GetDriverName(ctx, csiConn) if err != nil { - util.LogError.Printf(err.Error()) + log.Errorf(err.Error()) return nil, err } if csiDriver != CsiProvisioner { @@ -309,8 +309,8 @@ func isPvcModeBlock(claim *api_v1.PersistentVolumeClaim) bool { } func (p *Provisioner) getCredentials(ref *api_v1.SecretReference) (map[string]string, error) { - util.LogDebug.Printf(">>>>>>>> getCredentials called") - defer util.LogDebug.Printf("<<<<<<< getCredentials") + log.Debug(">>>>>>>> getCredentials called") + defer log.Debug("<<<<<<< getCredentials") if ref == nil { return nil, nil } @@ -342,14 +342,14 @@ func (p *Provisioner) getAccessTypeMount(fsType string, mountFlags []string) *cs // getVolumeCapabilities constructs volume capabilities with appropriate volume access type func (p *Provisioner) getVolumeCapabilities(class *storage_v1.StorageClass, claim *api_v1.PersistentVolumeClaim) ([]*csi_spec.VolumeCapability, error) { - util.LogDebug.Printf(">>>>> getVolumeCapabilities, claim: %+v", claim) - defer util.LogDebug.Printf("<<<<<<< getVolumeCapabilities") + log.Debugf(">>>>> getVolumeCapabilities, claim: %+v", claim) + defer log.Debug("<<<<<<< getVolumeCapabilities") volumeCaps := make([]*csi_spec.VolumeCapability, 0) // Check if block access claim if isPvcModeBlock(claim) { - util.LogDebug.Print("Requested for Block volume access") + log.Debug("Requested for Block volume access") // Set access type as 'block' for each supported access mode for _, accessMode := range defaultVolAccessModes { @@ -362,7 +362,7 @@ func (p *Provisioner) getVolumeCapabilities(class *storage_v1.StorageClass, clai } // Else, Filesystem/Mount access claim - util.LogDebug.Print("Requested for Mount volume access") + log.Debug("Requested for Mount volume access") // Get the filesystem type if specified, else use default fsType := "" @@ -370,7 +370,7 @@ func (p *Provisioner) getVolumeCapabilities(class *storage_v1.StorageClass, clai fsType = val } if fsType == "" { - util.LogDebug.Print("Using default filesystem: ", defaultFSType) + log.Debug("Using default filesystem: ", defaultFSType) fsType = defaultFSType } @@ -386,8 +386,8 @@ func (p *Provisioner) getVolumeCapabilities(class *storage_v1.StorageClass, clai // Check if all PV access modes specified in the PVC are supported. func (p *Provisioner) validatePvAccessModes(pvAccessModes []api_v1.PersistentVolumeAccessMode) error { - util.LogDebug.Printf(">>>>> validatePvAccessModes, pvAccessModes: %v", pvAccessModes) - defer util.LogDebug.Printf("<<<<< validatePvAccessModes") + log.Debugf(">>>>> validatePvAccessModes, pvAccessModes: %v", pvAccessModes) + defer log.Debug("<<<<< validatePvAccessModes") // Only 'ReadWriteOnly' is supported by the CSI driver for now for _, pvAccessMode := range pvAccessModes { @@ -396,29 +396,29 @@ func (p *Provisioner) validatePvAccessModes(pvAccessModes []api_v1.PersistentVol - api_v1.ReadWriteMany - api_v1.ReadOnlyMany */ - util.LogError.Printf("Found unsupported PV AccessMode: %v", pvAccessMode) + log.Errorf("Found unsupported PV AccessMode: %v", pvAccessMode) return fmt.Errorf("Found unsupported PV AccessMode '%v'", pvAccessMode) } } return nil } func (p *Provisioner) buildCsiVolumeCreateRequest(volName string, class *storage_v1.StorageClass, claim *api_v1.PersistentVolumeClaim, csiCredentials map[string]string) (*csi_spec.CreateVolumeRequest, error) { - util.LogDebug.Printf(">>>>> buildCsiVolumeCreateRequest for %s", volName) - defer util.LogDebug.Print("<<<<< buildCsiVolumeCreateRequest") + log.Debugf(">>>>> buildCsiVolumeCreateRequest for %s", volName) + defer log.Debug("<<<<< buildCsiVolumeCreateRequest") request := &csi_spec.CreateVolumeRequest{} request.Name = volName // Secrets if csiCredentials == nil { - util.LogError.Printf("Missing secrets in the request for %s", volName) + log.Errorf("Missing secrets in the request for %s", volName) return nil, fmt.Errorf("empty credentials retrieved. Failing create request for %s", volName) } request.Secrets = csiCredentials // Parameters if class.Parameters == nil { - util.LogError.Printf("Missing class arameters in the request for %s", volName) + log.Errorf("Missing class arameters in the request for %s", volName) return nil, fmt.Errorf("class parameters not present. Failing create request for %s", volName) } request.Parameters = class.Parameters @@ -441,18 +441,18 @@ func (p *Provisioner) buildCsiVolumeCreateRequest(volName string, class *storage // Add volume capabilities volumeCaps, err := p.getVolumeCapabilities(class, claim) if err != nil { - util.LogError.Printf("Failed while building the volume capabilities for %s, err: %v", volName, err.Error()) + log.Errorf("Failed while building the volume capabilities for %s, err: %v", volName, err.Error()) return nil, fmt.Errorf("Unable to build volume capabilities. Failing create request for %s", volName) } request.VolumeCapabilities = volumeCaps - util.LogDebug.Printf("CSI volume create request: %+v", request) + log.Debugf("CSI volume create request: %+v", request) return request, nil } func (p *Provisioner) buildCsiVolumeDeleteRequest(pv *api_v1.PersistentVolume, csiCredentials map[string]string, className string) (*csi_spec.DeleteVolumeRequest, error) { - util.LogDebug.Printf(">>>>> getCsiVolumeDeleteRequest for pv %s", pv.Name) - defer util.LogDebug.Print("<<<<< getCsiVolumeDeleteRequest") + log.Debugf(">>>>> getCsiVolumeDeleteRequest for pv %s", pv.Name) + defer log.Debug("<<<<< getCsiVolumeDeleteRequest") request := &csi_spec.DeleteVolumeRequest{} if pv.Spec.CSI == nil || pv.Spec.CSI.VolumeHandle == "" { @@ -461,7 +461,7 @@ func (p *Provisioner) buildCsiVolumeDeleteRequest(pv *api_v1.PersistentVolume, c if className == "" { return nil, fmt.Errorf("no class found to retrieve the volume") } - util.LogDebug.Printf("volumeID=%s", pv.Spec.CSI.VolumeHandle) + log.Debugf("volumeID=%s", pv.Spec.CSI.VolumeHandle) request.VolumeId = pv.Spec.CSI.VolumeHandle request.Secrets = csiCredentials @@ -469,8 +469,8 @@ func (p *Provisioner) buildCsiVolumeDeleteRequest(pv *api_v1.PersistentVolume, c } func (p *Provisioner) getVolumeContentSource(claim *api_v1.PersistentVolumeClaim) (*csi_spec.VolumeContentSource, error) { - util.LogDebug.Printf(">>>>> getVolumeContentSource called for %s", claim.Name) - defer util.LogDebug.Printf("<<<<<< getVolumeContentSource") + log.Debugf(">>>>> getVolumeContentSource called for %s", claim.Name) + defer log.Debug("<<<<<< getVolumeContentSource") snapshotObj, err := p.snapshotClient.VolumesnapshotV1alpha1().VolumeSnapshots(claim.Namespace).Get(claim.Spec.DataSource.Name, meta_v1.GetOptions{}) if err != nil { return nil, fmt.Errorf("error getting snapshot %s from api server: %v", claim.Spec.DataSource.Name, err) @@ -481,12 +481,12 @@ func (p *Provisioner) getVolumeContentSource(claim *api_v1.PersistentVolumeClaim if snapshotObj.ObjectMeta.DeletionTimestamp != nil { return nil, fmt.Errorf("snapshot %s is currently being deleted", claim.Spec.DataSource.Name) } - util.LogInfo.Printf("VolumeSnapshot %+v", snapshotObj) + log.Infof("VolumeSnapshot %+v", snapshotObj) snapContentObj, err := p.snapshotClient.VolumesnapshotV1alpha1().VolumeSnapshotContents().Get(snapshotObj.Spec.SnapshotContentName, meta_v1.GetOptions{}) if err != nil { return nil, fmt.Errorf("error getting snapshot:snapshotcontent %s:%s from api server: %v", snapshotObj.Name, snapshotObj.Spec.SnapshotContentName, err) } - util.LogInfo.Printf("VolumeSnapshotContent %+v", snapContentObj) + log.Infof("VolumeSnapshotContent %+v", snapContentObj) if snapContentObj.Spec.VolumeSnapshotSource.CSI == nil { return nil, fmt.Errorf("error getting snapshot source from snapshot:snapshotcontent %s:%s", snapshotObj.Name, snapshotObj.Spec.SnapshotContentName) } @@ -495,21 +495,21 @@ func (p *Provisioner) getVolumeContentSource(claim *api_v1.PersistentVolumeClaim SnapshotId: snapContentObj.Spec.VolumeSnapshotSource.CSI.SnapshotHandle, }, } - util.LogInfo.Printf("VolumeContentSource_Snapshot %+v", snapshotSource) + log.Infof("VolumeContentSource_Snapshot %+v", snapshotSource) if snapshotObj.Status.RestoreSize != nil { capacity, exists := claim.Spec.Resources.Requests[api_v1.ResourceName(api_v1.ResourceStorage)] if !exists { return nil, fmt.Errorf("error getting capacity for PVC %s when creating snapshot %s", claim.Name, snapshotObj.Name) } volSizeBytes := capacity.Value() - util.LogInfo.Printf("Requested volume size is %d and snapshot size is %d for the source snapshot %s", int64(volSizeBytes), int64(snapshotObj.Status.RestoreSize.Value()), snapshotObj.Name) + log.Infof("Requested volume size is %d and snapshot size is %d for the source snapshot %s", int64(volSizeBytes), int64(snapshotObj.Status.RestoreSize.Value()), snapshotObj.Name) // When restoring volume from a snapshot, the volume size should // be equal to or larger than its snapshot size. if int64(volSizeBytes) < int64(snapshotObj.Status.RestoreSize.Value()) { return nil, fmt.Errorf("requested volume size %d is less than the size %d for the source snapshot %s", int64(volSizeBytes), int64(snapshotObj.Status.RestoreSize.Value()), snapshotObj.Name) } if int64(volSizeBytes) > int64(snapshotObj.Status.RestoreSize.Value()) { - util.LogInfo.Printf("requested volume size %d is greater than the size %d for the source snapshot %s.", int64(volSizeBytes), int64(snapshotObj.Status.RestoreSize.Value()), snapshotObj.Name) + log.Infof("requested volume size %d is greater than the size %d for the source snapshot %s.", int64(volSizeBytes), int64(snapshotObj.Status.RestoreSize.Value()), snapshotObj.Name) } } volumeContentSource := &csi_spec.VolumeContentSource{ @@ -519,8 +519,8 @@ func (p *Provisioner) getVolumeContentSource(claim *api_v1.PersistentVolumeClaim } func (p *Provisioner) isCapabilitySupported(capType csi_spec.ControllerServiceCapability_RPC_Type) (bool, error) { - util.LogDebug.Printf(">>>>> isCapabilitySupported called with %s", capType) - defer util.LogDebug.Printf("<<<<<< isCapabilitySupported") + log.Debugf(">>>>> isCapabilitySupported called with %s", capType) + defer log.Debug("<<<<<< isCapabilitySupported") ctx, cancel := context.WithTimeout(context.Background(), csiTimeout) defer cancel() response, err := p.csiDriverClient.ControllerGetCapabilities(ctx, nil) @@ -529,7 +529,7 @@ func (p *Provisioner) isCapabilitySupported(capType csi_spec.ControllerServiceCa return false, err } for _, cap := range response.GetCapabilities() { - util.LogDebug.Printf("handling capability %s", cap.GetRpc().Type) + log.Debugf("handling capability %s", cap.GetRpc().Type) if cap.GetRpc().Type == capType { return true, nil } diff --git a/pkg/provisioner/monitor.go b/pkg/provisioner/monitor.go index 07dd0ef..3ca0193 100644 --- a/pkg/provisioner/monitor.go +++ b/pkg/provisioner/monitor.go @@ -19,7 +19,7 @@ package provisioner import ( "fmt" "github.com/hpe-storage/common-host-libs/chain" - "github.com/hpe-storage/common-host-libs/util" + log "github.com/hpe-storage/common-host-libs/logger" api_v1 "k8s.io/api/core/v1" "reflect" "time" @@ -76,7 +76,7 @@ func (m *monitorBind) route(channel chan *updateMessage) (interface{}, error) { func (m *monitorBind) processClaimMessage(message *updateMessage) (name interface{}, err error) { claim := message.pvc - util.LogDebug.Printf("pvc %s updated (UID=%s). Status is now %s", claim.Name, claim.GetUID(), claim.Status.Phase) + log.Debugf("pvc %s updated (UID=%s). Status is now %s", claim.Name, claim.GetUID(), claim.Status.Phase) if claim.Status.Phase == api_v1.ClaimBound { if m.vol.Name != claim.Spec.VolumeName { info := fmt.Sprintf("pvc %s was satisfied by %s, the pv provisioned was %s", claim.Name, claim.Spec.VolumeName, m.vol.Name) @@ -84,11 +84,11 @@ func (m *monitorBind) processClaimMessage(message *updateMessage) (name interfac // roll back here or our volume will be left hanging return nil, fmt.Errorf("%s", info) } - util.LogDebug.Printf("pvc %s was satisfied by pv %s", claim.Name, claim.Spec.VolumeName) + log.Debugf("pvc %s was satisfied by pv %s", claim.Name, claim.Spec.VolumeName) return claim.Spec.VolumeName, nil } else if claim.Status.Phase == api_v1.ClaimLost { info := fmt.Sprintf("pvc %s was lost, reverting volume create (UID=%s)", claim.Name, claim.UID) - util.LogError.Print(info) + log.Error(info) m.p.eventRecorder.Event(m.origClaim, api_v1.EventTypeWarning, "MonitorBind", info) // roll back here since the claim was lost return nil, fmt.Errorf("pvc %s was lost, reverting volume create (UID=%s)", claim.Name, claim.UID) @@ -98,22 +98,22 @@ func (m *monitorBind) processClaimMessage(message *updateMessage) (name interfac func (m *monitorBind) processVolMessage(message *updateMessage) (name interface{}, err error) { volume := message.pv - util.LogDebug.Printf("pv %s updated (UID=%s). Status is now %s", volume.Name, volume.UID, volume.Status.Phase) + log.Debugf("pv %s updated (UID=%s). Status is now %s", volume.Name, volume.UID, volume.Status.Phase) switch volume.Status.Phase { case api_v1.VolumeBound: if m.origClaim.UID != volume.Spec.ClaimRef.UID { info := fmt.Sprintf("pv %s satisfied pvc %s (%s), expecting %s", volume.Name, volume.Spec.ClaimRef.Name, volume.Spec.ClaimRef.UID, m.origClaim.Name) m.p.eventRecorder.Event(volume, api_v1.EventTypeWarning, "MonitorBind", info) - util.LogError.Printf(info) + log.Errorf(info) //don't roll back here since the volume we created is bound to something return volume.Name, nil } - util.LogInfo.Printf("pv %s satisfied pvc %s (%s)", volume.Name, volume.Spec.ClaimRef.Name, volume.Spec.ClaimRef.UID) + log.Infof("pv %s satisfied pvc %s (%s)", volume.Name, volume.Spec.ClaimRef.Name, volume.Spec.ClaimRef.UID) return volume.Name, nil case api_v1.VolumeReleased: info := fmt.Sprintf("pv %s has been released, claimref was %s (waiting for %s)", volume.Name, volume.Spec.ClaimRef.UID, m.origClaim.UID) - util.LogInfo.Printf(info) + log.Infof(info) // don't roll back here since the volume will be deleted by the normal workflow return volume.Name, nil } @@ -122,7 +122,7 @@ func (m *monitorBind) processVolMessage(message *updateMessage) (name interface{ func (m *monitorBind) processTimeout() (interface{}, error) { info := fmt.Sprintf("pvc %s timed out waiting for bind status, reverting volume create (UID=%s)", m.origClaim.Name, m.origClaim.UID) - util.LogError.Print(info) + log.Error(info) m.p.eventRecorder.Event(m.origClaim, api_v1.EventTypeWarning, "MonitorBind", info) return nil, fmt.Errorf("pvc %s (%s) not bound after timeout", m.origClaim.Name, m.origClaim.GetUID()) } diff --git a/pkg/provisioner/provisioner.go b/pkg/provisioner/provisioner.go index 7f86b96..c5674ea 100644 --- a/pkg/provisioner/provisioner.go +++ b/pkg/provisioner/provisioner.go @@ -26,13 +26,13 @@ import ( "time" csi_spec "github.com/container-storage-interface/spec/lib/go/csi" - crd_client "github.com/hpe-storage/k8s-custom-resources/pkg/client/clientset/versioned" - snap_client "github.com/kubernetes-csi/external-snapshotter/pkg/client/clientset/versioned" - uuid "github.com/satori/go.uuid" "github.com/hpe-storage/common-host-libs/chain" "github.com/hpe-storage/common-host-libs/docker/dockervol" "github.com/hpe-storage/common-host-libs/jconfig" - "github.com/hpe-storage/common-host-libs/util" + log "github.com/hpe-storage/common-host-libs/logger" + crd_client "github.com/hpe-storage/k8s-custom-resources/pkg/client/clientset/versioned" + snap_client "github.com/kubernetes-csi/external-snapshotter/pkg/client/clientset/versioned" + uuid "github.com/satori/go.uuid" api_v1 "k8s.io/api/core/v1" v1 "k8s.io/api/core/v1" storage_v1 "k8s.io/api/storage/v1" @@ -128,10 +128,10 @@ func (p *Provisioner) addMessageChan(id string, channel chan *updateMessage) { return } if channel != nil { - util.LogDebug.Printf("addMessageChan: adding %s", id) + log.Debugf("addMessageChan: adding %s", id) p.id2chan[id] = channel } else { - util.LogDebug.Printf("addMessageChan: creating %s", id) + log.Debugf("addMessageChan: creating %s", id) p.id2chan[id] = make(chan *updateMessage, 1024) } } @@ -154,13 +154,13 @@ func (p *Provisioner) sendUpdate(t interface{}) { claim, _ := getPersistentVolumeClaim(t) if claim != nil { - util.LogDebug.Printf("sendUpdate: pvc:%s (%s) phase:%s", claim.Name, claim.UID, claim.Status.Phase) + log.Debugf("sendUpdate: pvc:%s (%s) phase:%s", claim.Name, claim.UID, claim.Status.Phase) id = fmt.Sprintf("%s", claim.UID) mess = &updateMessage{pvc: claim} } else { vol, _ := getPersistentVolume(t) if vol != nil { - util.LogDebug.Printf("sendUpdate: pv:%s (%s) phase:%s", vol.Name, vol.UID, vol.Status.Phase) + log.Debugf("sendUpdate: pv:%s (%s) phase:%s", vol.Name, vol.UID, vol.Status.Phase) id = fmt.Sprintf("%s", vol.UID) mess = &updateMessage{pv: vol} } @@ -172,7 +172,7 @@ func (p *Provisioner) sendUpdate(t interface{}) { messChan := p.id2chan[id] if messChan == nil { - util.LogDebug.Printf("send: skipping %s, not in map", id) + log.Debugf("send: skipping %s, not in map", id) return } messChan <- mess @@ -180,7 +180,7 @@ func (p *Provisioner) sendUpdate(t interface{}) { // removeMessageChan closes (if open) chan and removes it from the map func (p *Provisioner) removeMessageChan(claimID string, volID string) { - util.LogDebug.Printf("removeMessageChan called with claimID %s volID %s", claimID, volID) + log.Debugf("removeMessageChan called with claimID %s volID %s", claimID, volID) p.id2chanLock.Lock() defer p.id2chanLock.Unlock() @@ -210,7 +210,7 @@ func NewProvisioner(clientSet *kubernetes.Clientset, csiClientSet *csi_client.Cl id := uuid.NewV4() broadcaster := record.NewBroadcaster() broadcaster.StartRecordingToSink(&core_v1.EventSinkImpl{Interface: clientSet.CoreV1().Events(v1.NamespaceAll)}) - util.LogDebug.Printf("provisioner (prefix=*.hpe.com) is being created with instance id %s and id2chan capacity %d.", id.String(), id2chanMapSize) + log.Debugf("provisioner (prefix=*.hpe.com) is being created with instance id %s and id2chan capacity %d.", id.String(), id2chanMapSize) return &Provisioner{ kubeClient: clientSet, @@ -228,13 +228,13 @@ func NewProvisioner(clientSet *kubernetes.Clientset, csiClientSet *csi_client.Cl // update the existing volume's metadata for the claims func (p *Provisioner) updateDockerVolumeMetadata(store cache.Store) { - util.LogDebug.Print("updateDockerVolumeMetadata started") + log.Debug("updateDockerVolumeMetadata started") optionsMap := map[string]interface{}{manager: managerName} i := 0 for len(store.List()) < 1 { if i > maxWaitForClaims { - util.LogInfo.Printf("No Claims found after waiting for %d seconds. Ignoring update", maxWaitForClaims) + log.Infof("No Claims found after waiting for %d seconds. Ignoring update", maxWaitForClaims) return } time.Sleep(time.Second) @@ -244,25 +244,25 @@ func (p *Provisioner) updateDockerVolumeMetadata(store cache.Store) { for _, pvc := range store.List() { claim, err := getPersistentVolumeClaim(pvc) if err != nil { - util.LogDebug.Printf("unable to retrieve the claim from %v", pvc) + log.Debugf("unable to retrieve the claim from %v", pvc) continue } if claim.Status.Phase != api_v1.ClaimBound { - util.LogDebug.Printf("claim %s was not bound - skipping", claim.Name) + log.Debugf("claim %s was not bound - skipping", claim.Name) continue } className := getClaimClassName(claim) - util.LogDebug.Printf("found classname %s for claim %s.", className, claim.Name) + log.Debugf("found classname %s for claim %s.", className, claim.Name) class, err := p.getClass(className) if err != nil { - util.LogError.Printf("unable to retrieve the class object for claim %v", claim) + log.Errorf("unable to retrieve the class object for claim %v", claim) continue } if !strings.HasPrefix(class.Provisioner, CsiProvisioner) && !strings.HasPrefix(class.Provisioner, FlexVolumeProvisioner) { - util.LogInfo.Printf("updateDockerVolumeMetadata: class named %s in pvc %s did not refer to a supported provisioner (name must begin with %s or %s). current provisioner=%s - skipping", className, claim.Name, CsiProvisioner, FlexVolumeProvisioner, class.Provisioner) + log.Infof("updateDockerVolumeMetadata: class named %s in pvc %s did not refer to a supported provisioner (name must begin with %s or %s). current provisioner=%s - skipping", className, claim.Name, CsiProvisioner, FlexVolumeProvisioner, class.Provisioner) continue } @@ -270,12 +270,12 @@ func (p *Provisioner) updateDockerVolumeMetadata(store cache.Store) { if err != nil { // we don't want to beat on the docker plugin if it doesn't support update // so we simply move on to the next volume if we hit an error - util.LogError.Printf("unable to update volume %v Err: %v", claim.Spec.VolumeName, err.Error()) + log.Errorf("unable to update volume %v Err: %v", claim.Spec.VolumeName, err.Error()) continue } } - util.LogDebug.Print("updateDockerVolumeMetadata ended") + log.Debug("updateDockerVolumeMetadata ended") } // Start the provision workflow. Note that Start will block until there are storage classes found. @@ -284,7 +284,7 @@ func (p *Provisioner) Start(stop chan struct{}) { // get the server version p.serverVersion, err = p.kubeClient.Discovery().ServerVersion() if err != nil { - util.LogError.Printf("Unable to get server version. %s", err.Error()) + log.Errorf("Unable to get server version. %s", err.Error()) } // Get the StorageClass store and start it's reflector @@ -315,7 +315,7 @@ func (p *Provisioner) Start(stop chan struct{}) { // Wait for our reflector to load (or for someone to add a Storage Class) p.waitForClasses() - util.LogDebug.Printf("provisioner has been started and is watching a server with version %s.", p.serverVersion) + log.Debugf("provisioner has been started and is watching a server with version %s.", p.serverVersion) } @@ -324,16 +324,16 @@ func (p *Provisioner) statusLogger() { time.Sleep(statusLoggingWait) _, err := p.kubeClient.Discovery().ServerVersion() if err != nil { - util.LogError.Printf("statusLogger: provision chains=%d, delete chains=%d, parked chains=%d, ids tracked=%d, connection error=%s", atomic.LoadUint32(&p.provisionCommandChains), atomic.LoadUint32(&p.deleteCommandChains), atomic.LoadUint32(&p.parkedCommands), len(p.id2chan), err.Error()) + log.Errorf("statusLogger: provision chains=%d, delete chains=%d, parked chains=%d, ids tracked=%d, connection error=%s", atomic.LoadUint32(&p.provisionCommandChains), atomic.LoadUint32(&p.deleteCommandChains), atomic.LoadUint32(&p.parkedCommands), len(p.id2chan), err.Error()) return } - util.LogInfo.Printf("statusLogger: provision chains=%d, delete chains=%d, parked chains=%d, ids tracked=%d, connection=valid", atomic.LoadUint32(&p.provisionCommandChains), atomic.LoadUint32(&p.deleteCommandChains), atomic.LoadUint32(&p.parkedCommands), len(p.id2chan)) + log.Infof("statusLogger: provision chains=%d, delete chains=%d, parked chains=%d, ids tracked=%d, connection=valid", atomic.LoadUint32(&p.provisionCommandChains), atomic.LoadUint32(&p.deleteCommandChains), atomic.LoadUint32(&p.parkedCommands), len(p.id2chan)) } } func (p *Provisioner) deleteVolume(pv *api_v1.PersistentVolume, rmPV bool) { provisioner := pv.Annotations[k8sProvisionedBy] - util.LogDebug.Printf("provisioner is %s", provisioner) + log.Debugf("provisioner is %s", provisioner) // slow down a delete storm limit(&p.deleteCommandChains, &p.parkedCommands, maxDeletes) @@ -344,11 +344,11 @@ func (p *Provisioner) deleteVolume(pv *api_v1.PersistentVolume, rmPV bool) { // if the pv was just deleted, make sure we clean up the docker volume if provisioner == CsiProvisioner { - util.LogDebug.Printf("in deleteVolume: cleaning up pv:%s Status:%v with deleteChain %d parkedCommands %d", pv.Name, pv.Status, atomic.LoadUint32(&p.deleteCommandChains), atomic.LoadUint32(&p.parkedCommands)) + log.Debugf("in deleteVolume: cleaning up pv:%s Status:%v with deleteChain %d parkedCommands %d", pv.Name, pv.Status, atomic.LoadUint32(&p.deleteCommandChains), atomic.LoadUint32(&p.parkedCommands)) p.deleteCsiVolume(pv, deleteChain) } else { // flexVolume - util.LogDebug.Printf("in deleteVolume: cleaning up pv:%s Status:%v with deleteChain %d parkedCommands %d with affectDockerVols %v", pv.Name, pv.Status, atomic.LoadUint32(&p.deleteCommandChains), atomic.LoadUint32(&p.parkedCommands), p.affectDockerVols) + log.Debugf("in deleteVolume: cleaning up pv:%s Status:%v with deleteChain %d parkedCommands %d with affectDockerVols %v", pv.Name, pv.Status, atomic.LoadUint32(&p.deleteCommandChains), atomic.LoadUint32(&p.parkedCommands), p.affectDockerVols) p.deleteFlexVolume(pv, deleteChain, provisioner) } if rmPV { @@ -366,20 +366,20 @@ func (p *Provisioner) deleteVolume(pv *api_v1.PersistentVolume, rmPV bool) { } } func (p *Provisioner) deleteFlexVolume(pv *api_v1.PersistentVolume, deleteChain *chain.Chain, provisioner string) { - util.LogDebug.Printf(">>>>> deleteFlexVolume called") - defer util.LogDebug.Printf("<<<<< deleteFlexVolume") + log.Debug(">>>>> deleteFlexVolume called") + defer log.Debug("<<<<< deleteFlexVolume") if p.affectDockerVols { dockerClient, _, err := p.newDockerVolumePluginClient(provisioner) if err != nil { info := fmt.Sprintf("failed to get docker client for %s while trying to delete pv %s: %v", FlexVolumeProvisioner, pv.Name, err) - util.LogError.Print(info) + log.Error(info) p.eventRecorder.Event(pv, api_v1.EventTypeWarning, "DeleteVolumeGetClient", info) return } vol := p.getDockerVolume(dockerClient, pv.Name) if vol != nil && vol.Name == pv.Name { p.eventRecorder.Event(pv, api_v1.EventTypeNormal, "DeleteVolume", fmt.Sprintf("cleaning up volume named %s", pv.Name)) - util.LogDebug.Printf("Docker volume with name %s found. Delete using %s.", pv.Name, FlexVolumeProvisioner) + log.Debugf("Docker volume with name %s found. Delete using %s.", pv.Name, FlexVolumeProvisioner) deleteChain.AppendRunner(&deleteDockerVol{ name: pv.Name, client: dockerClient, @@ -390,31 +390,31 @@ func (p *Provisioner) deleteFlexVolume(pv *api_v1.PersistentVolume, deleteChain } func (p *Provisioner) deleteCsiVolume(pv *api_v1.PersistentVolume, deleteChain *chain.Chain) { - util.LogDebug.Printf(">>>>> deleteCsiVolume called") - defer util.LogDebug.Printf("<<<<< deleteCsiVolume") + log.Debug(">>>>> deleteCsiVolume called") + defer log.Debug("<<<<< deleteCsiVolume") // delete csi volume through csi driver class, err := p.getClass(pv.Spec.StorageClassName) if err != nil { - util.LogError.Printf("unable to retrieve the class object for pv %v", pv) + log.Errorf("unable to retrieve the class object for pv %v", pv) return } secretRef, err := getSecretReference(csiSecretParams, class.Parameters, pv.Name, nil) if err != nil { - util.LogError.Printf("unable to retrieve secret for class %v", class) + log.Errorf("unable to retrieve secret for class %v", class) return } csiCredentials, err := p.getCredentials(secretRef) if err != nil { - util.LogError.Printf("unable to retrieve credentials for class %v", secretRef) + log.Errorf("unable to retrieve credentials for class %v", secretRef) return } request, err := p.buildCsiVolumeDeleteRequest(pv, csiCredentials, class.Name) if err != nil { - util.LogError.Printf("unable to get csi delete request err=%s", err.Error()) + log.Errorf("unable to get csi delete request err=%s", err.Error()) return } @@ -427,10 +427,10 @@ func (p *Provisioner) deleteCsiVolume(pv *api_v1.PersistentVolume, deleteChain * } func (p *Provisioner) updateVolume(claim *api_v1.PersistentVolumeClaim, provisioner string, updateMap map[string]interface{}) error { - util.LogDebug.Printf("updateVolume called with claim:%s, provisioner:%s and options:%v", claim.Name, provisioner, updateMap) + log.Debugf("updateVolume called with claim:%s, provisioner:%s and options:%v", claim.Name, provisioner, updateMap) if provisioner == CsiProvisioner { - util.LogInfo.Printf("updateVolume not supported for pvc %s provisioner %s", claim.Name, CsiProvisioner) + log.Infof("updateVolume not supported for pvc %s provisioner %s", claim.Name, CsiProvisioner) return nil } // get the volume name for update @@ -448,11 +448,11 @@ func (p *Provisioner) updateVolume(claim *api_v1.PersistentVolumeClaim, provisio } if val, ok := vol.Status[manager]; ok && val != "" { - util.LogDebug.Printf("claim:%s has manager set to value %v - skipping", claim.Name, val) + log.Debugf("claim:%s has manager set to value %v - skipping", claim.Name, val) return nil } - util.LogDebug.Printf("invoking VolumeDriver.Update with name :%s updateMap :%v", vol.Name, updateMap) + log.Debugf("invoking VolumeDriver.Update with name :%s updateMap :%v", vol.Name, updateMap) _, err = dockerClient.Update(vol.Name, updateMap) if err != nil { return err @@ -461,8 +461,8 @@ func (p *Provisioner) updateVolume(claim *api_v1.PersistentVolumeClaim, provisio } func (p *Provisioner) provisionVolume(claim *api_v1.PersistentVolumeClaim, class *storage_v1.StorageClass) { - util.LogDebug.Printf(">>>>> provisionVolume for %s", claim.UID) - defer util.LogDebug.Print("<<<<< provisionVolume") + log.Debugf(">>>>> provisionVolume for %s", claim.UID) + defer log.Debug("<<<<< provisionVolume") // this can fire multiple times without issue, so we defer this even though we don't have a volume yet id := fmt.Sprintf("%s", claim.UID) defer p.removeMessageChan(id, "") @@ -500,7 +500,7 @@ func (p *Provisioner) provisionVolume(claim *api_v1.PersistentVolumeClaim, class // check for snapshot in VolumeContentSource for csi isSnapshotNeeded, err := p.checkClaimDataSorce(claim) if err != nil { - util.LogError.Printf("error in claim data source pv from %v %v and %v. err=%v", claim, params, class, err) + log.Errorf("error in claim data source pv from %v %v and %v. err=%v", claim, params, class, err) return } p.provisionCsiVolume(volumeCreateOptions, claim, isSnapshotNeeded) @@ -514,7 +514,7 @@ func (p *Provisioner) provisionVolume(claim *api_v1.PersistentVolumeClaim, class p.eventRecorder.Event(class, api_v1.EventTypeNormal, "ProvisionStorage", fmt.Sprintf("%s provisioning storage for pvc %s (%s) using class %s", class.Provisioner, claim.Name, id, class.Name)) err := provisionChain.Execute() if err != nil { - util.LogError.Printf("failed to create volume for claim %s with class %s: %s", claim.Name, class.Name, err) + log.Errorf("failed to create volume for claim %s with class %s: %s", claim.Name, class.Name, err) p.eventRecorder.Event(class, api_v1.EventTypeWarning, "ProvisionStorage", fmt.Sprintf("failed to create volume for claim %s with class %s: %s", claim.Name, class.Name, err)) } @@ -527,26 +527,26 @@ func (p *Provisioner) provisionVolume(claim *api_v1.PersistentVolumeClaim, class } func (p *Provisioner) provisionFlexVolume(options *volumeCreateOptions) { - util.LogDebug.Printf(">>>>> provisionFlexVolume") - defer util.LogDebug.Print("<<<<< provisionFlexVolume") + log.Debug(">>>>> provisionFlexVolume") + defer log.Debug("<<<<< provisionFlexVolume") p.dockerVolNameAnnotation = FlexVolumeProvisioner + "/" + dockerVolumeName pv, err := p.newFlexVolPersistentVolume(options.volName, options.classParams, options.claim, options.class) if err != nil { - util.LogError.Printf("error building pv from %v %v and %v. err=%v", options.claim, options.classParams, options.class, err) + log.Errorf("error building pv from %v %v and %v. err=%v", options.claim, options.classParams, options.class, err) return } var dockerClient *dockervol.DockerVolumePlugin var dockerOptions map[string]interface{} dockerClient, dockerOptions, err = p.newDockerVolumePluginClient(options.class.Provisioner) if err != nil { - util.LogError.Printf("unable to get docker client for class %v while trying to provision pvc named %s (%s): %s", options.class, options.claim.Name, options.claimID, err) + log.Errorf("unable to get docker client for class %v while trying to provision pvc named %s (%s): %s", options.class, options.claim.Name, options.claimID, err) p.eventRecorder.Event(options.class, api_v1.EventTypeWarning, "ProvisionVolumeGetClient", fmt.Sprintf("failed to get docker volume client for class %s while trying to provision claim %s (%s): %s", options.class.Name, options.claim.Name, options.claimID, err)) return } vol := p.getDockerVolume(dockerClient, options.volName) if vol != nil && options.volName == vol.Name { - util.LogError.Printf("error provisioning pv from %v and %v. err=Docker volume with this name was found %v.", options.claim, options.class, vol) + log.Errorf("error provisioning pv from %v and %v. err=Docker volume with this name was found %v.", options.claim, options.class, vol) return } @@ -557,7 +557,7 @@ func (p *Provisioner) provisionFlexVolume(options *volumeCreateOptions) { var optionsMap map[string]interface{} optionsMap, err = p.parseStorageClassParams(options.classParams, options.class, sizeForDockerVolumeinGib, dockerClient.ListOfStorageResourceOptions, options.nameSpace) if err != nil { - util.LogError.Printf("error parsing storage class parameters from %v %v and %v. err=%v", options.claim, options.classParams, options.class, err) + log.Errorf("error parsing storage class parameters from %v %v and %v. err=%v", options.claim, options.classParams, options.class, err) return } @@ -565,11 +565,11 @@ func (p *Provisioner) provisionFlexVolume(options *volumeCreateOptions) { optionsMap, err = p.getClaimOverrideOptions(options.claim, overrideKeys, optionsMap, FlexVolumeProvisioner) if err != nil { p.eventRecorder.Event(options.class, api_v1.EventTypeWarning, "ProvisionStorage", err.Error()) - util.LogError.Printf("error handling annotations. err=%v", err) + log.Errorf("error handling annotations. err=%v", err) return } - util.LogDebug.Printf("updated optionsMap with overrideKeys %#v", optionsMap) + log.Debugf("updated optionsMap with overrideKeys %#v", optionsMap) // set default docker options if not already set p.setDefaultDockerOptions(optionsMap, options.classParams, dockerOptions, dockerClient) @@ -595,30 +595,30 @@ func (p *Provisioner) provisionFlexVolume(options *volumeCreateOptions) { // nolint: gocyclo func (p *Provisioner) provisionCsiVolume(options *volumeCreateOptions, claim *api_v1.PersistentVolumeClaim, isSnapshotNeeded bool) { - util.LogDebug.Printf(">>>>> provisionCsiVolume called for PVC %s", claim.Name) - defer util.LogDebug.Print("<<<<< provisionCsiVolume") + log.Debugf(">>>>> provisionCsiVolume called for PVC %s", claim.Name) + defer log.Debug("<<<<< provisionCsiVolume") // ported from external provisioner to retrieve secrets var err error options.secretRef, err = getSecretReference(csiSecretParams, options.class.Parameters, options.volName, nil) if err != nil { - util.LogError.Printf("unable to get secretReference for %s %s", options.volName, err.Error()) + log.Errorf("unable to get secretReference for %s %s", options.volName, err.Error()) return } pv, err := p.newCsiPersistentVolume(options) if err != nil { - util.LogError.Printf("error building pv from %v %v and %v. err=%v", options.claim, options.classParams, options.class, err) + log.Errorf("error building pv from %v %v and %v. err=%v", options.claim, options.classParams, options.class, err) return } csiCredentials, err := p.getCredentials(options.secretRef) if err != nil { - util.LogError.Printf("unable to retrieve credentials for class %v", options.secretRef) + log.Errorf("unable to retrieve credentials for class %v", options.secretRef) return } request, err := p.buildCsiVolumeCreateRequest(options.volName, options.class, options.claim, csiCredentials) if err != nil { - util.LogError.Printf("unable to build CSI Create Request %s", err.Error()) + log.Errorf("unable to build CSI Create Request %s", err.Error()) return } @@ -627,17 +627,17 @@ func (p *Provisioner) provisionCsiVolume(options *volumeCreateOptions, claim *ap var isSnapCapSupported bool isSnapCapSupported, err = p.isCapabilitySupported(csi_spec.ControllerServiceCapability_RPC_CREATE_DELETE_SNAPSHOT) if err != nil { - util.LogError.Printf("error validating if %s is supported in %s, err=%s", csi_spec.ControllerServiceCapability_RPC_CREATE_DELETE_SNAPSHOT, CsiProvisioner, err.Error()) + log.Errorf("error validating if %s is supported in %s, err=%s", csi_spec.ControllerServiceCapability_RPC_CREATE_DELETE_SNAPSHOT, CsiProvisioner, err.Error()) return } if !isSnapCapSupported { - util.LogError.Printf("%s is not supported by %s", csi_spec.ControllerServiceCapability_RPC_CREATE_DELETE_SNAPSHOT, CsiProvisioner) + log.Errorf("%s is not supported by %s", csi_spec.ControllerServiceCapability_RPC_CREATE_DELETE_SNAPSHOT, CsiProvisioner) return } var volumeContentSource *csi_spec.VolumeContentSource volumeContentSource, err = p.getVolumeContentSource(claim) if err != nil { - util.LogError.Printf("error getting snapshot handle for snapshot %s: %v", claim.Spec.DataSource.Name, err) + log.Errorf("error getting snapshot handle for snapshot %s: %v", claim.Spec.DataSource.Name, err) return } request.VolumeContentSource = volumeContentSource @@ -649,7 +649,7 @@ func (p *Provisioner) provisionCsiVolume(options *volumeCreateOptions, claim *ap var optionsMap map[string]interface{} optionsMap, err = p.parseStorageClassParams(options.classParams, options.class, 0, nil, options.nameSpace) if err != nil { - util.LogError.Printf("error parsing storage class parameters from %v %v and %v. err=%v", options.claim, options.classParams, options.class, err) + log.Errorf("error parsing storage class parameters from %v %v and %v. err=%v", options.claim, options.classParams, options.class, err) return } @@ -657,7 +657,7 @@ func (p *Provisioner) provisionCsiVolume(options *volumeCreateOptions, claim *ap optionsMap, err = p.getClaimOverrideOptions(options.claim, overrideKeys, optionsMap, CsiProvisioner) if err != nil { p.eventRecorder.Event(options.class, api_v1.EventTypeWarning, "ProvisionStorage", err.Error()) - util.LogError.Printf("error handling annotations. err=%v", err) + log.Errorf("error handling annotations. err=%v", err) return } @@ -690,15 +690,15 @@ func (p *Provisioner) provisionCsiVolume(options *volumeCreateOptions, claim *ap func (p *Provisioner) setDefaultDockerOptions(optionsMap map[string]interface{}, params map[string]string, dockerOptions map[string]interface{}, dockerClient *dockervol.DockerVolumePlugin) { for k, v := range dockerOptions { - util.LogDebug.Printf("processing %s:%v", k, v) + log.Debugf("processing %s:%v", k, v) _, ok := params[k] if ok == false { - util.LogInfo.Printf("setting the docker option %s:%v", k, v) + log.Infof("setting the docker option %s:%v", k, v) val := reflect.ValueOf(v) optionsMap[k] = val.Interface() } } - util.LogDebug.Printf("optionsMap %v", optionsMap) + log.Debugf("optionsMap %v", optionsMap) } func limit(watched, parked *uint32, max uint32) { @@ -721,7 +721,7 @@ func getClaimSizeForFactor(claim *api_v1.PersistentVolumeClaim, dockerClient *do if dockerClient.ListOfStorageResourceOptions != nil && dockerClient.FactorForConversion != 0 { sizeForDockerVolumeinGib = int(sizeInBytes) / dockerClient.FactorForConversion - util.LogDebug.Printf("claimSize=%d for size=%d bytes and factorForConversion=%d", sizeForDockerVolumeinGib, sizeInBytes, dockerClient.FactorForConversion) + log.Debugf("claimSize=%d for size=%d bytes and factorForConversion=%d", sizeForDockerVolumeinGib, sizeInBytes, dockerClient.FactorForConversion) return sizeForDockerVolumeinGib } } @@ -734,11 +734,11 @@ func getClaimSizeForFactor(claim *api_v1.PersistentVolumeClaim, dockerClient *do func (p *Provisioner) newDockerVolumePluginClient(provisionerName string) (*dockervol.DockerVolumePlugin, map[string]interface{}, error) { driverName := strings.Split(provisionerName, "/") if len(driverName) < 2 { - util.LogInfo.Printf("Unable to parse provisioner name %s.", provisionerName) + log.Infof("Unable to parse provisioner name %s.", provisionerName) return nil, nil, fmt.Errorf("unable to parse provisioner name %s", provisionerName) } configPathName := fmt.Sprintf("%s%s/%s.json", flexVolumeBasePath, strings.Replace(provisionerName, "/", "~", 1), driverName[1]) - util.LogDebug.Printf("looking for %s", configPathName) + log.Debugf("looking for %s", configPathName) var ( socketFile = defaultSocketFile strip = defaultStripValue @@ -748,7 +748,7 @@ func (p *Provisioner) newDockerVolumePluginClient(provisionerName string) (*dock ) c, err := jconfig.NewConfig(configPathName) if err != nil { - util.LogInfo.Printf("Unable to process config at %s, %v. Using defaults.", configPathName, err) + log.Infof("Unable to process config at %s, %v. Using defaults.", configPathName, err) } else { socketFile, err = c.GetStringWithError("dockerVolumePluginSocketPath") if err != nil { @@ -768,17 +768,17 @@ func (p *Provisioner) newDockerVolumePluginClient(provisionerName string) (*dock } defaultOpts, err := c.GetMapSlice("defaultOptions") if err == nil { - util.LogDebug.Printf("parsing defaultOptions %v", defaultOpts) + log.Debugf("parsing defaultOptions %v", defaultOpts) optMap := make(map[string]interface{}) for _, values := range defaultOpts { for k, v := range values { optMap[k] = v - util.LogDebug.Printf("key %v value %v", k, optMap[k]) + log.Debugf("key %v value %v", k, optMap[k]) } } dockerOpts = optMap - util.LogDebug.Printf("dockerOptions %v", dockerOpts) + log.Debugf("dockerOptions %v", dockerOpts) } } options := &dockervol.Options{ @@ -796,7 +796,7 @@ func (p *Provisioner) waitForClasses() { i := 0 for len(p.classStore.List()) < 1 { if i > 29 { - util.LogInfo.Printf("No StorageClass found. Unable to make progress.") + log.Infof("No StorageClass found. Unable to make progress.") i = 0 } time.Sleep(time.Second) @@ -835,21 +835,21 @@ func (c createDockerVol) Name() string { } func (c *createDockerVol) Run() (name interface{}, err error) { - util.LogDebug.Printf(">>>>>> Run createDockerVol with volume %s options %#v", c.requestedName, c.options) - defer util.LogDebug.Print("<<<<<< Run createDockerVol") + log.Debugf(">>>>>> Run createDockerVol with volume %s options %#v", c.requestedName, c.options) + defer log.Debug("<<<<<< Run createDockerVol") c.returnedName, err = c.client.Create(c.requestedName, c.options) if err != nil { - util.LogError.Printf("failed to create docker volume vol=%s, error=%s", c.requestedName, err.Error()) + log.Errorf("failed to create docker volume vol=%s, error=%s", c.requestedName, err.Error()) return nil, err } - util.LogInfo.Printf("created docker volume named %s", c.returnedName) + log.Infof("created docker volume named %s", c.returnedName) name = c.returnedName return name, err } func (c *createDockerVol) Rollback() (err error) { - util.LogDebug.Printf(">>>>>> Rollback createDockerVol called with %s", c.requestedName) - defer util.LogDebug.Print("<<<<<< Rollback createDockerVol") + log.Debugf(">>>>>> Rollback createDockerVol called with %s", c.requestedName) + defer log.Debug("<<<<<< Rollback createDockerVol") if c.returnedName != "" { err = c.client.Delete(c.returnedName, managerName) if err != nil { @@ -869,8 +869,8 @@ func (c deleteDockerVol) Name() string { } func (c *deleteDockerVol) Run() (name interface{}, err error) { - util.LogDebug.Printf(">>>>>> Run deleteDockerVol called with %s", c.name) - defer util.LogDebug.Print("<<<<<< Run deleteDockerVol") + log.Debugf(">>>>>> Run deleteDockerVol called with %s", c.name) + defer log.Debug("<<<<<< Run deleteDockerVol") // slow down if there is a volume delete storm time.Sleep(time.Duration(time.Second)) err = c.client.Delete(c.name, managerName) @@ -895,8 +895,8 @@ func (c createPersistentVolume) Name() string { } func (c *createPersistentVolume) Run() (name interface{}, err error) { - util.LogDebug.Printf(">>>>>> Run createPersistentVolume called with %s", c.vol) - defer util.LogDebug.Print("<<<<<< Run createPersistentVolume") + log.Debugf(">>>>>> Run createPersistentVolume called with %s", c.vol) + defer log.Debug("<<<<<< Run createPersistentVolume") pv, err := c.p.kubeClient.CoreV1().PersistentVolumes().Create(c.vol) if err != nil { c.p.eventRecorder.Event(pv, api_v1.EventTypeWarning, "CreatePersistentVolume", fmt.Sprintf("Failed to create pv %#v: %v", c.vol.Name, err)) @@ -910,8 +910,8 @@ func (c *createPersistentVolume) Run() (name interface{}, err error) { } func (c *createPersistentVolume) Rollback() (err error) { - util.LogDebug.Printf(">>>>>> Rollback createPersistentVolume called with %s", c.vol.Name) - defer util.LogDebug.Print("<<<<<< Rollback createPersistentVolume") + log.Debugf(">>>>>> Rollback createPersistentVolume called with %s", c.vol.Name) + defer log.Debug("<<<<<< Rollback createPersistentVolume") return c.p.kubeClient.CoreV1().PersistentVolumes().Delete(c.vol.Name, &meta_v1.DeleteOptions{}) } @@ -925,8 +925,8 @@ func (d deletePersistentVolume) Name() string { } func (d *deletePersistentVolume) Run() (name interface{}, err error) { - util.LogDebug.Printf(">>>>>> Run deletePersistentVolume called with %s", d.vol.Name) - defer util.LogDebug.Print("<<<<<< Run deletePersistentVolume") + log.Debugf(">>>>>> Run deletePersistentVolume called with %s", d.vol.Name) + defer log.Debug("<<<<<< Run deletePersistentVolume") err = d.p.kubeClient.CoreV1().PersistentVolumes().Delete(d.vol.Name, &meta_v1.DeleteOptions{}) if err != nil { d.p.eventRecorder.Event(d.vol, api_v1.EventTypeWarning, "DeletePersistentVolume", fmt.Sprintf("Error Deleting pv %v %s", d.vol.Name, err.Error())) diff --git a/pkg/provisioner/volume.go b/pkg/provisioner/volume.go index 1acf5a2..e16c246 100644 --- a/pkg/provisioner/volume.go +++ b/pkg/provisioner/volume.go @@ -21,7 +21,7 @@ import ( "strings" "github.com/hpe-storage/common-host-libs/chain" - "github.com/hpe-storage/common-host-libs/util" + log "github.com/hpe-storage/common-host-libs/logger" api_v1 "k8s.io/api/core/v1" storage_v1 "k8s.io/api/storage/v1" meta_v1 "k8s.io/apimachinery/pkg/apis/meta/v1" @@ -76,18 +76,18 @@ func (p *Provisioner) newVolumeController() (cache.Store, cache.Controller) { func (p *Provisioner) addedVolume(t interface{}) { vol, err := getPersistentVolume(t) if err != nil { - util.LogError.Printf("unable to process pv add - %v, %s", t, err.Error()) + log.Errorf("unable to process pv add - %v, %s", t, err.Error()) } go p.processVolEvent("added", vol, true) } // nolint: dupl func (p *Provisioner) updatedVolume(oldT interface{}, newT interface{}) { - util.LogDebug.Print(">>>>>> updatedVolume called") - defer util.LogDebug.Print("<<<<<< updatedVolume") + log.Debug(">>>>>> updatedVolume called") + defer log.Debug("<<<<<< updatedVolume") vol, err := getPersistentVolume(newT) if err != nil { - util.LogError.Printf("unable to process pv update - %v, %s", newT, err.Error()) + log.Errorf("unable to process pv update - %v, %s", newT, err.Error()) } go p.processVolEvent("updatedVol", vol, true) @@ -95,37 +95,37 @@ func (p *Provisioner) updatedVolume(oldT interface{}, newT interface{}) { // nolint: dupl func (p *Provisioner) deletedVolume(t interface{}) { - util.LogDebug.Print(">>>> deletedVolume called") - defer util.LogDebug.Print("<<<<<< deletedVolume") + log.Debug(">>>> deletedVolume called") + defer log.Debug("<<<<<< deletedVolume") vol, err := getPersistentVolume(t) if err != nil { - util.LogError.Printf("unable to process pv delete - %v, %s", t, err.Error()) + log.Errorf("unable to process pv delete - %v, %s", t, err.Error()) } go p.processVolEvent("deletedVol", vol, false) } // We map updated and deleted events here incase we were not running when the pv state changed to Released. If rmPV is true, we try to remove the pv object from the cluster. If its false, we don't. func (p *Provisioner) processVolEvent(event string, vol *api_v1.PersistentVolume, rmPV bool) { - util.LogInfo.Printf(">>>>> processVolEvent called for event %s vol %s", event, vol.Name) - defer util.LogDebug.Print("<<<<< processVolEvent") + log.Infof(">>>>> processVolEvent called for event %s vol %s", event, vol.Name) + defer log.Info("<<<<< processVolEvent") //notify the monitor go p.sendUpdate(vol) if vol.Status.Phase != api_v1.VolumeReleased || vol.Spec.PersistentVolumeReclaimPolicy != api_v1.PersistentVolumeReclaimDelete { - util.LogInfo.Printf("%s event: pv:%s phase:%v (reclaim policy:%v) - skipping", event, vol.Name, vol.Status.Phase, vol.Spec.PersistentVolumeReclaimPolicy) + log.Infof("%s event: pv:%s phase:%v (reclaim policy:%v) - skipping", event, vol.Name, vol.Status.Phase, vol.Spec.PersistentVolumeReclaimPolicy) return } if _, found := vol.Annotations[k8sProvisionedBy]; !found { - util.LogInfo.Printf("%s event: pv:%s phase:%v (reclaim policy:%v) - missing annotation skipping", event, vol.Name, vol.Status.Phase, vol.Spec.PersistentVolumeReclaimPolicy) + log.Infof("%s event: pv:%s phase:%v (reclaim policy:%v) - missing annotation skipping", event, vol.Name, vol.Status.Phase, vol.Spec.PersistentVolumeReclaimPolicy) return } if !strings.HasPrefix(vol.Annotations[k8sProvisionedBy], CsiProvisioner) && !strings.HasPrefix(vol.Annotations[k8sProvisionedBy], FlexVolumeProvisioner) { - util.LogInfo.Printf("%s event: pv:%s phase:%v (reclaim policy:%v) provisioner:%v - unknown provisioner skipping", event, vol.Name, vol.Status.Phase, vol.Spec.PersistentVolumeReclaimPolicy, vol.Annotations[k8sProvisionedBy]) + log.Infof("%s event: pv:%s phase:%v (reclaim policy:%v) provisioner:%v - unknown provisioner skipping", event, vol.Name, vol.Status.Phase, vol.Spec.PersistentVolumeReclaimPolicy, vol.Annotations[k8sProvisionedBy]) return } - util.LogDebug.Printf("%s event: cleaning up pv:%s phase:%v", event, vol.Name, vol.Status.Phase) + log.Debugf("%s event: cleaning up pv:%s phase:%v", event, vol.Name, vol.Status.Phase) p.deleteVolume(vol, rmPV) } @@ -142,8 +142,8 @@ func getPersistentVolume(t interface{}) (*api_v1.PersistentVolume, error) { // get the pv corresponding to this pvc and substitute with pv (docker/csi volume name) func (p *Provisioner) getVolumeNameFromClaimName(nameSpace, claimName string) (string, error) { - util.LogDebug.Printf(">>>>> getVolumeNameFromClaimName called %s with PVC Name %s", cloneOfPVC, claimName) - defer util.LogDebug.Printf("<<<< getVolumeNameFromClaimName") + log.Debugf(">>>>> getVolumeNameFromClaimName called %s with PVC Name %s", cloneOfPVC, claimName) + defer log.Debug("<<<< getVolumeNameFromClaimName") claim, err := p.getClaimFromPVCName(nameSpace, claimName) if err != nil { return "", err @@ -155,20 +155,20 @@ func (p *Provisioner) getVolumeNameFromClaimName(nameSpace, claimName string) (s } func (p *Provisioner) parseStorageClassParams(params map[string]string, class *storage_v1.StorageClass, claimSizeinGiB int, listOfOptions []string, nameSpace string) (map[string]interface{}, error) { - util.LogDebug.Print(">>>> parseStorageClassParams called") - defer util.LogDebug.Print("<<<< parseStorageClassParams") + log.Debug(">>>> parseStorageClassParams called") + defer log.Debug("<<<< parseStorageClassParams") volCreateOpts := make(map[string]interface{}, len(params)) foundSizeKey := false for key, value := range params { if key == cloneOfPVC { pvName, err := p.getVolumeNameFromClaimName(nameSpace, value) if err != nil { - util.LogError.Printf("Error to retrieve pvc %s/%s : %s return existing options", nameSpace, value, err.Error()) + log.Errorf("Error to retrieve pvc %s/%s : %s return existing options", nameSpace, value, err.Error()) p.eventRecorder.Event(class, api_v1.EventTypeWarning, "ProvisionStorage", fmt.Sprintf("Error to retrieve pvc %s/%s : %s", nameSpace, value, err.Error())) return nil, err } - util.LogDebug.Printf("setting key : cloneOf value : %v", pvName) + log.Debugf("setting key : cloneOf value : %v", pvName) volCreateOpts["cloneOf"] = pvName continue } @@ -177,7 +177,7 @@ func (p *Provisioner) parseStorageClassParams(params map[string]string, class *s foundSizeKey = true for _, option := range listOfOptions { if key == option { - util.LogInfo.Printf("storageclass option matched storage resource option:%s ,overriding the value to %d", key, claimSizeinGiB) + log.Infof("storageclass option matched storage resource option:%s ,overriding the value to %d", key, claimSizeinGiB) volCreateOpts[key] = claimSizeinGiB break } @@ -185,7 +185,7 @@ func (p *Provisioner) parseStorageClassParams(params map[string]string, class *s } } if claimSizeinGiB > 0 && !foundSizeKey { - util.LogDebug.Print("storage class does not contain size key, overriding to claim size") + log.Debug("storage class does not contain size key, overriding to claim size") volCreateOpts["size"] = claimSizeinGiB } return volCreateOpts, nil @@ -203,7 +203,7 @@ func contains(s []string, e string) bool { func (p *Provisioner) newPersistentVolume(pvName string, params map[string]string, claim *api_v1.PersistentVolumeClaim, class *storage_v1.StorageClass) (*api_v1.PersistentVolume, error) { claimRef, err := reference.GetReference(scheme.Scheme, claim) if err != nil { - util.LogError.Printf("unable to get reference for claim %v. %s", claim, err) + log.Errorf("unable to get reference for claim %v. %s", claim, err) return nil, err } diff --git a/pkg/provisioner/volumeattachment.go b/pkg/provisioner/volumeattachment.go index 5dd25fd..2cdc806 100644 --- a/pkg/provisioner/volumeattachment.go +++ b/pkg/provisioner/volumeattachment.go @@ -8,8 +8,8 @@ import ( "fmt" csi_spec "github.com/container-storage-interface/spec/lib/go/csi" + log "github.com/hpe-storage/common-host-libs/logger" "github.com/hpe-storage/common-host-libs/model" - "github.com/hpe-storage/common-host-libs/util" api_v1 "k8s.io/api/core/v1" storage_v1 "k8s.io/api/storage/v1" meta_v1 "k8s.io/apimachinery/pkg/apis/meta/v1" @@ -55,7 +55,7 @@ func (p *Provisioner) newVolumeAttachmentController() (cache.Store, cache.Contro func (p *Provisioner) addedVolumeAttachments(t interface{}) { va, err := getVolumeAttachment(t) if err != nil { - util.LogError.Printf("unable to process va add - %v, %s", t, err.Error()) + log.Errorf("unable to process va add - %v, %s", t, err.Error()) } go p.processVAAddEvent(va) } @@ -64,7 +64,7 @@ func (p *Provisioner) addedVolumeAttachments(t interface{}) { func (p *Provisioner) updatedVolumeAttachments(oldT interface{}, newT interface{}) { va, err := getVolumeAttachment(newT) if err != nil { - util.LogError.Printf("unable to process va update - %v, %s", newT, err.Error()) + log.Errorf("unable to process va update - %v, %s", newT, err.Error()) } go p.processVAUpdateEvent(va) } @@ -73,7 +73,7 @@ func (p *Provisioner) updatedVolumeAttachments(oldT interface{}, newT interface{ func (p *Provisioner) deletedVolumeAttachments(t interface{}) { va, err := getVolumeAttachment(t) if err != nil { - util.LogError.Printf("unable to process va delete - %v, %s", t, err.Error()) + log.Errorf("unable to process va delete - %v, %s", t, err.Error()) } go p.processVADeleteEvent(va) } @@ -91,59 +91,59 @@ func getVolumeAttachment(t interface{}) (*storage_v1.VolumeAttachment, error) { } func (p *Provisioner) processVAUpdateEvent(va *storage_v1.VolumeAttachment) error { - util.LogInfo.Printf(">>>>>> processVAUpdateEvent called") - defer util.LogInfo.Printf("<<<<<< processVAUpdateEvent") + log.Info(">>>>>> processVAUpdateEvent called") + defer log.Info("<<<<<< processVAUpdateEvent") //TODO : check for updates return nil } func (p *Provisioner) processVADeleteEvent(va *storage_v1.VolumeAttachment) error { - util.LogInfo.Printf(">>>>>> processVADeleteEvent called") - defer util.LogInfo.Printf("<<<<<< processVADeleteEvent") + log.Info(">>>>>> processVADeleteEvent called") + defer log.Info("<<<<<< processVADeleteEvent") err := p.processDetach(va) if err != nil { - util.LogDebug.Printf("err=%s", err.Error()) + log.Debugf("err=%s", err.Error()) return nil } - util.LogDebug.Printf("deleting va %s", va.Name) + log.Debugf("deleting va %s", va.Name) err = p.kubeClient.StorageV1().VolumeAttachments().Delete(va.Name, &meta_v1.DeleteOptions{}) if err != nil { - util.LogError.Printf(err.Error()) + log.Error(err.Error()) return nil } return nil } func (p *Provisioner) processVAAddEvent(va *storage_v1.VolumeAttachment) error { - util.LogInfo.Printf(">>>>>> processVAAddEvent called") - defer util.LogInfo.Printf("<<<<<< processVAAddEvent") + log.Info(">>>>>> processVAAddEvent called") + defer log.Info("<<<<<< processVAAddEvent") // if the VA is already in deletion state, we can't process it for addition if va.DeletionTimestamp != nil { return fmt.Errorf("va %s DeletionTimestamp is set to %v, ignoring Attach", va.Name, va.DeletionTimestamp) } - util.LogInfo.Printf("va %s has been created for attach. current phase=%v", va.Name, va.Status) + log.Infof("va %s has been created for attach. current phase=%v", va.Name, va.Status) err := p.processAttach(va) if err != nil { - util.LogDebug.Printf("err=%s", err.Error()) + log.Debugf("err=%s", err.Error()) return err } return nil } func (p *Provisioner) processDetach(va *storage_v1.VolumeAttachment) error { - util.LogInfo.Printf(">>>>>> processDetach called") - defer util.LogInfo.Printf("<<<<<< processDetach") + log.Info(">>>>>> processDetach called") + defer log.Info("<<<<<< processDetach") va, err := p.executeDetach(va) if err != nil { return err } - util.LogDebug.Printf("va %s after detach is %#v", va.Name, va) + log.Debugf("va %s after detach is %#v", va.Name, va) return nil } func (p *Provisioner) processAttach(va *storage_v1.VolumeAttachment) error { - util.LogInfo.Printf(">>>>>> processAttach called") - defer util.LogInfo.Printf("<<<<<< processAttach") + log.Info(">>>>>> processAttach called") + defer log.Info("<<<<<< processAttach") if va.Status.Attached { // volume is attached nothing to do return nil @@ -151,21 +151,21 @@ func (p *Provisioner) processAttach(va *storage_v1.VolumeAttachment) error { // executeAttach volumeattachment attach workflow va, metadata, err := p.executeAttach(va) if err != nil { - util.LogDebug.Printf("err=%s", err.Error()) + log.Debugf("err=%s", err.Error()) return err } - util.LogInfo.Printf("Attached %q", va.Name) + log.Infof("Attached %q", va.Name) // update VA Status if _, err := p.markAsAttached(va, metadata); err != nil { return fmt.Errorf("failed to mark va %s as attached: %s", va.Name, err.Error()) } - util.LogInfo.Printf("Fully attached %q", va.Name) + log.Infof("Fully attached %q", va.Name) return nil } func (p *Provisioner) getPVFromVA(va *storage_v1.VolumeAttachment) (*api_v1.PersistentVolume, error) { - util.LogDebug.Printf(">>>>>> getPVFromVA called") - defer util.LogDebug.Printf("<<<<<< getPVFromVA") + log.Debug(">>>>>> getPVFromVA called") + defer log.Debug("<<<<<< getPVFromVA") pvName := *va.Spec.Source.PersistentVolumeName pvInterface, found, err := p.pvStore.GetByKey(pvName) if err != nil { @@ -182,8 +182,8 @@ func (p *Provisioner) getPVFromVA(va *storage_v1.VolumeAttachment) (*api_v1.Pers } func (p *Provisioner) executeDetach(va *storage_v1.VolumeAttachment) (*storage_v1.VolumeAttachment, error) { - util.LogInfo.Printf(">>>>>> executeDetach called") - defer util.LogInfo.Printf("<<<<<< executeDetach") + log.Info(">>>>>> executeDetach called") + defer log.Info("<<<<<< executeDetach") if va.Spec.Source.PersistentVolumeName == nil { return va, fmt.Errorf("VolumeAttachment.spec.persistentVolumeName is empty") } @@ -218,7 +218,7 @@ func (p *Provisioner) executeDetach(va *storage_v1.VolumeAttachment) (*storage_v Secrets: secrets, } - util.LogDebug.Printf("ControllerUnpublishVolumeRequest for volume %s = %#v", pv.Name, controllerUnpublishReq) + log.Debugf("ControllerUnpublishVolumeRequest for volume %s = %#v", pv.Name, controllerUnpublishReq) ctx, cancel := context.WithTimeout(context.Background(), csiTimeout) defer cancel() @@ -232,14 +232,14 @@ func (p *Provisioner) executeDetach(va *storage_v1.VolumeAttachment) (*storage_v return va, fmt.Errorf("could not mark as detached: %s", err) } - util.LogInfo.Printf("va %s is Detached", va.Name) + log.Infof("va %s is Detached", va.Name) return va, nil } // nolint : gocyclo func (p *Provisioner) executeAttach(va *storage_v1.VolumeAttachment) (*storage_v1.VolumeAttachment, map[string]string, error) { - util.LogDebug.Printf(">>>>>> executeAttach called") - defer util.LogDebug.Printf("<<<<<< executeAttach") + log.Debug(">>>>>> executeAttach called") + defer log.Debug("<<<<<< executeAttach") if va.Spec.Source.PersistentVolumeName == nil { return va, nil, fmt.Errorf("VolumeAttachment.Spec.Source.PersistentVolumeName is empty") } @@ -281,7 +281,7 @@ func (p *Provisioner) executeAttach(va *storage_v1.VolumeAttachment) (*storage_v if err != nil { return va, nil, err } - util.LogDebug.Printf("getVolumeCapabililty = %#v", volCap) + log.Debugf("getVolumeCapabililty = %#v", volCap) controllerPublishReq := &csi_spec.ControllerPublishVolumeRequest{ VolumeId: pv.Spec.CSI.VolumeHandle, @@ -292,7 +292,7 @@ func (p *Provisioner) executeAttach(va *storage_v1.VolumeAttachment) (*storage_v VolumeContext: pv.Spec.CSI.VolumeAttributes, } - util.LogDebug.Printf("ControllerPublishVolumeRequest for volume %s = %#v", pv.Name, controllerPublishReq) + log.Debugf("ControllerPublishVolumeRequest for volume %s = %#v", pv.Name, controllerPublishReq) ctx, cancel := context.WithTimeout(context.Background(), csiTimeout) defer cancel() @@ -301,7 +301,7 @@ func (p *Provisioner) executeAttach(va *storage_v1.VolumeAttachment) (*storage_v if err != nil { return va, nil, err } - util.LogInfo.Printf("ControllerPublishVolumeResponse for volume %s is %#v", pv.Name, publishInfoRsp) + log.Infof("ControllerPublishVolumeResponse for volume %s is %#v", pv.Name, publishInfoRsp) if publishInfoRsp.PublishContext == nil { return va, nil, fmt.Errorf("unable to retrieve PublishContext from ControllePublishVolume for %s", pv.Name) } @@ -314,8 +314,8 @@ func isPvModeBlock(pv *api_v1.PersistentVolume) bool { } func (p *Provisioner) getVolumeCapabililty(pv *api_v1.PersistentVolume) (*csi_spec.VolumeCapability, error) { - util.LogDebug.Printf(">>>>>> getVolumeCapabililty called") - defer util.LogDebug.Printf("<<<<<< getVolumeCapabililty") + log.Debug(">>>>>> getVolumeCapabililty called") + defer log.Debug("<<<<<< getVolumeCapabililty") // If block access type, then return block volume capability if isPvModeBlock(pv) { @@ -329,7 +329,7 @@ func (p *Provisioner) getVolumeCapabililty(pv *api_v1.PersistentVolume) (*csi_sp // Else mount access type, then return mount access capability fsType := pv.Spec.CSI.FSType if fsType == "" { - util.LogDebug.Print("Using default filesystem: ", defaultFSType) + log.Debug("Using default filesystem: ", defaultFSType) fsType = defaultFSType } return &csi_spec.VolumeCapability{ @@ -342,8 +342,8 @@ func (p *Provisioner) getVolumeCapabililty(pv *api_v1.PersistentVolume) (*csi_sp // getNodeIDFromNode returns nodeID string from node annotations. func (p *Provisioner) getNodeIDFromNode(node *api_v1.Node) (string, error) { - util.LogDebug.Printf(">>>>>> getNodeIDFromNode") - defer util.LogDebug.Printf("<<<<<< getNodeIDFromNode") + log.Debug(">>>>>> getNodeIDFromNode") + defer log.Debug("<<<<<< getNodeIDFromNode") nodeIDJSON, ok := node.Annotations[nodeIDAnnotation] if !ok { return "", fmt.Errorf("node %q has no NodeID annotation", node.Name) @@ -362,8 +362,8 @@ func (p *Provisioner) getNodeIDFromNode(node *api_v1.Node) (string, error) { } func (p *Provisioner) getNodeID(va *storage_v1.VolumeAttachment) (string, error) { - util.LogDebug.Printf(">>>>>> getNodeID") - defer util.LogDebug.Printf("<<<<<< getNodeID") + log.Debug(">>>>>> getNodeID") + defer log.Debug("<<<<<< getNodeID") if va.Spec.NodeName == "" { return "", fmt.Errorf("no NodeName present in VA Spec for %s", va.Name) } @@ -371,19 +371,19 @@ func (p *Provisioner) getNodeID(va *storage_v1.VolumeAttachment) (string, error) nodeInfo, err := p.csiClient.CsiV1alpha1().CSINodeInfos().Get(va.Spec.NodeName, meta_v1.GetOptions{}) if err == nil { if nodeID, found := p.getNodeIDFromNodeInfo(nodeInfo); found { - util.LogInfo.Printf("Found NodeID %s in CSINodeInfo %s", nodeID, va.Spec.NodeName) + log.Infof("Found NodeID %s in CSINodeInfo %s", nodeID, va.Spec.NodeName) return nodeID, nil } // Fall through to Node annotation. } else { // Can't get CSINodeInfo, Maybe because of feature gate disabled for CSINodeInfos, fall through to Node annotation. - util.LogInfo.Printf("Can't get CSINodeInfo %s: %s", va.Spec.NodeName, err.Error()) + log.Infof("Can't get CSINodeInfo %s: %s", va.Spec.NodeName, err.Error()) } // Check Node annotation if it contains the node-id which matches the VA Node name node, err := p.kubeClient.CoreV1().Nodes().Get(va.Spec.NodeName, meta_v1.GetOptions{}) if err == nil { - util.LogDebug.Printf("retrieved Node %#v for VA %s", node, va.Name) + log.Debugf("retrieved Node %#v for VA %s", node, va.Name) return p.getNodeIDFromNode(node) } @@ -409,17 +409,17 @@ func (p *Provisioner) getNodeIDFromNodeInfo(nodeInfo *csi_v1_alpha1.CSINodeInfo) } func (p *Provisioner) getNodeInfoFromHPENodeInfo(nodeID string) (string, error) { - util.LogDebug.Printf(">>>>>> getNodeInfoFromHPENodeInfo from node ID %s", nodeID) - defer util.LogDebug.Printf("<<<<<< getNodeInfoFromHPENodeInfo") + log.Debugf(">>>>>> getNodeInfoFromHPENodeInfo from node ID %s", nodeID) + defer log.Debugf("<<<<<< getNodeInfoFromHPENodeInfo") nodeInfoList, err := p.crdClient.StorageV1().HPENodeInfos().List(meta_v1.ListOptions{}) if err != nil { return "", err } - util.LogDebug.Printf("Found the following HPE Node Info objects: %v", nodeInfoList) + log.Debugf("Found the following HPE Node Info objects: %v", nodeInfoList) for _, nodeInfo := range nodeInfoList.Items { - util.LogDebug.Printf("Processing node info %v", nodeInfo) + log.Debugf("Processing node info %v", nodeInfo) if nodeInfo.Spec.UUID == nodeID { iqns := make([]*string, len(nodeInfo.Spec.IQNs)) @@ -454,8 +454,8 @@ func (p *Provisioner) getNodeInfoFromHPENodeInfo(nodeID string) (string, error) } func (p *Provisioner) markAsAttached(va *storage_v1.VolumeAttachment, metadata map[string]string) (*storage_v1.VolumeAttachment, error) { - util.LogInfo.Printf(">>>>>> markAsAttached called") - defer util.LogDebug.Printf("<<<<<<< markAsAttached") + log.Debug(">>>>>> markAsAttached called") + defer log.Debug("<<<<<<< markAsAttached") clone := va.DeepCopy() clone.Status.Attached = true clone.Status.AttachmentMetadata = metadata @@ -463,16 +463,16 @@ func (p *Provisioner) markAsAttached(va *storage_v1.VolumeAttachment, metadata m // volumeattachment/status create/update capability is needed newVA, err := p.kubeClient.StorageV1().VolumeAttachments().UpdateStatus(clone) if err != nil { - util.LogError.Printf("err = %s", err.Error()) + log.Errorf("err = %s", err.Error()) return va, err } - util.LogInfo.Printf("Marked as attached %q Status :%v", newVA.Name, newVA.Status) + log.Infof("Marked as attached %q Status :%v", newVA.Name, newVA.Status) return newVA, nil } func (p *Provisioner) markAsDetached(va *storage_v1.VolumeAttachment) (*storage_v1.VolumeAttachment, error) { - util.LogInfo.Printf(">>>>>> markAsDetached called") - defer util.LogDebug.Printf("<<<<<<< markAsDetached") + log.Debug(">>>>>> markAsDetached called") + defer log.Debug("<<<<<<< markAsDetached") // get the latest state of the va before updating. It could be Detached by the time it reaches here updatedVA, _ := p.kubeClient.StorageV1().VolumeAttachments().Get(va.Name, meta_v1.GetOptions{}) if updatedVA == nil { @@ -480,10 +480,10 @@ func (p *Provisioner) markAsDetached(va *storage_v1.VolumeAttachment) (*storage_ return va, nil } if !updatedVA.Status.Attached { - util.LogInfo.Printf("Already fully detached %q", va.Name) + log.Infof("Already fully detached %q", va.Name) return va, nil } - util.LogDebug.Printf("Marking %q as detached", va.Name) + log.Debugf("Marking %q as detached", va.Name) clone := updatedVA.DeepCopy() clone.Status.Attached = false clone.Status.AttachmentMetadata = nil