diff --git a/cmd/controller/main.go b/cmd/controller/main.go index 153ba5fd..1d2f0955 100644 --- a/cmd/controller/main.go +++ b/cmd/controller/main.go @@ -9,9 +9,8 @@ import ( "github.com/spf13/cobra" wks "github.com/weaveworks/wksctl/pkg/apis/wksprovider/controller/wksctl" machineutil "github.com/weaveworks/wksctl/pkg/cluster/machine" - existinginfrav1 "github.com/weaveworks/wksctl/pkg/existinginfra/v1alpha3" + "github.com/weaveworks/wksctl/pkg/scheme" "k8s.io/client-go/kubernetes" - clusterv1 "sigs.k8s.io/cluster-api/api/v1alpha3" "sigs.k8s.io/controller-runtime/pkg/client" "sigs.k8s.io/controller-runtime/pkg/client/config" "sigs.k8s.io/controller-runtime/pkg/controller" @@ -85,19 +84,14 @@ func run(cmd *cobra.Command, args []string) { if err != nil { log.Fatalf("failed to create Kubernetes client set: %v", err) } - mgr, err := manager.New(cfg, manager.Options{}) + mgr, err := manager.New(cfg, manager.Options{ + // Use our own Scheme here with our known types, and the client-go k8s ones + Scheme: scheme.Scheme, + }) if err != nil { log.Fatalf("failed to create the cluster manager: %v", err) } - log.Info("registering scheme for all resources") - if err := existinginfrav1.AddToScheme(mgr.GetScheme()); err != nil { - log.Fatal(err) - } - if err := clusterv1.AddToScheme(mgr.GetScheme()); err != nil { - log.Fatal(err) - } - log.Info("registering controllers to the cluster manager") clusterReconciler, err := wks.NewClusterReconciler(mgr.GetClient(), mgr.GetEventRecorderFor(wks.ProviderName+"-controller")) if err != nil { diff --git a/cmd/wksctl/main.go b/cmd/wksctl/main.go index 901bfc90..8a018ec9 100644 --- a/cmd/wksctl/main.go +++ b/cmd/wksctl/main.go @@ -6,8 +6,6 @@ import ( log "github.com/sirupsen/logrus" "github.com/spf13/cobra" "github.com/weaveworks/go-checkpoint" - "k8s.io/client-go/kubernetes/scheme" - clusterv1 "sigs.k8s.io/cluster-api/api/v1alpha3" "github.com/weaveworks/wksctl/cmd/wksctl/addon" "github.com/weaveworks/wksctl/cmd/wksctl/apply" @@ -20,7 +18,6 @@ import ( "github.com/weaveworks/wksctl/cmd/wksctl/registrysynccommands" "github.com/weaveworks/wksctl/cmd/wksctl/version" "github.com/weaveworks/wksctl/cmd/wksctl/zshcompletions" - existinginfrav1 "github.com/weaveworks/wksctl/pkg/existinginfra/v1alpha3" v "github.com/weaveworks/wksctl/pkg/version" ) @@ -45,13 +42,6 @@ func configureLogger(cmd *cobra.Command, args []string) { } func main() { - if err := clusterv1.AddToScheme(scheme.Scheme); err != nil { - log.Fatal(err) - } - if err := existinginfrav1.AddToScheme(scheme.Scheme); err != nil { - log.Fatal(err) - } - rootCmd.PersistentFlags().BoolVarP(&options.verbose, "verbose", "v", false, "Enable verbose output") rootCmd.AddCommand(addon.Cmd) diff --git a/config/crd/cluster.weave.works_existinginfraclusters.yaml b/config/crd/cluster.weave.works_existinginfraclusters.yaml index bf8396a6..3150a493 100644 --- a/config/crd/cluster.weave.works_existinginfraclusters.yaml +++ b/config/crd/cluster.weave.works_existinginfraclusters.yaml @@ -159,7 +159,6 @@ spec: type: string required: - cri - - sshKeyPath - user type: object status: diff --git a/go.mod b/go.mod index e46ea243..48496d45 100644 --- a/go.mod +++ b/go.mod @@ -15,8 +15,6 @@ require ( github.com/google/go-jsonnet v0.16.0 github.com/googleapis/gnostic v0.4.1 // indirect github.com/hashicorp/go-cleanhttp v0.5.1 // indirect - github.com/kr/text v0.2.0 // indirect - github.com/niemeyer/pretty v0.0.0-20200227124842-a10e7caefd8e // indirect github.com/oleiade/reflections v1.0.0 // indirect github.com/pelletier/go-toml v1.8.0 github.com/pkg/errors v0.9.1 @@ -31,13 +29,13 @@ require ( github.com/weaveworks/footloose v0.0.0-20200609124411-8f3df89ea188 github.com/weaveworks/go-checkpoint v0.0.0-20170503165305-ebbb8b0518ab github.com/weaveworks/launcher v0.0.0-20180824102238-59a4fcc32c9c + github.com/weaveworks/libgitops v0.0.2 github.com/whilp/git-urls v0.0.0-20191001220047-6db9661140c0 golang.org/x/crypto v0.0.0-20200707235045-ab33eee955e0 golang.org/x/sys v0.0.0-20200625212154-ddb9806d33ae // indirect golang.org/x/tools v0.0.0-20200708003708-134513de8882 // indirect gomodules.xyz/jsonpatch/v2 v2.1.0 // indirect google.golang.org/appengine v1.6.5 // indirect - gopkg.in/check.v1 v1.0.0-20200227125254-8fa46927fb4f // indirect gopkg.in/oleiade/reflections.v1 v1.0.0 gopkg.in/src-d/go-git.v4 v4.13.1 k8s.io/api v0.18.5 @@ -50,6 +48,7 @@ require ( k8s.io/utils v0.0.0-20200619165400-6e3d28b6ed19 sigs.k8s.io/cluster-api v0.3.6 sigs.k8s.io/controller-runtime v0.6.0 + sigs.k8s.io/kustomize/kyaml v0.1.11 sigs.k8s.io/yaml v1.2.0 ) diff --git a/go.sum b/go.sum index e1a17c44..016c73eb 100644 --- a/go.sum +++ b/go.sum @@ -1,10 +1,14 @@ +bazil.org/fuse v0.0.0-20160811212531-371fbbdaa898/go.mod h1:Xbm+BRKSBEpa4q4hTSxohYNQpsxXPbPry4JJWOB3LB8= bitbucket.org/bertimus9/systemstat v0.0.0-20180207000608-0eeff89b0690/go.mod h1:Ulb78X89vxKYgdL24HMTiXYHlyHEvruOj1ZPlqeNEZM= cloud.google.com/go v0.26.0/go.mod h1:aQUYkXzVsufM+DwF1aE+0xfcU+56JwCaLick0ClmMTw= cloud.google.com/go v0.34.0/go.mod h1:aQUYkXzVsufM+DwF1aE+0xfcU+56JwCaLick0ClmMTw= cloud.google.com/go v0.38.0/go.mod h1:990N+gfupTy94rShfmMCWGDn0LpTmnzTp2qbd1dvSRU= +github.com/360EntSecGroup-Skylar/excelize v1.4.1/go.mod h1:vnax29X2usfl7HHkBrX5EvSCJcmH3dT9luvxzu8iGAE= +github.com/Azure/azure-sdk-for-go v16.2.1+incompatible/go.mod h1:9XXNKU+eRnpl9moKnB4QOLf1HestfXbmab5FXxiDBjc= github.com/Azure/azure-sdk-for-go v35.0.0+incompatible/go.mod h1:9XXNKU+eRnpl9moKnB4QOLf1HestfXbmab5FXxiDBjc= github.com/Azure/go-ansiterm v0.0.0-20170929234023-d6e3b3328b78 h1:w+iIsaOQNcT7OZ575w+acHgRric5iCyQh+xv+KJ4HB8= github.com/Azure/go-ansiterm v0.0.0-20170929234023-d6e3b3328b78/go.mod h1:LmzpDX56iTiv29bbRTIsUNlaFfuhWRQBWjQdVyAevI8= +github.com/Azure/go-autorest v10.8.1+incompatible/go.mod h1:r+4oMnoxhatjLLJ6zxSWATqVooLgysK6ZNox3g/xq24= github.com/Azure/go-autorest/autorest v0.9.0/go.mod h1:xyHB1BMZT0cuDHU7I0+g046+BFDTQ8rEZB0s4Yfa6bI= github.com/Azure/go-autorest/autorest/adal v0.5.0/go.mod h1:8Z9fGy2MpX0PvDjB1pEgQTmVqjGhiHBW7RJJEciWzS0= github.com/Azure/go-autorest/autorest/date v0.1.0/go.mod h1:plvfp3oPSKwf2DNjlBjWF/7vwR+cUD/ELuzDCXwHUVA= @@ -22,12 +26,19 @@ github.com/JeffAshton/win_pdh v0.0.0-20161109143554-76bb4ee9f0ab/go.mod h1:3VYc5 github.com/MakeNowJust/heredoc v0.0.0-20170808103936-bb23615498cd/go.mod h1:64YHyfSL2R96J44Nlwm39UHepQbyR5q10x7iYa1ks2E= github.com/MakeNowJust/heredoc v1.0.0 h1:cXCdzVdstXyiTqTvfqk9SDHpKNjxuom+DOlyEeQ4pzQ= github.com/MakeNowJust/heredoc v1.0.0/go.mod h1:mG5amYoWBHf8vpLOuehzbGGw0EHxpZZ6lCpQ4fNJ8LE= +github.com/Masterminds/goutils v1.1.0/go.mod h1:8cTjp+g8YejhMuvIA5y2vz3BpJxksy863GQaJW2MFNU= +github.com/Masterminds/semver/v3 v3.0.3/go.mod h1:VPu/7SZ7ePZ3QOrcuXROw5FAcLl4a0cBrbBpGY/8hQs= +github.com/Masterminds/sprig/v3 v3.0.2/go.mod h1:oesJ8kPONMONaZgtiHNzUShJbksypC5kWczhZAf6+aU= +github.com/Masterminds/vcs v1.13.1/go.mod h1:N09YCmOQr6RLxC6UNHzuVwAdodYbbnycGHSmwVJjcKA= github.com/Microsoft/go-winio v0.4.14/go.mod h1:qXqCSQ3Xa7+6tgxaGTIe4Kpcdsi+P8jBhyzoq1bpyYA= +github.com/Microsoft/go-winio v0.4.15-0.20190919025122-fc70bd9a86b5/go.mod h1:tTuCMEN+UleMWgg9dVx4Hu52b1bJo+59jBh3ajtinzw= github.com/Microsoft/hcsshim v0.0.0-20190417211021-672e52e9209d/go.mod h1:Op3hHsoHPAvb6lceZHDtd9OkTew38wNoXnJs8iY7rUg= +github.com/Microsoft/hcsshim v0.8.7/go.mod h1:OHd7sQqRFrYd3RmSgbgji+ctCwkbq2wbEYNSzOYtcBQ= github.com/NYTimes/gziphandler v0.0.0-20170623195520-56545f4a5d46/go.mod h1:3wb06e3pkSAbeQ52E9H9iFoQsEEwGN64994WTCIhntQ= github.com/OneOfOne/xxhash v1.2.2/go.mod h1:HSdplMjZKSmBqAxg5vPj2TmRDmfkzw+cTzAElWljhcU= github.com/OpenPeeDeeP/depguard v1.0.0/go.mod h1:7/4sitnI9YlQgTLLk734QlzXT8DuHVnAyztLplQjk+o= github.com/OpenPeeDeeP/depguard v1.0.1/go.mod h1:xsIw86fROiiwelg+jB2uM9PiKihMMmUx/1V+TNhjQvM= +github.com/PuerkitoBio/goquery v1.5.0/go.mod h1:qD2PgZ9lccMbQlc7eEOjaeRlFQON7xY8kdmcsrnKqMg= github.com/PuerkitoBio/purell v1.0.0/go.mod h1:c11w/QuzBsJSee3cPx9rAFu61PvFxuPbtSwDGJws/X0= github.com/PuerkitoBio/purell v1.1.0/go.mod h1:c11w/QuzBsJSee3cPx9rAFu61PvFxuPbtSwDGJws/X0= github.com/PuerkitoBio/purell v1.1.1 h1:WEQqlqaGbrPkxLJWfBwQmfEAE1Z7ONdDLqrN38tNFfI= @@ -36,6 +47,7 @@ github.com/PuerkitoBio/urlesc v0.0.0-20160726150825-5bd2802263f2/go.mod h1:uGdko github.com/PuerkitoBio/urlesc v0.0.0-20170810143723-de5bf2ad4578 h1:d+Bc7a5rLufV/sSk/8dngufqelfh6jnri85riMAaF/M= github.com/PuerkitoBio/urlesc v0.0.0-20170810143723-de5bf2ad4578/go.mod h1:uGdkoq3SwY9Y+13GIhn11/XLaGBb4BfwItxLd5jeuXE= github.com/Rican7/retry v0.1.0/go.mod h1:FgOROf8P5bebcC1DS0PdOQiqGUridaZvikzUmkFW6gg= +github.com/Shopify/logrus-bugsnag v0.0.0-20171204204709-577dee27f20d/go.mod h1:HI8ITrYtUY+O+ZhtlqUnD8+KwNPOyugEhfP9fdUIaEQ= github.com/StackExchange/wmi v0.0.0-20180116203802-5d049714c4a6/go.mod h1:3eOhrUMpNV+6aFIbp5/iudMxNCF27Vw2OZgy4xEx0Fg= github.com/agnivade/levenshtein v1.0.1/go.mod h1:CURSv5d9Uaml+FovSIICkLbAUZ9S4RqaHDIsdSBg7lM= github.com/ajstarks/svgo v0.0.0-20180226025133-644b8db467af/go.mod h1:K08gAheRH3/J6wwsYMMT4xOr94bZjxIelGM0+d/wbFw= @@ -47,6 +59,7 @@ github.com/alecthomas/units v0.0.0-20151022065526-2efee857e7cf/go.mod h1:ybxpYRF github.com/alecthomas/units v0.0.0-20190717042225-c3de453c63f4/go.mod h1:ybxpYRFXyAe+OPACYpWeL0wqObRcbAqCMya13uyzqw0= github.com/alessio/shellescape v0.0.0-20190409004728-b115ca0f9053/go.mod h1:xW8sBma2LE3QxFSzCnH9qe6gAE2yO9GvQaWwX89HxbE= github.com/andreyvit/diff v0.0.0-20170406064948-c7f18ee00883/go.mod h1:rCTlJbsFo29Kk6CurOXKm700vrz8f0KW0JNfpkRJY/8= +github.com/andybalholm/cascadia v1.0.0/go.mod h1:GsXiBklL0woXo1j/WYWtSYYC4ouU9PqHO0sqidkEA4Y= github.com/anmitsu/go-shlex v0.0.0-20161002113705-648efa622239 h1:kFOfPq6dUM1hTo4JG6LR5AXSUEsOjtdm0kw0FtQtMJA= github.com/anmitsu/go-shlex v0.0.0-20161002113705-648efa622239/go.mod h1:2FmKhYUyUczH0OGQWaF5ceTx0UBShxjsH6f8oGKYe2c= github.com/armon/circbuf v0.0.0-20150827004946-bbbad097214e/go.mod h1:3U/XgcO3hCbHZ8TKRvWD2dDTCfh9M9ya+I9JpbB7O8o= @@ -55,28 +68,40 @@ github.com/armon/go-socks5 v0.0.0-20160902184237-e75332964ef5 h1:0CwZNZbxp69SHPd github.com/armon/go-socks5 v0.0.0-20160902184237-e75332964ef5/go.mod h1:wHh0iHkYZB8zMSxRWpUBQtwG5a7fFgvEO+odwuTv2gs= github.com/asaskevich/govalidator v0.0.0-20180720115003-f9ffefc3facf/go.mod h1:lB+ZfQJz7igIIfQNfa7Ml4HSf2uFQQRzpGGRXenZAgY= github.com/asaskevich/govalidator v0.0.0-20190424111038-f61b66f89f4a/go.mod h1:lB+ZfQJz7igIIfQNfa7Ml4HSf2uFQQRzpGGRXenZAgY= +github.com/asaskevich/govalidator v0.0.0-20200108200545-475eaeb16496/go.mod h1:oGkLhpf+kjZl6xBf758TQhh5XrAeiJv/7FRz/2spLIg= github.com/auth0/go-jwt-middleware v0.0.0-20170425171159-5493cabe49f7/go.mod h1:LWMyo4iOLWXHGdBki7NIht1kHru/0wM179h+d3g8ATM= +github.com/aws/aws-sdk-go v1.15.11/go.mod h1:mFuSZ37Z9YOHbQEwBWztmVzqXrEkub65tZoCYDt7FT0= github.com/aws/aws-sdk-go v1.28.2/go.mod h1:KmX6BPdI08NWTb3/sm4ZGu5ShLoqVDhKgpiN924inxo= github.com/bazelbuild/bazel-gazelle v0.18.2/go.mod h1:D0ehMSbS+vesFsLGiD6JXu3mVEzOlfUl8wNnq+x/9p0= github.com/bazelbuild/bazel-gazelle v0.19.1-0.20191105222053-70208cbdc798/go.mod h1:rPwzNHUqEzngx1iVBfO/2X2npKaT3tqPqqHW6rVsn/A= github.com/bazelbuild/buildtools v0.0.0-20190731111112-f720930ceb60/go.mod h1:5JP0TXzWDHXv8qvxRC4InIazwdyDseBDbzESUMKk1yU= github.com/bazelbuild/buildtools v0.0.0-20190917191645-69366ca98f89/go.mod h1:5JP0TXzWDHXv8qvxRC4InIazwdyDseBDbzESUMKk1yU= github.com/bazelbuild/rules_go v0.0.0-20190719190356-6dae44dc5cab/go.mod h1:MC23Dc/wkXEyk3Wpq6lCqz0ZAYOZDw2DR5y3N1q2i7M= +github.com/beorn7/perks v0.0.0-20160804104726-4c0e84591b9a/go.mod h1:Dwedo/Wpr24TaqPxmxbtue+5NUziq4I4S80YR8gNf3Q= 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 h1:VlbKKnNfV8bJzeqoa4cOKqO6bYr3WgKZxO8Z16+hsOM= github.com/beorn7/perks v1.0.1/go.mod h1:G2ZrVWU2WbWT9wwq4/hrbKbnv/1ERSJQ0ibhJ6rlkpw= +github.com/bgentry/go-netrc v0.0.0-20140422174119-9fd32a8b3d3d/go.mod h1:6QX/PXZ00z/TKoufEY6K/a0k6AhaJrQKdFe6OfVXsa4= github.com/bgentry/speakeasy v0.1.0/go.mod h1:+zsyZBPWlz7T6j88CTgSN5bM796AkVf0kBD4zp0CCIs= github.com/bifurcation/mint v0.0.0-20180715133206-93c51c6ce115/go.mod h1:zVt7zX3K/aDCk9Tj+VM7YymsX66ERvzCJzw8rFCX2JU= +github.com/bitly/go-simplejson v0.5.0/go.mod h1:cXHtHw4XUPsvGaxgjIAn8PhEWG9NfngEKAMDJEczWVA= github.com/bitnami-labs/flagenv v0.0.0-20190607135054-a87af7a1d6fc/go.mod h1:OeW4NPgFPO7+t8q1Vn2Yv+rkO+4kEQzlDskwm7C7PXs= github.com/bitnami-labs/pflagenv v0.0.0-20190702160147-b4d9f048d98f/go.mod h1:Lw3ejf6HTt4DqBIAXlkOIvFjnpj8Zq+zD/UtH29ILFA= github.com/bitnami-labs/sealed-secrets v0.12.4 h1:T25KFlQlKpmZLJCedf5sInFHzxCUE+gxaz/RR/6hYIk= github.com/bitnami-labs/sealed-secrets v0.12.4/go.mod h1:iafXGNUD1Sk/qEfZnjpSQ+BrymPpYoxAzEHXeqUVsso= +github.com/blang/semver v3.1.0+incompatible/go.mod h1:kRBLl5iJ+tD4TcOOxsy/0fnwebNt5EWlYSAyrTnjyyk= github.com/blang/semver v3.5.0+incompatible/go.mod h1:kRBLl5iJ+tD4TcOOxsy/0fnwebNt5EWlYSAyrTnjyyk= github.com/blang/semver v3.5.1+incompatible h1:cQNTCjp13qL8KC3Nbxr/y2Bqb63oX6wdnnjpJbkM4JQ= github.com/blang/semver v3.5.1+incompatible/go.mod h1:kRBLl5iJ+tD4TcOOxsy/0fnwebNt5EWlYSAyrTnjyyk= +github.com/bmizerany/assert v0.0.0-20160611221934-b7ed37b82869/go.mod h1:Ekp36dRnpXw/yCqJaO+ZrUyxD+3VXMFFr56k5XYrpB4= github.com/boltdb/bolt v1.3.1/go.mod h1:clJnj/oiGkjum5o1McbSZDSLxVThjynRyGBgiAx27Ps= +github.com/bombsimon/wsl v1.2.5/go.mod h1:43lEF/i0kpXbLCeDXL9LMT8c92HyBywXb0AsgMHYngM= github.com/bradfitz/go-smtpd v0.0.0-20170404230938-deb6d6237625/go.mod h1:HYsPBTaaSFSlLx/70C2HPIMNZpVV8+vt/A+FMnYP11g= +github.com/bshuster-repo/logrus-logstash-hook v0.4.1/go.mod h1:zsTqEiSzDgAa/8GZR7E1qaXrhYNDKBYy5/dWPTIflbk= +github.com/bugsnag/bugsnag-go v0.0.0-20141110184014-b1d153021fcd/go.mod h1:2oa8nejYd4cQ/b0hMIopN0lCRxU0bueqREvZLWFrtK8= +github.com/bugsnag/osext v0.0.0-20130617224835-0dd3f918b21b/go.mod h1:obH5gd0BsqsP2LwDJ9aOkm/6J86V6lyAXCoQWGw3K50= +github.com/bugsnag/panicwrap v0.0.0-20151223152923-e2c28503fcd0/go.mod h1:D/8v3kj0zr8ZAKg1AQ6crr+5VwKN5eIywRkfhyM/+dE= github.com/caddyserver/caddy v1.0.3/go.mod h1:G+ouvOY32gENkJC+jhgl62TyhvqEsFaDiZ4uw0RzP1E= github.com/cavaliercoder/go-rpm v0.0.0-20200122174316-8cb9fd9c31a8 h1:jP7ki8Tzx9ThnFPLDhBYAhEpI2+jOURnHQNURgsMvnY= github.com/cavaliercoder/go-rpm v0.0.0-20200122174316-8cb9fd9c31a8/go.mod h1:AZIh1CCnMrcVm6afFf96PBvE2MRpWFco91z8ObJtgDY= @@ -93,14 +118,27 @@ github.com/chanwit/plandiff v1.0.0 h1:Asf660tDkLPaHhKkqbE/fFn+GGzKrxdWvYbSIToPzz github.com/chanwit/plandiff v1.0.0/go.mod h1:anHayKFTcAXn3/zrIhvwW9FbhgkWKzDI24UJCSFJXK4= github.com/checkpoint-restore/go-criu v0.0.0-20181120144056-17b0214f6c48/go.mod h1:TrMrLQfeENAPYPRsJuq3jsqdlRh3lvi6trTZJG8+tho= github.com/cheekybits/genny v0.0.0-20170328200008-9127e812e1e9/go.mod h1:+tQajlRqAUrPI7DOSpB0XAqZYtQakVtB7wXkRAgjxjQ= +github.com/chzyer/logex v1.1.10/go.mod h1:+Ywpsq7O8HXn0nuIou7OrIPyXbp3wmkHB+jjWRnGsAI= +github.com/chzyer/readline v0.0.0-20180603132655-2972be24d48e/go.mod h1:nSuG5e5PlCu98SY8svDHJxuZscDgtXS6KTTbou5AhLI= +github.com/chzyer/test v0.0.0-20180213035817-a1ea475d72b1/go.mod h1:Q3SI9o4m/ZMnBNeIyt5eFwwo7qiLfzFZmjNmxjkiQlU= github.com/cilium/ebpf v0.0.0-20191025125908-95b36a581eed/go.mod h1:MA5e5Lr8slmEg9bt0VpxxWqJlO4iwu3FBdHUzV7wQVg= github.com/client9/misspell v0.3.4/go.mod h1:qj6jICC3Q7zFZvVWo7KLAzC3yx5G7kyvSDkc90ppPyw= github.com/clusterhq/flocker-go v0.0.0-20160920122132-2b8b7259d313/go.mod h1:P1wt9Z3DP8O6W3rvwCt0REIlshg1InHImaLW0t3ObY0= github.com/cockroachdb/datadriven v0.0.0-20190809214429-80d97fb3cbaa/go.mod h1:zn76sxSg3SzpJ0PPJaLDCu+Bu0Lg3sKTORVIj19EIF8= github.com/codegangsta/negroni v1.0.0/go.mod h1:v0y3T5G7Y1UlFfyxFn/QLRU4a2EuNau2iZY63YTKWo0= github.com/container-storage-interface/spec v1.2.0/go.mod h1:6URME8mwIBbpVyZV93Ce5St17xBiQJQY67NDsuohiy4= +github.com/containerd/cgroups v0.0.0-20190919134610-bf292b21730f/go.mod h1:OApqhQ4XNSNC13gXIwDjhOQxjWa/NxkwZXJ1EvqT0ko= github.com/containerd/console v0.0.0-20170925154832-84eeaae905fa/go.mod h1:Tj/on1eG8kiEhd0+fhSDzsPAFESxzBBvdyEgyryXffw= +github.com/containerd/console v0.0.0-20180822173158-c12b1e7919c1/go.mod h1:Tj/on1eG8kiEhd0+fhSDzsPAFESxzBBvdyEgyryXffw= github.com/containerd/containerd v1.0.2/go.mod h1:bC6axHOhabU15QhwfG7w5PipXdVtMXFTttgp+kVtyUA= +github.com/containerd/containerd v1.3.0-beta.2.0.20190828155532-0293cbd26c69/go.mod h1:bC6axHOhabU15QhwfG7w5PipXdVtMXFTttgp+kVtyUA= +github.com/containerd/containerd v1.3.2/go.mod h1:bC6axHOhabU15QhwfG7w5PipXdVtMXFTttgp+kVtyUA= +github.com/containerd/continuity v0.0.0-20190426062206-aaeac12a7ffc/go.mod h1:GL3xCUCBDV3CZiTSEKksMWbLE66hEyuu9qyDOOqM47Y= +github.com/containerd/continuity v0.0.0-20200107194136-26c1120b8d41/go.mod h1:Dq467ZllaHgAtVp4p1xUQWBrFXR9s/wyoTpG8zOJGkY= +github.com/containerd/fifo v0.0.0-20190226154929-a9fb20d87448/go.mod h1:ODA38xgv3Kuk8dQz2ZQXpnv/UZZUHUCL7pnLehbXgQI= +github.com/containerd/go-runc v0.0.0-20180907222934-5a6d9f37cfa3/go.mod h1:IV7qH3hrUgRmyYrtgEeGWJfWbgcHL9CSRruz2Vqcph0= +github.com/containerd/ttrpc v0.0.0-20190828154514-0e0f228740de/go.mod h1:PvCDdDGpgqzQIzDW1TphrGLssLDZp2GuS+X5DkEJB8o= +github.com/containerd/typeurl v0.0.0-20180627222232-a93fcdb778cd/go.mod h1:Cm3kwCdlkCfMSHURc+r6fwoGH6/F1hH3S4sg0rLFWPc= github.com/containerd/typeurl v0.0.0-20190228175220-2a93cfde8c20/go.mod h1:Cm3kwCdlkCfMSHURc+r6fwoGH6/F1hH3S4sg0rLFWPc= github.com/containernetworking/cni v0.7.1/go.mod h1:LGwApLUm2FpoOfxTDEeq8T9ipbpZ61X79hmU3w8FmsY= github.com/coredns/corefile-migration v1.0.6/go.mod h1:OFwBp/Wc9dJt5cAZzHWMNhK1r5L0p0jDwIBc6j8NC8E= @@ -126,25 +164,34 @@ github.com/davecgh/go-spew v1.1.0/go.mod h1:J7Y8YcW2NihsgmVo/mv3lAwl/skON4iLHjSs 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/daviddengcn/go-colortext v0.0.0-20160507010035-511bcaf42ccd/go.mod h1:dv4zxwHi5C/8AeI+4gX4dCWOIvNi7I6JCSX0HvlKPgE= +github.com/deislabs/oras v0.8.1/go.mod h1:Mx0rMSbBNaNfY9hjpccEnxkOqJL6KGjtxNHPLC4G4As= +github.com/denverdino/aliyungo v0.0.0-20190125010748-a747050bb1ba/go.mod h1:dV8lFg6daOBZbT6/BDGIz6Y3WFGn8juu6G+CQ6LHtl0= +github.com/dgrijalva/jwt-go v0.0.0-20170104182250-a601269ab70c/go.mod h1:E3ru+11k8xSBh+hMPgOLZmtrrCbhqsmaPHjLKYnJCaQ= github.com/dgrijalva/jwt-go v3.2.0+incompatible/go.mod h1:E3ru+11k8xSBh+hMPgOLZmtrrCbhqsmaPHjLKYnJCaQ= github.com/dgryski/go-sip13 v0.0.0-20181026042036-e10d5fee7954/go.mod h1:vAd38F8PWV+bWy6jNmig1y/TA+kYO4g3RSRF0IAv0no= github.com/dlespiau/kube-test-harness v0.0.0-20200706152414-7c811932d687 h1:z6iWYFLFkA0MQLEhqJTKvPG/UOlMqBzvg2mxdhPoBKk= github.com/dlespiau/kube-test-harness v0.0.0-20200706152414-7c811932d687/go.mod h1:gijoa02t4uXA4xtzIvZfNx+qQFkktIxp8apEQ/nsm/o= github.com/dnaeon/go-vcr v1.0.1/go.mod h1:aBB1+wY4s93YsC3HHjMBMrwTj2R9FHDzUr9KyGc8n1E= +github.com/docker/cli v0.0.0-20200130152716-5d0cf8839492/go.mod h1:JLrzqnKDaYBop7H2jaqPtU4hHvMKP+vjCwu2uszcLI8= +github.com/docker/distribution v0.0.0-20191216044856-a8371794149d/go.mod h1:0+TTO4EOBfRPhZXAeF1Vu+W3hHZ8eLp8PgKVZlcvtFY= github.com/docker/distribution v2.7.1+incompatible h1:a5mlkVzth6W5A4fOsS3D2EO5BUmsJpcB+cRlLU7cSug= github.com/docker/distribution v2.7.1+incompatible/go.mod h1:J2gT2udsDAN96Uj4KfcMRqY0/ypR+oyYUYmja8H+y+w= github.com/docker/docker v0.7.3-0.20190327010347-be7ac8be2ae0 h1:w3NnFcKR5241cfmQU5ZZAsf0xcpId6mWOupTvJlUX2U= github.com/docker/docker v0.7.3-0.20190327010347-be7ac8be2ae0/go.mod h1:eEKB0N0r5NX/I1kEveEz05bcu8tLC/8azJZsviup8Sk= +github.com/docker/docker-credential-helpers v0.6.3/go.mod h1:WRaJzqw3CTB9bk10avuGsjVBZsD05qeibJ1/TYlvc0Y= github.com/docker/go-connections v0.3.0/go.mod h1:Gbd7IOopHjR8Iph03tsViu4nIes5XhDvyHbTtUxmeec= github.com/docker/go-connections v0.4.0 h1:El9xVISelRB7BuFusrZozjnkIM5YnzCViNKohAFqRJQ= github.com/docker/go-connections v0.4.0/go.mod h1:Gbd7IOopHjR8Iph03tsViu4nIes5XhDvyHbTtUxmeec= +github.com/docker/go-metrics v0.0.0-20180209012529-399ea8c73916/go.mod h1:/u0gXw0Gay3ceNrsHubL3BtdOL2fHf93USgMTe0W5dI= github.com/docker/go-units v0.3.3/go.mod h1:fgPhTUdO+D/Jk86RDLlptpiXQzgHJF7gydDDbaIK4Dk= github.com/docker/go-units v0.4.0 h1:3uh0PgVws3nIA0Q+MwDC8yjEPf9zjRfZZWXZYDct3Tw= github.com/docker/go-units v0.4.0/go.mod h1:fgPhTUdO+D/Jk86RDLlptpiXQzgHJF7gydDDbaIK4Dk= +github.com/docker/libtrust v0.0.0-20150114040149-fa567046d9b1/go.mod h1:cyGadeNEkKy96OOhEzfZl+yxihPEzKnqJwvfuSUqbZE= github.com/docker/spdystream v0.0.0-20160310174837-449fdfce4d96 h1:cenwrSVm+Z7QLSV/BsnenAOcDXdX4cMv4wP0B/5QbPg= github.com/docker/spdystream v0.0.0-20160310174837-449fdfce4d96/go.mod h1:Qh8CwZgvJUkLughtfhJv5dyTYa91l1fOUCrgjqmcifM= github.com/dustin/go-humanize v0.0.0-20171111073723-bb3d318650d4/go.mod h1:HtrtbFcZ19U5GC7JDqmcUSB87Iq5E25KnS6fMYU6eOk= github.com/dustin/go-humanize v1.0.0/go.mod h1:HtrtbFcZ19U5GC7JDqmcUSB87Iq5E25KnS6fMYU6eOk= +github.com/dustmop/soup v1.1.2-0.20190516214245-38228baa104e/go.mod h1:CgNC6SGbT+Xb8wGGvzilttZL1mc5sQ/5KkcxsZttMIk= github.com/elazarl/goproxy v0.0.0-20180725130230-947c36da3153 h1:yUdfgN0XgIJw7foRItutHYUIhlcKzcSf5vDpdhQAKTc= github.com/elazarl/goproxy v0.0.0-20180725130230-947c36da3153/go.mod h1:/Zj4wYkgs4iZTTu3o/KG3Itv/qCCa8VVMlb3i9OVuzc= github.com/emicklei/go-restful v0.0.0-20170410110728-ff4f55a20633/go.mod h1:otzb+WCGbkyDHkqmQmT5YD2WR4BBwUdeQoFo8l/7tVs= @@ -166,11 +213,15 @@ github.com/fatih/color v1.7.0/go.mod h1:Zm6kSWBoL9eyXnKyktHP6abPY2pDugNf5Kwzbycv github.com/fatih/color v1.9.0/go.mod h1:eQcE1qtQxscV5RaZvpXrrb8Drkc3/DdQ+uUYCNjL+zU= github.com/fatih/structs v1.1.0 h1:Q7juDM0QtcnhCpeyLGQKyg4TOIghuNXrkL32pHAUMxo= github.com/fatih/structs v1.1.0/go.mod h1:9NiDSp5zOcgEDl+j00MP/WkGVPOlPRLejGD8Ga6PJ7M= +github.com/fluxcd/kustomize-controller v0.0.1-beta.2/go.mod h1:mLeipvpQkyof6b5IHNtqeA8CmbjfVIf92UyKkpeBY98= +github.com/fluxcd/source-controller v0.0.1-beta.2/go.mod h1:tmscNdCxEt7+Xt2g1+bI38hMPw2leYMFAaCn4UlMGuw= +github.com/fluxcd/toolkit v0.0.1-beta.2/go.mod h1:NqDXj2aeVMbVkrCHeP/r0um+edXXyeGlG/9pKZLqGdM= github.com/flynn/go-shlex v0.0.0-20150515145356-3f9db97f8568 h1:BHsljHzVlRcyQhjrss6TZTdY2VfCqZPbv5k3iBFa2ZQ= github.com/flynn/go-shlex v0.0.0-20150515145356-3f9db97f8568/go.mod h1:xEzjJPgXI435gkrCt3MPfRiAkVrwSbHsst4LCFVfpJc= github.com/fogleman/gg v1.2.1-0.20190220221249-0403632d5b90/go.mod h1:R/bRT+9gY/C5z7JzPU0zXsXHKM4/ayA+zqcVNZzPa1k= 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/garyburd/redigo v0.0.0-20150301180006-535138d7bcd7/go.mod h1:NR3MbYisc3/PwhQ00EMzDiPmrwpPxAn5GI05/YaO1SY= github.com/ghodss/yaml v0.0.0-20150909031657-73d445a93680/go.mod h1:4dBDuWmgqj2HViK6kFavaiC9ZROes6MMH2rRYeMEF04= github.com/ghodss/yaml v1.0.0 h1:wQHKEahhL6wmXdzwWG11gIVCkOv05bNOh+Rxn0yngAk= github.com/ghodss/yaml v1.0.0/go.mod h1:4dBDuWmgqj2HViK6kFavaiC9ZROes6MMH2rRYeMEF04= @@ -182,6 +233,15 @@ github.com/globalsign/mgo v0.0.0-20181015135952-eeefdecb41b8/go.mod h1:xkRDCp4j0 github.com/go-acme/lego v2.5.0+incompatible/go.mod h1:yzMNe9CasVUhkquNvti5nAtPmG94USbYxYrZfTkIn0M= github.com/go-bindata/go-bindata v3.1.1+incompatible/go.mod h1:xK8Dsgwmeed+BBsSy2XTopBn/8uK2HWuGSnA11C3Joo= github.com/go-critic/go-critic v0.3.5-0.20190526074819-1df300866540/go.mod h1:+sE8vrLDS2M0pZkBk0wy6+nLdKexVDrl/jBqQOTDThA= +github.com/go-critic/go-critic v0.3.5-0.20190904082202-d79a9f0c64db/go.mod h1:+sE8vrLDS2M0pZkBk0wy6+nLdKexVDrl/jBqQOTDThA= +github.com/go-errors/errors v1.0.1 h1:LUHzmkK3GUKUrL/1gfBUxAHzcev3apQlezX/+O7ma6w= +github.com/go-errors/errors v1.0.1/go.mod h1:f4zRHt4oKfwPJE5k8C9vpYG+aDHdBFUsgrm6/TyX73Q= +github.com/go-git/gcfg v1.5.0/go.mod h1:5m20vg6GwYabIxaOonVkTdrILxQMpEShl1xiMF4ua+E= +github.com/go-git/go-billy/v5 v5.0.0/go.mod h1:pmpqyWchKfYfrkb/UVH4otLvyi/5gJlGI4Hb3ZqZ3W0= +github.com/go-git/go-git-fixtures/v4 v4.0.1/go.mod h1:m+ICp2rF3jDhFgEZ/8yziagdT1C+ZpZcrJjappBCDSw= +github.com/go-git/go-git/v5 v5.0.0/go.mod h1:oYD8y9kWsGINPFJoLdaScGCN6dlKg23blmClfZwtUVA= +github.com/go-git/go-git/v5 v5.1.0/go.mod h1:ZKfuPUoY1ZqIG4QG9BDBh3G4gLM5zvPuSJAozQrZuyM= +github.com/go-ini/ini v1.25.4/go.mod h1:ByCAeIL28uOIIG0E3PJtZPDL8WnHpFKFOtgjp+3Ies8= 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.2/go.mod h1:NwZuYi2nUHho8XEIZ6SIxihrnPoqBTDqfpXvXAN0sXM= @@ -227,10 +287,14 @@ github.com/go-openapi/spec v0.18.0/go.mod h1:XkF/MOi14NmjsfZ8VtAKf8pIlbZzyoTvZsd github.com/go-openapi/spec v0.19.2/go.mod h1:sCxk3jxKgioEJikev4fgkNmwS+3kuYdJtcsZsD5zxMY= github.com/go-openapi/spec v0.19.3 h1:0XRyw8kguri6Yw4SxhsQA/atC88yqrk0+G4YhI2wabc= github.com/go-openapi/spec v0.19.3/go.mod h1:FpwSN1ksY1eteniUU7X0N/BgJ7a4WvBFVA8Lj9mJglo= +github.com/go-openapi/spec v0.19.5/go.mod h1:Hm2Jr4jv8G1ciIAo+frC/Ft+rR2kQDh8JHKHb3gWUSk= +github.com/go-openapi/spec v0.19.8 h1:qAdZLh1r6QF/hI/gTq+TJTvsQUodZsM7KLqkAJdiJNg= +github.com/go-openapi/spec v0.19.8/go.mod h1:Hm2Jr4jv8G1ciIAo+frC/Ft+rR2kQDh8JHKHb3gWUSk= github.com/go-openapi/strfmt v0.17.0/go.mod h1:P82hnJI0CXkErkXi8IKjPbNBM6lV6+5pLP5l494TcyU= github.com/go-openapi/strfmt v0.18.0/go.mod h1:P82hnJI0CXkErkXi8IKjPbNBM6lV6+5pLP5l494TcyU= github.com/go-openapi/strfmt v0.19.0/go.mod h1:+uW+93UVvGGq2qGaZxdDeJqSAqBqBdl+ZPMF/cC8nDY= github.com/go-openapi/strfmt v0.19.3/go.mod h1:0yX7dbo8mKIvc3XSKp7MNfxw4JytCfCD6+bY1AVL9LU= +github.com/go-openapi/strfmt v0.19.5/go.mod h1:eftuHTlB/dI8Uq8JJOyRlieZf+WkkxUuk0dgdHXr2Qk= github.com/go-openapi/swag v0.0.0-20160704191624-1d0bd113de87/go.mod h1:DXUve3Dpr1UfpPtxFw+EFuQ41HhCWZfha5jSVRG7C7I= github.com/go-openapi/swag v0.17.0/go.mod h1:AByQ+nYG6gQg71GINrmuDXCPWdL640yX49/kXLo40Tg= github.com/go-openapi/swag v0.18.0/go.mod h1:AByQ+nYG6gQg71GINrmuDXCPWdL640yX49/kXLo40Tg= @@ -240,6 +304,7 @@ github.com/go-openapi/swag v0.19.5/go.mod h1:POnQmlKehdgb5mhVOsnJFsivZCEZ/vjK9gh github.com/go-openapi/validate v0.18.0/go.mod h1:Uh4HdOzKt19xGIGm1qHf/ofbX1YQ4Y+MYsct2VUrAJ4= github.com/go-openapi/validate v0.19.2/go.mod h1:1tRCw7m3jtI8eNWEEliiAqUIcBztB2KDnRCRMUi7GTA= github.com/go-openapi/validate v0.19.5/go.mod h1:8DJv2CVJQ6kGNpFW6eV9N3JviE1C85nY1c2z52x1Gk4= +github.com/go-openapi/validate v0.19.8/go.mod h1:8DJv2CVJQ6kGNpFW6eV9N3JviE1C85nY1c2z52x1Gk4= github.com/go-ozzo/ozzo-validation v3.5.0+incompatible/go.mod h1:gsEKFIVnabGBt6mXmxK0MoFy+cZoTJY6mu5Ll3LVLBU= github.com/go-stack/stack v1.8.0/go.mod h1:v0f6uXyyMGvRgIKkXu+yp6POWl0qKG85gN/melR3HDY= github.com/go-toolsmith/astcast v1.0.0/go.mod h1:mt2OdQTeAQcY4DQgPSArJjHCcOwlX+Wl/kwN+LbLGQ4= @@ -257,6 +322,9 @@ github.com/go-toolsmith/strparse v1.0.0/go.mod h1:YI2nUKP9YGZnL/L1/DLFBfixrcjslW github.com/go-toolsmith/typep v1.0.0/go.mod h1:JSQCQMUPdRlMZFswiq3TGpNp1GMktqkR2Ns5AIQkATU= github.com/gobwas/glob v0.2.3/go.mod h1:d3Ez4x06l9bZtSvzIay5+Yzi0fmZzPgnTbPcKjJAkT8= github.com/godbus/dbus v0.0.0-20181101234600-2ff6f7ffd60f/go.mod h1:/YcGZj5zSblfDWMMoOzV4fas9FZnQYTkDnsGvmh2Grw= +github.com/godbus/dbus v0.0.0-20190422162347-ade71ed3457e/go.mod h1:bBOAhwG1umN6/6ZUMtDFBMQR8jRg9O75tm9K00oMsK4= +github.com/gofrs/flock v0.0.0-20190320160742-5135e617513b/go.mod h1:F1TvTiK9OcQqauNUHlbJvyl9Qa1QvF/gOUDKA14jxHU= +github.com/gofrs/flock v0.7.1/go.mod h1:F1TvTiK9OcQqauNUHlbJvyl9Qa1QvF/gOUDKA14jxHU= github.com/gogo/protobuf v1.1.1/go.mod h1:r8qH/GZQm5c6nD/R0oafs1akxWv10x8SbQlK7atdtwQ= github.com/gogo/protobuf v1.2.1/go.mod h1:hp+jE20tsWTFYpLwKvXlhS1hjn+gTNwPg2I6zVXpSg4= github.com/gogo/protobuf v1.3.1 h1:DqDEcV5aeaTmdFBePNpYsp3FlcVH/2ISVVM9Qf8PSls= @@ -265,6 +333,7 @@ github.com/golang/freetype v0.0.0-20170609003504-e2365dfdc4a0/go.mod h1:E/TSTwGw github.com/golang/glog v0.0.0-20160126235308-23def4e6c14b h1:VKtxabqXZkF25pY9ekfRL6a582T4P37/31XEstQ5p58= 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-20180513044358-24b0969c4cb7/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-20200121045136-8c9f03a8e57e h1:1r7pUrabqp18hOBcwBwiTsbnFeTZHV9eER/QT5JVZxY= github.com/golang/groupcache v0.0.0-20200121045136-8c9f03a8e57e/go.mod h1:cIg4eruTrX1D+g88fzRXU5OdNfaM+9IcxsU14FzY7Hc= @@ -285,10 +354,13 @@ github.com/golangci/go-tools v0.0.0-20190318055746-e32c54105b7c/go.mod h1:unzUUL 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/gofmt v0.0.0-20181222123516-0b8337e80d98/go.mod h1:9qCChq59u/eW8im404Q2WWTrnBUQKjpNYKMbU4M7EFU= +github.com/golangci/gofmt v0.0.0-20190930125516-244bba706f1a/go.mod h1:9qCChq59u/eW8im404Q2WWTrnBUQKjpNYKMbU4M7EFU= github.com/golangci/golangci-lint v1.18.0/go.mod h1:kaqo8l0OZKYPtjNmG4z4HrWLgcYNIJ9B9q3LWri9uLg= +github.com/golangci/golangci-lint v1.21.0/go.mod h1:phxpHK52q7SE+5KpPnti4oZTdFCEsn/tKN+nFvCKXfk= github.com/golangci/gosec v0.0.0-20190211064107-66fb7fc33547/go.mod h1:0qUabqiIQgfmlAmulqxyiGkkyF6/tOGSnY2cnPVwrzU= github.com/golangci/ineffassign v0.0.0-20190609212857-42439a7714cc/go.mod h1:e5tpTHCfVze+7EpLEozzMB3eafxo2KT5veNg1k6byQU= github.com/golangci/lint-1 v0.0.0-20190420132249-ee948d087217/go.mod h1:66R6K6P6VWk9I95jvqGxkqJxVWGFy9XlDwLwVz1RCFg= +github.com/golangci/lint-1 v0.0.0-20191013205115-297bf364a8e0/go.mod h1:66R6K6P6VWk9I95jvqGxkqJxVWGFy9XlDwLwVz1RCFg= github.com/golangci/maligned v0.0.0-20180506175553-b1d89398deca/go.mod h1:tvlJhZqDe4LMs4ZHD0oMUlt9G2LWuDGoisJTBzLMV9o= github.com/golangci/misspell v0.0.0-20180809174111-950f5d19e770/go.mod h1:dEbvlSfYbMQDtrpRMQU675gSDLDNa8sCPPChZ7PhiVA= github.com/golangci/prealloc v0.0.0-20180630174525-215b22d4de21/go.mod h1:tf5+bzsHdTM0bsB7+8mt0GUMvjCgwLpTapNZHU8AajI= @@ -311,6 +383,7 @@ github.com/google/go-github v17.0.0+incompatible h1:N0LgJ1j65A7kfXrZnUDaYCs/Sf4r github.com/google/go-github v17.0.0+incompatible/go.mod h1:zLgOLi98H3fifZn+44m+umXrS52loVEgC2AApnigrVQ= github.com/google/go-github/v24 v24.0.1 h1:KCt1LjMJEey1qvPXxa9SjaWxwTsCWSq6p2Ju57UR4Q4= github.com/google/go-github/v24 v24.0.1/go.mod h1:CRqaW1Uns1TCkP0wqTpxYyRxRjxwvKU/XSS44u6X74M= +github.com/google/go-github/v32 v32.0.0/go.mod h1:rIEpZD9CTDQwDK9GDrtMTycQNA4JU3qBsCizh3q2WCI= github.com/google/go-jsonnet v0.16.0 h1:Nb4EEOp+rdeGGyB1rQ5eisgSAqrTnhf9ip+X6lzZbY0= github.com/google/go-jsonnet v0.16.0/go.mod h1:sOcuej3UW1vpPTZOr8L7RQimqai1a57bt5j22LzGZCw= github.com/google/go-querystring v1.0.0 h1:Xkwi/a1rcvNg1PPYe5vI8GbeBY/jrVuDX5ASuANWTrk= @@ -321,6 +394,7 @@ github.com/google/gofuzz v1.1.0/go.mod h1:dBl0BpW6vV/+mYPU4Po3pmUjxk6FQPldtuIdl/ 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= github.com/google/renameio v0.1.0/go.mod h1:KWCgfxg9yswjAJkECMjeO8J8rahYeXnNhOm40UhjYkI= +github.com/google/shlex v0.0.0-20191202100458-e7afc7fbc510/go.mod h1:pupxD2MaaD3pAXIBCelhxNneeOaAeabZDe5s4K6zSpQ= github.com/google/uuid v1.0.0/go.mod h1:TIyPZe4MgqvfeYDBFedMoGGpEw/LqOeaOT+nhxU+yHo= github.com/google/uuid v1.1.1 h1:Gkbcsh/GbpXz7lPftLA3P6TYMwjCLYm83jiFQZF/3gY= github.com/google/uuid v1.1.1/go.mod h1:TIyPZe4MgqvfeYDBFedMoGGpEw/LqOeaOT+nhxU+yHo= @@ -330,13 +404,16 @@ github.com/googleapis/gnostic v0.3.0/go.mod h1:sJBsCZ4ayReDTBIg8b9dl28c5xFWyhBTV github.com/gophercloud/gophercloud v0.1.0/go.mod h1:vxM41WHh5uqHVBMZHzuwNOHh8XEoIEcSTewFxm1c5g8= github.com/gopherjs/gopherjs v0.0.0-20181017120253-0766667cb4d1/go.mod h1:wJfORRmW1u3UXTncJ5qlYoELFm8eSnnEO6hX4iZ3EWY= github.com/gorilla/context v1.1.1/go.mod h1:kBGZzfjB9CEq2AlWe17Uuf7NDRt0dE0s8S51q0aT7Yg= +github.com/gorilla/handlers v0.0.0-20150720190736-60c7bfde3e33/go.mod h1:Qkdc/uu4tH4g6mTK6auzZ766c4CA0Ng8+o/OAirnOIQ= github.com/gorilla/mux v1.7.0/go.mod h1:1lud6UwP+6orDFRuTfBEV8e9/aOM/c4fVVCaMa2zaAs= +github.com/gorilla/mux v1.7.2/go.mod h1:1lud6UwP+6orDFRuTfBEV8e9/aOM/c4fVVCaMa2zaAs= github.com/gorilla/mux v1.7.3 h1:gnP5JzjVOuiZD07fKKToCAOjS0yOpj/qPETTXCCS6hw= github.com/gorilla/mux v1.7.3/go.mod h1:1lud6UwP+6orDFRuTfBEV8e9/aOM/c4fVVCaMa2zaAs= github.com/gorilla/websocket v0.0.0-20170926233335-4201258b820c/go.mod h1:E7qHFY5m1UJ88s3WnNqhKjPHQ0heANvMoAMk2YaljkQ= 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.3/go.mod h1:eEOZF4jCKGi+aprrirO9e7WKB3beBRtWgqGunKl6pKE= +github.com/gosuri/uitable v0.0.4/go.mod h1:tKR86bXuXPZazfOTG1FIzvjIdXzd0mo4Vtn16vt0PJo= github.com/gregjones/httpcache v0.0.0-20180305231024-9cad4c3443a7 h1:pdN6V1QBWetyv/0+wjACpqVH+eVULgEjkurDLq3goeM= github.com/gregjones/httpcache v0.0.0-20180305231024-9cad4c3443a7/go.mod h1:FecbI9+v66THATjSRHfNgh1IVFe/9kFxbXtjV0ctIMA= github.com/grpc-ecosystem/go-grpc-middleware v1.0.0/go.mod h1:FiyG127CGDf3tlThmgyCl78X/SZQqEOJBCDaAfeWzPs= @@ -344,9 +421,14 @@ github.com/grpc-ecosystem/go-grpc-middleware v1.0.1-0.20190118093823-f849b5445de 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.5/go.mod h1:vNeuVxBJEsws4ogUvrchl83t/GYV9WGTSLVdBhOQFDY= +github.com/hashicorp/errwrap v0.0.0-20141028054710-7554cd9344ce/go.mod h1:YH+1FKiLXxHSkmPseP+kNlulaMuP3n2brvKWEqk/Jc4= +github.com/hashicorp/go-cleanhttp v0.5.0/go.mod h1:JpRdi6/HCYpAwUzNwuwqhbovhLtngrth3wmdIIUrZ80= github.com/hashicorp/go-cleanhttp v0.5.1 h1:dH3aiDG9Jvb5r5+bYHsikaOUIpcM0xvgMXVoDkXMzJM= github.com/hashicorp/go-cleanhttp v0.5.1/go.mod h1:JpRdi6/HCYpAwUzNwuwqhbovhLtngrth3wmdIIUrZ80= +github.com/hashicorp/go-multierror v0.0.0-20161216184304-ed905158d874/go.mod h1:JMRHfdO9jKNzS/+BTlxCjKNQHg/jZAft8U7LloJvN7I= +github.com/hashicorp/go-safetemp v1.0.0/go.mod h1:oaerMy3BhqiTbVye6QuFhFtIceqFoDHxNAB65b+Rj1I= github.com/hashicorp/go-syslog v1.0.0/go.mod h1:qPfqrKkXGihmCqbJM2mZgkZGvKG1dFdvsLplgctolz4= +github.com/hashicorp/go-version v1.1.0/go.mod h1:fltr4n8CU8Ke44wwGCBoEymUuxUHl09ZGVZPK5anwXA= github.com/hashicorp/golang-lru v0.0.0-20180201235237-0fb14efe8c47/go.mod h1:/m3WP610KZHVQ1SGc6re/UDhFvYD7pJ4Ao+sR/qLZy8= github.com/hashicorp/golang-lru v0.5.0/go.mod h1:/m3WP610KZHVQ1SGc6re/UDhFvYD7pJ4Ao+sR/qLZy8= github.com/hashicorp/golang-lru v0.5.1 h1:0hERBMJE1eitiLkihrMvRVBYAkpHzc/J3QdDN+dAcgU= @@ -357,8 +439,10 @@ github.com/heketi/heketi v9.0.1-0.20190917153846-c2e2a4ab7ab9+incompatible/go.mo github.com/heketi/tests v0.0.0-20151005000721-f3775cbcefd6/go.mod h1:xGMAM8JLi7UkZt1i4FQeQy0R2T8GLUwQhOP5M1gBhy4= github.com/hpcloud/tail v1.0.0 h1:nfCOvKYfkgYP8hkirhJocXT2+zOD8yUNjXaWfTlyFKI= github.com/hpcloud/tail v1.0.0/go.mod h1:ab1qPbhIpdTxEkNHXyeSf5vhxWSCs/tWer42PpOxQnU= +github.com/huandu/xstrings v1.2.0/go.mod h1:DvyZB1rfVYsBIigL8HwpZgxHwXozlTgGqn63UyNX5k4= github.com/imdario/mergo v0.3.5/go.mod h1:2EnlNZ0deacrJVfApfmtdGgDfMuh/nq6Ok1EcJh5FfA= github.com/imdario/mergo v0.3.6/go.mod h1:2EnlNZ0deacrJVfApfmtdGgDfMuh/nq6Ok1EcJh5FfA= +github.com/imdario/mergo v0.3.7/go.mod h1:2EnlNZ0deacrJVfApfmtdGgDfMuh/nq6Ok1EcJh5FfA= github.com/imdario/mergo v0.3.9 h1:UauaLniWCFHWd+Jp9oCEkTBj8VO/9DKg3PV3VCNMDIg= github.com/imdario/mergo v0.3.9/go.mod h1:2EnlNZ0deacrJVfApfmtdGgDfMuh/nq6Ok1EcJh5FfA= github.com/inconshreveable/mousetrap v1.0.0 h1:Z8tu5sraLXCXIcARxBp/8cbvlwVa7Z1NHg9XEKhtSvM= @@ -368,6 +452,8 @@ github.com/jbenet/go-context v0.0.0-20150711004518-d14ea06fba99/go.mod h1:1lJo3i github.com/jellevandenhooff/dkim v0.0.0-20150330215556-f50fe3d243e1/go.mod h1:E0B/fFc00Y+Rasa88328GlI/XbtyysCtTHZS8h7IrBU= github.com/jessevdk/go-flags v1.4.0/go.mod h1:4FA24M0QyGHXBuZZK/XkWh8h0e1EYbRYJSGM75WSRxI= github.com/jimstudt/http-authentication v0.0.0-20140401203705-3eca13d6893a/go.mod h1:wK6yTYYcgjHE1Z1QtXACPDjcFJyBskHEdagmnq3vsP8= +github.com/jmespath/go-jmespath v0.0.0-20160202185014-0b12d6b521d8/go.mod h1:Nht3zPeWKUH0NzdCt2Blrr5ys8VGpn0CEB0cQHVjt7k= +github.com/jmespath/go-jmespath v0.0.0-20160803190731-bd40a432e4c7/go.mod h1:Nht3zPeWKUH0NzdCt2Blrr5ys8VGpn0CEB0cQHVjt7k= github.com/jmespath/go-jmespath v0.0.0-20180206201540-c2b33e8439af/go.mod h1:Nht3zPeWKUH0NzdCt2Blrr5ys8VGpn0CEB0cQHVjt7k= github.com/jonboulle/clockwork v0.1.0/go.mod h1:Ii8DK3G1RaLaWxj9trq07+26W01tbo22gdxWY5EU2bo= github.com/json-iterator/go v1.1.6/go.mod h1:+SdeFBvtyEkXs7REEP0seUULqWtbJapLOCVDaaPEHmU= @@ -377,6 +463,7 @@ github.com/json-iterator/go v1.1.9 h1:9yzud/Ht36ygwatGx56VwCZtlI/2AD15T1X2sjSuGn github.com/json-iterator/go v1.1.9/go.mod h1:KdQUCv79m/52Kvf8AW2vK1V8akMuk1QjK/uOdHXbAo4= github.com/jstemmer/go-junit-report v0.0.0-20190106144839-af01ea7f8024/go.mod h1:6v2b51hI/fHJwM22ozAgKL4VKDeJcHhJFhtBdhmNjmU= github.com/jtolds/gls v4.20.0+incompatible/go.mod h1:QJZ7F/aHp+rZTRtaJ1ow/lLfFfVYBRgL+9YlvaHOwJU= +github.com/juju/ansiterm v0.0.0-20180109212912-720a0952cc2a/go.mod h1:UJSiEoRfvx3hP73CvoARgeLjaIOjybY9vj8PUPPFGeU= github.com/julienschmidt/httprouter v1.2.0/go.mod h1:SYymIcj16QtmaHHD7aYtjjsJG7VTCxuUUipMqKk8s4w= github.com/jung-kurt/gofpdf v1.0.3-0.20190309125859-24315acbbda5/go.mod h1:7Id9E/uU8ce6rXgefFLlgrJj/GYY22cpxn+r32jIOes= github.com/karrick/godirwalk v1.7.5/go.mod h1:2c9FRhkDxdIbgkOnCEvnSWs71Bhugbl46shStcFDJ34= @@ -403,6 +490,9 @@ github.com/kr/text v0.1.0/go.mod h1:4Jbv+DJW3UT/LiOwJeYQe1efqtUx/iVham/4vfdArNI= github.com/kr/text v0.2.0 h1:5Nx0Ya0ZqY2ygV366QzturHI13Jq95ApcVaJBhpS+AY= github.com/kr/text v0.2.0/go.mod h1:eLer722TekiGuMkidMxC/pM04lWEeraHUUmBw8l2grE= github.com/kylelemons/godebug v0.0.0-20170820004349-d65d576e9348/go.mod h1:B69LEHPfb2qLo0BaaOLcbitczOKLWTsrBG9LczfCD4k= +github.com/labstack/echo v3.3.10+incompatible/go.mod h1:0INS7j/VjnFxD4E2wkz67b8cVwCLbBmJyDaka6Cmk1s= +github.com/labstack/gommon v0.3.0/go.mod h1:MULnywXg0yavhxWKc+lOruYdAhDwPK9wf0OL7NoOu+k= +github.com/lib/pq v1.2.0/go.mod h1:5WUZQaWbwv1U+lTReE5YruASi9Al49XbQIvNi/34Woo= github.com/libopenstorage/openstorage v1.0.0/go.mod h1:Sp1sIObHjat1BeXhfMqLZ14wnOzEhNx2YQedreMcUyc= github.com/liggitt/tabwriter v0.0.0-20181228230101-89fcab3d43de h1:9TO3cAIGXtEhnIaL+V+BEER86oLrvS+kWobKpbJuye0= github.com/liggitt/tabwriter v0.0.0-20181228230101-89fcab3d43de/go.mod h1:zAbeS9B/r2mtpb6U+EI2rYA5OAXxsYw6wTamcNW+zcE= @@ -413,6 +503,7 @@ github.com/lucas-clemente/aes12 v0.0.0-20171027163421-cd47fb39b79f/go.mod h1:JpH github.com/lucas-clemente/quic-clients v0.1.0/go.mod h1:y5xVIEoObKqULIKivu+gD/LU90pL73bTdtQjPBvtCBk= github.com/lucas-clemente/quic-go v0.10.2/go.mod h1:hvaRS9IHjFLMq76puFJeWNfmn+H70QZ/CXoxqw9bzao= github.com/lucas-clemente/quic-go-certificates v0.0.0-20160823095156-d2f86524cced/go.mod h1:NCcRLrOTZbzhZvixZLlERbJtDtYsmMw8Jc4vS8Z0g58= +github.com/lunixbochs/vtclean v0.0.0-20180621232353-2d01aacdc34a/go.mod h1:pHhQNgMf3btfWnGBVipUOjRYhoOsdGqdm/+2c2E2WMI= 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/go.mod h1:PppfXfuXeibc/6YijjN8zIbojt8czPbwD3XqdrwzmxQ= @@ -423,8 +514,12 @@ github.com/mailru/easyjson v0.0.0-20190614124828-94de47d64c63/go.mod h1:C1wdFJiN github.com/mailru/easyjson v0.0.0-20190626092158-b2ccc519800e/go.mod h1:C1wdFJiN94OJF2b5HbByQZoLdCWB1Yqtg26g4irojpc= github.com/mailru/easyjson v0.7.0 h1:aizVhC/NAAcKWb+5QsU1iNOZb4Yws5UO2I+aIprQITM= github.com/mailru/easyjson v0.7.0/go.mod h1:KAzv3t3aY1NaHWoQz1+4F1ccyAH66Jk7yos7ldAVICs= +github.com/manifoldco/promptui v0.7.0/go.mod h1:n4zTdgP0vr0S3w7/O/g98U+e0gwLScEXGwov2nIKuGQ= +github.com/marstr/guid v1.1.0/go.mod h1:74gB1z2wpxxInTG6yaqA7KrtM0NZ+RbrcqDvYHefzho= github.com/marten-seemann/qtls v0.2.3/go.mod h1:xzjG7avBwGGbdZ8dTGxlBnLArsVKLvwmjgmPuiQEcYk= +github.com/matoous/godox v0.0.0-20190911065817-5d6d842e92eb/go.mod h1:1BELzlh859Sh1c6+90blK8lbYy0kwQf1bYlBhBysy1s= github.com/mattn/go-colorable v0.0.9/go.mod h1:9vuHe8Xs5qXnSaW/c/ABM9alt+Vo+STaOChaDxuIBZU= +github.com/mattn/go-colorable v0.1.2/go.mod h1:U0ppj6V5qS13XJ6of8GYAs25YV2eR4EVcfRqFIhoBtE= github.com/mattn/go-colorable v0.1.4/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.4/go.mod h1:M+lRXTBqGeGNdLjl/ufCoiOlB5xdOkqRJdNxMWT7Zi4= @@ -435,6 +530,7 @@ github.com/mattn/go-isatty v0.0.11/go.mod h1:PhnuNfih5lzO57/f3n+odYbM4JtupLOxQOA github.com/mattn/go-isatty v0.0.12/go.mod h1:cbi8OIDigv2wuxKPP5vlRcQ1OAZbq2CE4Kysco4FUpU= github.com/mattn/go-runewidth v0.0.2/go.mod h1:LwmH8dsx7+W8Uxz3IHJYH5QSwggIsqBzpuz5H//U1FU= github.com/mattn/go-shellwords v1.0.5/go.mod h1:3xCvwCdWdlDJUrvuMn7Wuy9eWs4pE8vqg+NOMyg4B2o= +github.com/mattn/go-shellwords v1.0.9/go.mod h1:EZzvwXDESEeg03EKmM+RmDnNOPKG4lLtQsUlTZDWQ8Y= github.com/mattn/goveralls v0.0.2/go.mod h1:8d1ZMHsd7fW6IRPKQh46F2WRpyib5/X4FOpevwGNQEw= github.com/matttproud/golang_protobuf_extensions v1.0.1 h1:4hp9jkHxhMHkqkrB3Ix0jegS5sx/RkqARlsWZ6pIwiU= github.com/matttproud/golang_protobuf_extensions v1.0.1/go.mod h1:D8He9yQNgCq6Z5Ld7szi9bcBfOoFv/3dc6xSMkL2PC0= @@ -444,14 +540,19 @@ github.com/miekg/dns v1.1.3/go.mod h1:W1PPwlIAgtquWBMBEV9nkV9Cazfe8ScdGz/Lj7v3Nr github.com/miekg/dns v1.1.4/go.mod h1:W1PPwlIAgtquWBMBEV9nkV9Cazfe8ScdGz/Lj7v3Nrg= github.com/mindprince/gonvml v0.0.0-20190828220739-9ebdce4bb989/go.mod h1:2eu9pRWp8mo84xCg6KswZ+USQHjwgRhNp06sozOdsTY= github.com/mistifyio/go-zfs v2.1.1+incompatible/go.mod h1:8AuVvqP/mXw1px98n46wfvcGfQ4ci2FwoAjKYxuo3Z4= +github.com/mitchellh/copystructure v1.0.0/go.mod h1:SNtv71yrdKgLRyLFxmLdkAbkKEFWgYaq1OVrnRcwhnw= 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/go-testing-interface v1.0.0/go.mod h1:kRemZodwjscx+RGhAo8eIhFbs2+BFgRtFPeD/KE+zxI= github.com/mitchellh/go-wordwrap v1.0.0 h1:6GlHJ/LTGMrIJbwgdqdl2eEH8o+Exx/0m8ir9Gns0u4= github.com/mitchellh/go-wordwrap v1.0.0/go.mod h1:ZXFpozHsX6DPmq2I0TCekCxypsnAUbP2oI0UX1GXzOo= github.com/mitchellh/mapstructure v0.0.0-20180220230111-00c29f56e238/go.mod h1:FVVH3fgwuzCH5S8UJGiWEs2h04kUh9fWfEaFds41c1Y= github.com/mitchellh/mapstructure v1.1.2/go.mod h1:FVVH3fgwuzCH5S8UJGiWEs2h04kUh9fWfEaFds41c1Y= +github.com/mitchellh/osext v0.0.0-20151018003038-5e2d6d41470f/go.mod h1:OkQIRizQZAeMln+1tSwduZz7+Af5oFlKirV/MSYes2A= +github.com/mitchellh/reflectwalk v1.0.0/go.mod h1:mSTlrgnPZtwu0c4WaC2kGObEpuNDbx0jmZXqmk4esnw= github.com/mkmik/multierror v0.3.0 h1:FHr3n5BEVlzlTz8GRbuwimkL2zbdD2gTPcSh0wpRpUg= github.com/mkmik/multierror v0.3.0/go.mod h1:wjBYXRpDhh+8mIp+iLBOq0kZ3Y4ICTncojwvP8LUYLQ= github.com/modern-go/concurrent v0.0.0-20180228061459-e0a39a4cb421/go.mod h1:6dJC0mAP4ikYIbvyc7fijjWJddQyLn8Ig3JB5CqoB9Q= @@ -461,8 +562,10 @@ github.com/modern-go/reflect2 v0.0.0-20180701023420-4b7aa43c6742/go.mod h1:bx2lN 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/mohae/deepcopy v0.0.0-20170603005431-491d3605edfb/go.mod h1:TaXosZuwdSHYgviHp1DAtfrULt5eUgsSMsZf+YrPgl8= +github.com/mohae/deepcopy v0.0.0-20170929034955-c48cc78d4826/go.mod h1:TaXosZuwdSHYgviHp1DAtfrULt5eUgsSMsZf+YrPgl8= github.com/morikuni/aec v1.0.0/go.mod h1:BbKIizmSmc5MMPqRYbxO4ZU0S0+P200+tUnFx7PXmsc= 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= github.com/mrunalp/fileutils v0.0.0-20171103030105-7d4729fb3618/go.mod h1:x8F1gnqOkIEiO4rqoeEEEqQbo7HjGMTvyoq3gej4iT0= github.com/munnerz/goautoneg v0.0.0-20120707110453-a547fc61f48d/go.mod h1:+n7T8mK8HuQTcFwEeznm/DIxMOiR9yIdICNftLE1DvQ= github.com/munnerz/goautoneg v0.0.0-20191010083416-a7dc8b61c822/go.mod h1:+n7T8mK8HuQTcFwEeznm/DIxMOiR9yIdICNftLE1DvQ= @@ -473,6 +576,8 @@ github.com/naoina/go-stringutil v0.1.0/go.mod h1:XJ2SJL9jCtBh+P9q5btrd/Ylo8XwT/h github.com/naoina/toml v0.1.1/go.mod h1:NBIhNtsFMo3G2szEBne+bO4gS192HuIYRqfvOWb4i1E= 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/go.mod h1:o96djdrsSGy3AWPyBgZMAGfxZNfgntdJG+11KU4QvbU= +github.com/ncw/swift v1.0.47/go.mod h1:23YIA4yWVnGwv2dQlN4bB7egfYX6YLn0Yo/S6zZO/ZM= github.com/niemeyer/pretty v0.0.0-20200227124842-a10e7caefd8e h1:fD57ERR4JtEqsWbfPhv4DMiApHyliiK5xCTNVSPiaAs= github.com/niemeyer/pretty v0.0.0-20200227124842-a10e7caefd8e/go.mod h1:zD1mROLANZcx1PVRCS0qkT7pwLkGfwJo4zjcN/Tysno= github.com/oklog/ulid v1.3.1/go.mod h1:CirwcVhetQ6Lv90oh/F+FBtV6XMibvdAFo93nm5qn4U= @@ -482,6 +587,7 @@ github.com/olekukonko/tablewriter v0.0.0-20170122224234-a0225b3f23b5/go.mod h1:v 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.10.1/go.mod h1:lLunBs/Ym6LB5Z9jYTR76FiuTmxDTDusOGeTQH+WWjE= github.com/onsi/ginkgo v1.11.0/go.mod h1:lLunBs/Ym6LB5Z9jYTR76FiuTmxDTDusOGeTQH+WWjE= github.com/onsi/ginkgo v1.12.0 h1:Iw5WCbBcaAAd0fpRb1c9r5YCylv4XDoCSigm1zLevwU= github.com/onsi/ginkgo v1.12.0/go.mod h1:oUhWkIvk5aDxtKvDDuw8gItl8pKl42LzjC9KZE0HfGg= @@ -494,13 +600,21 @@ github.com/onsi/gomega v1.7.1/go.mod h1:XdKZgCCFLUoM/7CFJVPcG8C1xQ1AJ0vpAezJrB7J github.com/onsi/gomega v1.8.1/go.mod h1:Ho0h+IUsWyvy1OpqCwxlQ/21gkhVunqlU8fDGcoTdcA= github.com/onsi/gomega v1.9.0 h1:R1uwffexN6Pr340GtYRIdZmAiN4J+iw6WG4wog1DUXg= github.com/onsi/gomega v1.9.0/go.mod h1:Ho0h+IUsWyvy1OpqCwxlQ/21gkhVunqlU8fDGcoTdcA= +github.com/opencontainers/go-digest v0.0.0-20170106003457-a6d0ee40d420/go.mod h1:cMLVZDEM3+U2I4VmLI6N8jQYUd2OVphdqWwCJHrFt2s= +github.com/opencontainers/go-digest v0.0.0-20180430190053-c9281466c8b2/go.mod h1:cMLVZDEM3+U2I4VmLI6N8jQYUd2OVphdqWwCJHrFt2s= github.com/opencontainers/go-digest v1.0.0-rc1 h1:WzifXhOVOEOuFYOJAW6aQqW0TooG2iki3E3Ii+WN7gQ= github.com/opencontainers/go-digest v1.0.0-rc1/go.mod h1:cMLVZDEM3+U2I4VmLI6N8jQYUd2OVphdqWwCJHrFt2s= +github.com/opencontainers/image-spec v1.0.0/go.mod h1:BtxoFyWECRxE4U/7sNtV5W15zMzWCbyJoFRP3s7yZA0= github.com/opencontainers/image-spec v1.0.1 h1:JMemWkRwHx4Zj+fVxWoMCFm/8sYGGrUVojFA6h/TRcI= github.com/opencontainers/image-spec v1.0.1/go.mod h1:BtxoFyWECRxE4U/7sNtV5W15zMzWCbyJoFRP3s7yZA0= +github.com/opencontainers/runc v0.0.0-20190115041553-12f6a991201f/go.mod h1:qT5XzbpPznkRYVz/mWwUaVBUv2rmF59PVA73FjuZG0U= +github.com/opencontainers/runc v0.1.1/go.mod h1:qT5XzbpPznkRYVz/mWwUaVBUv2rmF59PVA73FjuZG0U= github.com/opencontainers/runc v1.0.0-rc10/go.mod h1:qT5XzbpPznkRYVz/mWwUaVBUv2rmF59PVA73FjuZG0U= +github.com/opencontainers/runtime-spec v0.1.2-0.20190507144316-5b71a03e2700/go.mod h1:jwyrGlmzljRJv/Fgzds9SsS/C5hL+LL3ko9hs6T5lQ0= github.com/opencontainers/runtime-spec v1.0.0/go.mod h1:jwyrGlmzljRJv/Fgzds9SsS/C5hL+LL3ko9hs6T5lQ0= +github.com/opencontainers/runtime-tools v0.0.0-20181011054405-1d69bd0f9c39/go.mod h1:r3f7wjNzSs2extwzU3Y+6pKfobzPh+kKFJ3ofN+3nfs= github.com/opencontainers/selinux v1.3.1-0.20190929122143-5215b1806f52/go.mod h1:+BLncwf63G4dgOzykXAxcmnFlUaOlkDdmw/CqsW6pjs= +github.com/paulmach/orb v0.1.3/go.mod h1:VFlX/8C+IQ1p6FTRRKzKoOPJnvEtA5G0Veuqwbu//Vk= github.com/pborman/uuid v1.2.0/go.mod h1:X/NO0urCmaxf9VXbdlT7C2Yzkj2IKimNn4k+gtPdI/k= github.com/pelletier/go-buffruneio v0.2.0/go.mod h1:JkE26KsDizTr40EUHkXVtNPvgGtbSNq5BcowyYOWdKo= github.com/pelletier/go-toml v1.1.0/go.mod h1:5z9KED0ma1S8pY6P1sdut58dfprrGBbd/94hg7ilaic= @@ -510,7 +624,9 @@ github.com/pelletier/go-toml v1.8.0 h1:Keo9qb7iRJs2voHvunFtuuYFsbWeOBh8/P9v/kVMF github.com/pelletier/go-toml v1.8.0/go.mod h1:D6yutnOGMveHEPV7VQOuvI/gXY61bv+9bAOTRnLElKs= github.com/peterbourgon/diskv v2.0.1+incompatible h1:UBdAOUP5p4RWqPBg048CAvpKN+vxiaj6gdUUzhl4XmI= github.com/peterbourgon/diskv v2.0.1+incompatible/go.mod h1:uqqh8zWWbv1HBMNONnaR/tNboyR3/BZd58JJSHlUSCU= +github.com/phayes/freeport v0.0.0-20180830031419-95f893ade6f2/go.mod h1:iIss55rKnNBTvrwdmkUpLnDpZoAHvWaiq5+iMmen4AE= github.com/pkg/errors v0.8.0/go.mod h1:bwawxfHBFNV+L2hUp1rHADufV3IMtnDRdf1r5NINEl0= +github.com/pkg/errors v0.8.1-0.20171018195549-f15c970de5b7/go.mod h1:bwawxfHBFNV+L2hUp1rHADufV3IMtnDRdf1r5NINEl0= github.com/pkg/errors v0.8.1/go.mod h1:bwawxfHBFNV+L2hUp1rHADufV3IMtnDRdf1r5NINEl0= github.com/pkg/errors v0.9.1 h1:FEBLx1zS214owpjy7qsBeixbURkuhQAwrK5UwLGTwt4= github.com/pkg/errors v0.9.1/go.mod h1:bwawxfHBFNV+L2hUp1rHADufV3IMtnDRdf1r5NINEl0= @@ -518,6 +634,7 @@ github.com/pmezard/go-difflib v1.0.0 h1:4DBwDE0NGyQoBHbLQYPwSUPoCMWR5BEzIk/f1lZb github.com/pmezard/go-difflib v1.0.0/go.mod h1:iKH77koFhYxTK1pcRnkKkqfTogsbg7gZNVY4sRDYZ/4= github.com/pquerna/cachecontrol v0.0.0-20171018203845-0dec1b30a021/go.mod h1:prYjPmNq4d1NPVmpShWobRqXY3q7Vp+80DqgxxUrUIA= github.com/pquerna/ffjson v0.0.0-20180717144149-af8b230fcd20/go.mod h1:YARuvh7BUWHNhzDq2OM5tzR2RiCcN2D7sapiKyCel/M= +github.com/prometheus/client_golang v0.0.0-20180209125602-c332b6f63c06/go.mod h1:7SWBe2y4D6OKWSNQJUaRYU/AaXPKyh/dDVn+NZz0KFw= 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= @@ -525,17 +642,20 @@ github.com/prometheus/client_golang v1.2.1/go.mod h1:XMU6Z2MjaRKVu/dC1qupJI9SiNk github.com/prometheus/client_golang v1.5.0/go.mod h1:e9GMxYsXl05ICDXkRhurwBS4Q3OK1iX/F2sw+iXX5zU= github.com/prometheus/client_golang v1.5.1 h1:bdHYieyGlH+6OLEk2YQha8THib30KP0/yD0YH9m6xcA= github.com/prometheus/client_golang v1.5.1/go.mod h1:e9GMxYsXl05ICDXkRhurwBS4Q3OK1iX/F2sw+iXX5zU= +github.com/prometheus/client_model v0.0.0-20171117100541-99fa1f4be8e5/go.mod h1:MbSGuTsp3dbXC40dX6PRTWyKYBIrTGTE9sqQNg2J8bo= 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/client_model v0.2.0 h1:uq5h0d+GuxiXLJLNABMgp2qUWDPiLvgCzz2dUR+/W/M= github.com/prometheus/client_model v0.2.0/go.mod h1:xMI15A0UPsDsEKsMN9yxemIoYk6Tm2C1GtYGdfGttqA= +github.com/prometheus/common v0.0.0-20180110214958-89604d197083/go.mod h1:daVV7qP5qjZbuso7PdcryaAu0sAZbrN9i7WWcTMWvro= 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= github.com/prometheus/common v0.7.0/go.mod h1:DjGbpBbp5NYNiECxcL/VnbXCCaQpKd3tt26CguLLsqA= github.com/prometheus/common v0.9.1 h1:KOMtN28tlbam3/7ZKEYKHhKoJZYYj3gMH4uc62x7X7U= github.com/prometheus/common v0.9.1/go.mod h1:yhUN8i9wzaXS3w1O07YhxHEBxD+W35wd8bs7vj7HSQ4= +github.com/prometheus/procfs v0.0.0-20180125133057-cb4147076ac7/go.mod h1:c3At6R/oaqEKCNdg8wHV1ftS6bRYblBhIjjI8uT2IGk= github.com/prometheus/procfs v0.0.0-20181005140218-185b4288413d/go.mod h1:c3At6R/oaqEKCNdg8wHV1ftS6bRYblBhIjjI8uT2IGk= github.com/prometheus/procfs v0.0.0-20190507164030-5867b95ac084/go.mod h1:TjEm7ze935MbeOT/UhFTIMYKhuLP4wbCsTZCD3I8kEA= github.com/prometheus/procfs v0.0.2/go.mod h1:TjEm7ze935MbeOT/UhFTIMYKhuLP4wbCsTZCD3I8kEA= @@ -543,9 +663,11 @@ github.com/prometheus/procfs v0.0.5/go.mod h1:4A/X28fw3Fc593LaREMrKMqOKvUAntwMDa github.com/prometheus/procfs v0.0.8 h1:+fpWZdT24pJBiqJdAwYBjPSk+5YmQzYNPYzQsdzLkt8= github.com/prometheus/procfs v0.0.8/go.mod h1:7Qr8sr6344vo1JqZ6HhLceV9o3AJ1Ff+GxbHq6oeK9A= github.com/prometheus/tsdb v0.7.1/go.mod h1:qhTCs0VvXwvX/y3TZrWD7rabWM+ijKTux40TwIPHuXU= +github.com/qri-io/starlib v0.4.2-0.20200213133954-ff2e8cd5ef8d/go.mod h1:7DPO4domFU579Ga6E61sB9VFNaniPVwJP5C4bBCu3wA= github.com/quasilyte/go-consistent v0.0.0-20190521200055-c6f3937de18c/go.mod h1:5STLWrekHfjyYwxBRVRXNOSewLJ3PWfDJd1VyTS21fI= github.com/quobyte/api v0.1.2/go.mod h1:jL7lIHrmqQ7yh05OJ+eEEdHr0u/kmT1Ff9iHd+4H6VI= github.com/remyoudompheng/bigfft v0.0.0-20170806203942-52369c62f446/go.mod h1:uYEyJGbgTkfkS4+E/PavXkNJcbFIpEtjt2B0KDQ5+9M= +github.com/rjeczalik/notify v0.9.2/go.mod h1:aErll2f0sUX9PXZnVNyeiObbmTlk5jnMoCa4QEjJeqM= github.com/robfig/cron v1.1.0/go.mod h1:JGuDeoQd7Z6yL4zQhZ3OPEVHB7fL6Ka6skscFHfmt2k= github.com/rogpeppe/fastuuid v0.0.0-20150106093220-6724a57986af/go.mod h1:XWv6SoW27p1b0cqNHllgS5HIMJraePCO15w5zCzIWYg= github.com/rogpeppe/go-internal v1.1.0/go.mod h1:M8bDsm7K2OlrFYOpmOWEs/qY81heoFRclV5y23lUDJ4= @@ -558,10 +680,12 @@ github.com/russross/blackfriday/v2 v2.0.1/go.mod h1:+Rmxgy9KzJVeS9/2gXHxylqXiyQD github.com/ryanuber/go-glob v0.0.0-20170128012129-256dc444b735/go.mod h1:807d1WSdnB0XRJzKNil9Om6lcp/3a0v4qIHxIXzX/Yc= github.com/satori/go.uuid v1.2.0/go.mod h1:dA0hQrYB0VpLJoorglMZABFdXlWrHn1NEOzdhQKdks0= github.com/seccomp/libseccomp-golang v0.9.1/go.mod h1:GbW5+tmTXfcxTToHLXlScSlAvWlF4P2Ca7zGrPiEpWo= +github.com/securego/gosec v0.0.0-20191002120514-e680875ea14d/go.mod h1:w5+eXa0mYznDkHaMCXA4XYffjlH+cy1oyKbfzJXa2Do= github.com/sergi/go-diff v1.0.0/go.mod h1:0CfEIISq7TuYL3j771MWULgwwjU+GofnZX9QAmXWZgo= github.com/sergi/go-diff v1.1.0 h1:we8PVUC3FE2uYfodKH/nBHMSetSfHDR6scGdBi+erh0= github.com/sergi/go-diff v1.1.0/go.mod h1:STckp+ISIX8hZLjrqAeVduY0gWCT9IjLuqbuNXdaHfM= github.com/shirou/gopsutil v0.0.0-20180427012116-c95755e4bcd7/go.mod h1:5b4v6he4MtMOwMlS0TUMTu2PcXUg8+E1lC7eC3UO/RA= +github.com/shirou/gopsutil v0.0.0-20190901111213-e4ec7b275ada/go.mod h1:WWnYX4lzhCH5h/3YBfyVA3VbLYjlMZZAQcW9ojMexNc= github.com/shirou/w32 v0.0.0-20160930032740-bb4de0191aa4/go.mod h1:qsXQc7+bwAM3Q1u/4XEfrquwF8Lw7D7y5cD8CuHnfIc= github.com/shurcooL/go v0.0.0-20180423040247-9e1955d9fb6e/go.mod h1:TDJrrUr11Vxrven61rcy3hJMUqaf/CLWYhHNPmT14Lk= github.com/shurcooL/go-goon v0.0.0-20170922171312-37c2f522c041/go.mod h1:N5mDOmsrJOB+vfqUK+7DmDyjhSLIIBnXo9lvZJj3MWQ= @@ -570,6 +694,7 @@ github.com/shurcooL/httpfs v0.0.0-20190707220628-8d4bc4ba7749/go.mod h1:ZY1cvUeJ github.com/shurcooL/sanitized_anchor_name v1.0.0/go.mod h1:1NzhyTcUVG4SuEtjjoZeVRXNmyL/1OwPU0+IJeTBvfc= github.com/shurcooL/vfsgen v0.0.0-20200627165143-92b8a710ab6c h1:XLPw6rny9Vrrvrzhw8pNLrC2+x/kH0a/3gOx5xWDa6Y= github.com/shurcooL/vfsgen v0.0.0-20200627165143-92b8a710ab6c/go.mod h1:TrYk7fJVaAttu97ZZKrO9UbRa8izdowaMIZcxYMbVaw= +github.com/sirupsen/logrus v1.0.4-0.20170822132746-89742aefa4b2/go.mod h1:pMByvHTf9Beacp5x1UXfOR9xyW/9antXMhjMPG0dEzc= github.com/sirupsen/logrus v1.0.5/go.mod h1:pMByvHTf9Beacp5x1UXfOR9xyW/9antXMhjMPG0dEzc= github.com/sirupsen/logrus v1.0.6/go.mod h1:pMByvHTf9Beacp5x1UXfOR9xyW/9antXMhjMPG0dEzc= github.com/sirupsen/logrus v1.2.0/go.mod h1:LxeOpSwHxABJmUn/MG1IvRgCAasNZTLOkJPxbbu5VWo= @@ -579,8 +704,10 @@ github.com/sirupsen/logrus v1.4.2/go.mod h1:tLMulIdttU9McNUspp0xgXVQah82FyeX6Mwd github.com/sirupsen/logrus v1.6.0 h1:UBcNElsrwanuuMsnGSlYmtmgbb23qDR5dG+6X6Oo89I= github.com/sirupsen/logrus v1.6.0/go.mod h1:7uNnSEd1DgxDLC74fIahvMZmmYsHGZGEOFrfsX/uA88= github.com/smartystreets/assertions v0.0.0-20180927180507-b2de0cb4f26d/go.mod h1:OnSkiWE9lh6wB0YB77sQom3nweQdgAjqCqsofrRNTgc= +github.com/smartystreets/goconvey v0.0.0-20190330032615-68dc04aab96a/go.mod h1:syvi0/a8iFYH4r/RixwvyeAJjdLS9QV7WQ/tjFTllLA= github.com/smartystreets/goconvey v1.6.4/go.mod h1:syvi0/a8iFYH4r/RixwvyeAJjdLS9QV7WQ/tjFTllLA= github.com/soheilhy/cmux v0.1.4/go.mod h1:IM3LyeVVIOuxMH7sFAkER9+bJ4dT7Ms6E4xg4kGIyLM= +github.com/sosedoff/gitkit v0.2.1-0.20191202022816-7182d43c6254/go.mod h1:A+o6ZazfVJwetlcHz3ah6th66XcBdsyzLo+aBt/AsK4= 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/spf13/afero v1.1.0/go.mod h1:j4pytiNVoe2o6bmDsKpLACNPDBIoEAkihy7loJ1B0CQ= @@ -588,6 +715,7 @@ github.com/spf13/afero v1.1.2/go.mod h1:j4pytiNVoe2o6bmDsKpLACNPDBIoEAkihy7loJ1B 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/go.mod h1:Qx5cxh0v+4UWYiBimWS+eyWzqEqokIECu5etghLkUJE= +github.com/spf13/cobra v0.0.2-0.20171109065643-2da4a54c5cee/go.mod h1:1l0Ry5zgKvJasoi3XT1TypsSe7PqH0Sj9dhYf7v3XqQ= github.com/spf13/cobra v0.0.2/go.mod h1:1l0Ry5zgKvJasoi3XT1TypsSe7PqH0Sj9dhYf7v3XqQ= github.com/spf13/cobra v0.0.3/go.mod h1:1l0Ry5zgKvJasoi3XT1TypsSe7PqH0Sj9dhYf7v3XqQ= github.com/spf13/cobra v0.0.5/go.mod h1:3K3wKZymM7VvHMDS9+Akkh4K60UwM26emMESw8tLCHU= @@ -599,6 +727,7 @@ github.com/spf13/jwalterweatherman v1.0.0/go.mod h1:cQK4TGJAtQXfYWX+Ddv3mKDzgVb6 github.com/spf13/jwalterweatherman v1.1.0/go.mod h1:aNWZUN0dPAAO/Ljvb5BEdw96iTZ0EXowPYD95IqWIGo= github.com/spf13/pflag v0.0.0-20170130214245-9ff6c6923cff/go.mod h1:DYY7MBk1bdzusC3SYhjObp+wFpr4gzcvqqNjLnInEg4= github.com/spf13/pflag v0.0.0-20171106142849-4c012f6dcd95/go.mod h1:DYY7MBk1bdzusC3SYhjObp+wFpr4gzcvqqNjLnInEg4= +github.com/spf13/pflag v1.0.1-0.20171106142849-4c012f6dcd95/go.mod h1:DYY7MBk1bdzusC3SYhjObp+wFpr4gzcvqqNjLnInEg4= github.com/spf13/pflag v1.0.1/go.mod h1:DYY7MBk1bdzusC3SYhjObp+wFpr4gzcvqqNjLnInEg4= github.com/spf13/pflag v1.0.3/go.mod h1:DYY7MBk1bdzusC3SYhjObp+wFpr4gzcvqqNjLnInEg4= github.com/spf13/pflag v1.0.5 h1:iy+VFUOCP1a+8yFto/drg2CJ5u0yRoB7fZw3DKv/JXA= @@ -615,11 +744,13 @@ github.com/stretchr/objx v0.1.1/go.mod h1:HFkY916IF+rwdDfMAkV7OtwuqBVzrE8GR6GFx+ github.com/stretchr/objx v0.2.0 h1:Hbg2NidpLE8veEBkEZTL3CvlkUIVzuU9jDplZO54c48= 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.2.3-0.20181224173747-660f15d67dbb/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/stretchr/testify v1.6.1 h1:hDPOHmpOpP40lSULcqw7IrRb/u7w6RpDC9399XyoNd0= github.com/stretchr/testify v1.6.1/go.mod h1:6Fq8oRcR53rry900zMqJjRRixrwX3KX962/h/Wwjteg= github.com/subosito/gotenv v1.2.0/go.mod h1:N0PQaV/YGNqwC0u51sEeR/aUtSLEXKX9iv69rRypqCw= +github.com/syndtr/gocapability v0.0.0-20170704070218-db04d3cc01c8/go.mod h1:hkRG7XYTFWNJGYcbNJQlaLq0fg1yr4J4t/NcTQtrfww= github.com/syndtr/gocapability v0.0.0-20180916011248-d98352740cb2/go.mod h1:hkRG7XYTFWNJGYcbNJQlaLq0fg1yr4J4t/NcTQtrfww= github.com/tarm/serial v0.0.0-20180830185346-98f6abe2eb07/go.mod h1:kDXzergiv9cbyO7IOYJZWg1U88JhDg3PB6klq9Hg2pA= github.com/thanhpk/randstr v1.0.4 h1:IN78qu/bR+My+gHCvMEXhR/i5oriVHcTB/BJJIRTsNo= @@ -628,17 +759,24 @@ github.com/thecodeteam/goscaleio v0.1.0/go.mod h1:68sdkZAsK8bvEwBlbQnlLS+xU+hvLY github.com/throttled/throttled v2.2.2+incompatible/go.mod h1:0BjlrEGQmvxps+HuXLsyRdqpSRvJpq0PNIsOtqP9Nos= github.com/tidwall/pretty v1.0.0/go.mod h1:XNkn88O1ChpSDQmQeStsy+sBenx6DDtFZJxhVysOjyk= github.com/timakin/bodyclose v0.0.0-20190721030226-87058b9bfcec/go.mod h1:Qimiffbc6q9tBWlVV6x0P9sat/ao1xEkREYPPj9hphk= +github.com/timakin/bodyclose v0.0.0-20190930140734-f7f2e9bca95e/go.mod h1:Qimiffbc6q9tBWlVV6x0P9sat/ao1xEkREYPPj9hphk= github.com/tmc/grpc-websocket-proxy v0.0.0-20170815181823-89b8d40f7ca8/go.mod h1:ncp9v5uamzpCO7NfCPTXjqaC+bZgJeR0sMTm6dMHP7U= 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= github.com/ugorji/go/codec v0.0.0-20181204163529-d75b2dcb6bc8/go.mod h1:VFNgLljTbGfSG7qAOspJ7OScBnGdDN/yBr0sguwnwf0= +github.com/ulikunitz/xz v0.5.5/go.mod h1:2bypXElzHzzJZwzH67Y6wb67pO62Rzfn7BSiF4ABRW8= github.com/ultraware/funlen v0.0.1/go.mod h1:Dp4UiAus7Wdb9KUZsYWZEWiRzGuM2kXM1lPbfaF6xhA= github.com/ultraware/funlen v0.0.2/go.mod h1:Dp4UiAus7Wdb9KUZsYWZEWiRzGuM2kXM1lPbfaF6xhA= +github.com/ultraware/whitespace v0.0.4/go.mod h1:aVMh/gQve5Maj9hQ/hg+F75lr/X5A89uZnzAmWSineA= +github.com/urfave/cli v0.0.0-20171014202726-7bc6a0acffa5/go.mod h1:70zkFmudgCuE/ngEzBv17Jvp/497gISqfk5gWijbERA= github.com/urfave/cli v1.20.0/go.mod h1:70zkFmudgCuE/ngEzBv17Jvp/497gISqfk5gWijbERA= github.com/urfave/negroni v1.0.0/go.mod h1:Meg73S6kFm/4PpbYdq35yYWoCZ9mS/YSx+lKnmiohz4= +github.com/uudashr/gocognit v0.0.0-20190926065955-1655d0de0517/go.mod h1:j44Ayx2KW4+oB6SWMv8KsmHzZrOInQav7D3cQMJ5JUM= github.com/valyala/bytebufferpool v1.0.0/go.mod h1:6bBcMArwyJ5K/AmCkWv1jt77kVWyCJ6HpOuEn7z0Csc= github.com/valyala/fasthttp v1.2.0/go.mod h1:4vX61m6KN+xDduDNwXrhIAVZaZaZiQ1luJk8LWSxF3s= +github.com/valyala/fasttemplate v1.0.1/go.mod h1:UQGH1tvbgY+Nz5t2n7tXsz52dQxojPUpymEIMZ47gx8= github.com/valyala/quicktemplate v1.1.1/go.mod h1:EH+4AkTd43SvgIbQHYu59/cJyxDoOVRUAfrukLPuGJ4= +github.com/valyala/quicktemplate v1.2.0/go.mod h1:EH+4AkTd43SvgIbQHYu59/cJyxDoOVRUAfrukLPuGJ4= github.com/valyala/tcplisten v0.0.0-20161114210144-ceec8f93295a/go.mod h1:v3UYOV9WzVtRmSR+PDvWpU/qWl4Wa5LApYYX4ZtKbio= github.com/vektah/gqlparser v1.1.2/go.mod h1:1ycwN7Ij5njmMkPPAOaRFY4rET2Enx7IkVv3vaXspKw= github.com/vishvananda/netlink v1.0.0/go.mod h1:+SR5DhBJrl6ZM7CoCKvpw5BKroDKQ+PJqOg65H/2ktk= @@ -650,14 +788,25 @@ github.com/weaveworks/go-checkpoint v0.0.0-20170503165305-ebbb8b0518ab h1:mW+hgc github.com/weaveworks/go-checkpoint v0.0.0-20170503165305-ebbb8b0518ab/go.mod h1:qkbvw5GPibQ/Nf7IZJL0UoLwmJ6858b4S/hUWRd+cH4= github.com/weaveworks/launcher v0.0.0-20180824102238-59a4fcc32c9c h1:YTNC1c2AM3xjrL6DM4vuq0HNJ79GFR8ScT+QKWadFUw= github.com/weaveworks/launcher v0.0.0-20180824102238-59a4fcc32c9c/go.mod h1:w9Z1vnQmPobkEZ0F3oyiqRYP+62qDqTGnK6t5uhe1kg= +github.com/weaveworks/libgitops v0.0.2 h1:Brdmd+2DI8iPtrfWoyzyyzYcuFFlAGj+kf8asdKRjBg= +github.com/weaveworks/libgitops v0.0.2/go.mod h1:P3TjYVc4kFAUmXolRTMWUoUNTvN2HPMTo1ZWrpOCwFM= github.com/whilp/git-urls v0.0.0-20191001220047-6db9661140c0 h1:qqllXPzXh+So+mmANlX/gCJrgo+1kQyshMoQ+NASzm0= github.com/whilp/git-urls v0.0.0-20191001220047-6db9661140c0/go.mod h1:2rx5KE5FLD0HRfkkpyn8JwbVLBdhgeiOb2D2D9LLKM4= github.com/xanzy/ssh-agent v0.2.1 h1:TCbipTQL2JiiCprBWx9frJ2eJlCYT00NmctrHxVAr70= github.com/xanzy/ssh-agent v0.2.1/go.mod h1:mLlQY/MoOhWBj+gOGMQkOeiEvkx+8pJSI+0Bx9h2kr4= +github.com/xeipuuv/gojsonpointer v0.0.0-20180127040702-4e3ac2762d5f/go.mod h1:N2zxlSyiKSe5eX1tZViRH5QA0qijqEDrYZiPEAiq3wU= +github.com/xeipuuv/gojsonreference v0.0.0-20180127040603-bd5ef7bd5415/go.mod h1:GwrjFmJcFw6At/Gs6z4yjiIwzuJ1/+UwLxMQDVQXShQ= +github.com/xeipuuv/gojsonschema v0.0.0-20180618132009-1d523034197f/go.mod h1:5yf86TLmAcydyeJq5YvxkGPE2fm/u4myDekKRoLuqhs= +github.com/xeipuuv/gojsonschema v1.1.0/go.mod h1:5yf86TLmAcydyeJq5YvxkGPE2fm/u4myDekKRoLuqhs= github.com/xiang90/probing v0.0.0-20190116061207-43a291ad63a2/go.mod h1:UETIi67q53MR2AWcXfiuqkDkRtnGDLqkBTpCHuJHxtU= github.com/xlab/handysort v0.0.0-20150421192137-fb3537ed64a1/go.mod h1:QcJo0QPSfTONNIgpN5RA8prR7fF8nkF6cTWTcNerRO8= +github.com/xlab/treeprint v0.0.0-20181112141820-a009c3971eca/go.mod h1:ce1O1j6UtZfjr22oyGxGLbauSBp2YVXpARAosm7dHBg= github.com/xordataexchange/crypt v0.0.3-0.20170626215501-b2862e3d0a77/go.mod h1:aYKd//L2LvnjZzWKhF00oedf4jCCReLcmhLdhm1A27Q= github.com/yuin/goldmark v1.1.32/go.mod h1:3hX8gzYuyVAZsxl0MRgGTJEmQBFcNTphYh9decYSb74= +github.com/yujunz/go-getter v1.4.1-lite/go.mod h1:sbmqxXjyLunH1PkF3n7zSlnVeMvmYUuIl9ZVs/7NyCc= +github.com/yvasiyarov/go-metrics v0.0.0-20140926110328-57bccd1ccd43/go.mod h1:aX5oPXxHm3bOH+xeAttToC8pqch2ScQN/JoXYupl6xs= +github.com/yvasiyarov/gorelic v0.0.0-20141212073537-a9bba5b9ab50/go.mod h1:NUSPSUX/bi6SeDMUh6brw0nXpxHnc96TguQh0+r/ssA= +github.com/yvasiyarov/newrelic_platform_go v0.0.0-20140908184405-b21fdbd4370f/go.mod h1:GlGEuHIJweS1mbCqG+7vt2nvWLzLLnRHbXz5JKd/Qbg= go.etcd.io/bbolt v1.3.2/go.mod h1:IbVyRI1SCnLcuJnV2u8VeU0CEYM7e686BmAb1XKL+uU= go.etcd.io/bbolt v1.3.3/go.mod h1:IbVyRI1SCnLcuJnV2u8VeU0CEYM7e686BmAb1XKL+uU= go.etcd.io/etcd v0.0.0-20191023171146-3cf2f69b5738/go.mod h1:dnLIgRNXwCJa5e+c6mIZCrds/GIG4ncV9HhK5PX7jPg= @@ -665,6 +814,9 @@ go.mongodb.org/mongo-driver v1.0.3/go.mod h1:u7ryQJ+DOzQmeO7zB6MHyr8jkEQvC8vH7qL go.mongodb.org/mongo-driver v1.1.1/go.mod h1:u7ryQJ+DOzQmeO7zB6MHyr8jkEQvC8vH7qLUO4lqsUM= go.mongodb.org/mongo-driver v1.1.2/go.mod h1:u7ryQJ+DOzQmeO7zB6MHyr8jkEQvC8vH7qLUO4lqsUM= go.opencensus.io v0.21.0/go.mod h1:mSImk1erAIZhrmZN+AvHh14ztQfjbGwt4TtuofqLduU= +go.opencensus.io v0.22.0/go.mod h1:+kGneAE2xo2IficOXnaByMWTGM9T73dGwxeWcUqIpI8= +go.starlark.net v0.0.0-20190528202925-30ae18b8564f/go.mod h1:c1/X6cHgvdXj6pUlmWKMkuqRnW4K8x2vwt6JAaaircg= +go.starlark.net v0.0.0-20200306205701-8dd3e2ee1dd5/go.mod h1:nmDLcffg48OtT/PSW0Hg7FvpRQsQh5OSqIylirxKC7o= go.uber.org/atomic v1.3.2/go.mod h1:gD2HeocX3+yG+ygLZcrzQJaqmWj9AIm7n08wl/qW/PE= go.uber.org/atomic v1.4.0 h1:cxzIVoETapQEqDhQu3QfnvXAV4AlzcvUCxkVUFw3+EU= go.uber.org/atomic v1.4.0/go.mod h1:gD2HeocX3+yG+ygLZcrzQJaqmWj9AIm7n08wl/qW/PE= @@ -674,6 +826,7 @@ go.uber.org/zap v1.10.0 h1:ORx85nbTijNz8ljznvCMR1ZBIPKFn3jQrag10X2AsuM= go.uber.org/zap v1.10.0/go.mod h1:vwi/ZaCAaUcBkycHslxD9B2zi4UTXhF60s6SWpuDF0Q= go4.org v0.0.0-20180809161055-417644f6feb5/go.mod h1:MkTOUMDaeVYJUOUsaDXIhWPZYa1yOyC1qaOBpL57BhE= golang.org/x/build v0.0.0-20190927031335-2835ba2e683f/go.mod h1:fYw7AShPAhGMdXqA9gRadk/CcMsvLlClpE5oBwnS3dM= +golang.org/x/crypto v0.0.0-20171113213409-9f005a07e0d3/go.mod h1:6SG95UA2DQfeDnfUPMdvaQW0Q7yPrPDi9nlGo2tz2b4= golang.org/x/crypto v0.0.0-20180426230345-b49d69b5da94/go.mod h1:6SG95UA2DQfeDnfUPMdvaQW0Q7yPrPDi9nlGo2tz2b4= golang.org/x/crypto v0.0.0-20180820150726-614d502a4dac/go.mod h1:6SG95UA2DQfeDnfUPMdvaQW0Q7yPrPDi9nlGo2tz2b4= golang.org/x/crypto v0.0.0-20180904163835-0709b304e793/go.mod h1:6SG95UA2DQfeDnfUPMdvaQW0Q7yPrPDi9nlGo2tz2b4= @@ -691,8 +844,12 @@ golang.org/x/crypto v0.0.0-20190605123033-f99c8df09eb5/go.mod h1:yigFU9vqHzYiE8U golang.org/x/crypto v0.0.0-20190611184440-5c40567a22f8/go.mod h1:yigFU9vqHzYiE8UmvKecakEJjdnWj3jj499lnFckfCI= golang.org/x/crypto v0.0.0-20190617133340-57b3e21c3d56/go.mod h1:yigFU9vqHzYiE8UmvKecakEJjdnWj3jj499lnFckfCI= golang.org/x/crypto v0.0.0-20190701094942-4def268fd1a4/go.mod h1:yigFU9vqHzYiE8UmvKecakEJjdnWj3jj499lnFckfCI= +golang.org/x/crypto v0.0.0-20190911031432-227b76d455e7/go.mod h1:yigFU9vqHzYiE8UmvKecakEJjdnWj3jj499lnFckfCI= +golang.org/x/crypto v0.0.0-20190923035154-9ee001bba392/go.mod h1:/lpIB1dKB+9EgE3H3cr1v9wB50oz8l4C4h62xy7jSTY= golang.org/x/crypto v0.0.0-20191011191535-87dc89f01550/go.mod h1:yigFU9vqHzYiE8UmvKecakEJjdnWj3jj499lnFckfCI= +golang.org/x/crypto v0.0.0-20200128174031-69ecbb4d6d5d/go.mod h1:LzIPMQfyMNhhGPhUkYOs5KpL4U8rLKemX1yGLhDgUto= golang.org/x/crypto v0.0.0-20200220183623-bac4c82f6975/go.mod h1:LzIPMQfyMNhhGPhUkYOs5KpL4U8rLKemX1yGLhDgUto= +golang.org/x/crypto v0.0.0-20200302210943-78000ba7a073/go.mod h1:LzIPMQfyMNhhGPhUkYOs5KpL4U8rLKemX1yGLhDgUto= golang.org/x/crypto v0.0.0-20200622213623-75b288015ac9 h1:psW17arqaxU48Z5kZ0CQnkZWQJsqcURM6tKiBApRjXI= golang.org/x/crypto v0.0.0-20200622213623-75b288015ac9/go.mod h1:LzIPMQfyMNhhGPhUkYOs5KpL4U8rLKemX1yGLhDgUto= golang.org/x/crypto v0.0.0-20200707235045-ab33eee955e0 h1:eIYIE7EC5/Wv5Kbz8bJPaq+TN3kq3W8S+LSm62vM0DY= @@ -714,6 +871,7 @@ golang.org/x/mod v0.0.0-20190513183733-4bf6d317e70e/go.mod h1:mXi4GBBbnImb6dmsKG golang.org/x/mod v0.3.0/go.mod h1:s0Qsj1ACt9ePp/hMypM3fl4fZqREWJwdYDEqhRiZZUA= golang.org/x/net v0.0.0-20170114055629-f2499483f923/go.mod h1:mL1N/T3taQHkDXs73rZJwtUhF3w3ftmwwsq0BUmARs4= golang.org/x/net v0.0.0-20170915142106-8351a756f30f/go.mod h1:mL1N/T3taQHkDXs73rZJwtUhF3w3ftmwwsq0BUmARs4= +golang.org/x/net v0.0.0-20180218175443-cbe0f9307d01/go.mod h1:mL1N/T3taQHkDXs73rZJwtUhF3w3ftmwwsq0BUmARs4= golang.org/x/net v0.0.0-20180724234803-3673e40ba225/go.mod h1:mL1N/T3taQHkDXs73rZJwtUhF3w3ftmwwsq0BUmARs4= golang.org/x/net v0.0.0-20180826012351-8a410e7b638d/go.mod h1:mL1N/T3taQHkDXs73rZJwtUhF3w3ftmwwsq0BUmARs4= golang.org/x/net v0.0.0-20180906233101-161cd47e91fd/go.mod h1:mL1N/T3taQHkDXs73rZJwtUhF3w3ftmwwsq0BUmARs4= @@ -729,16 +887,20 @@ golang.org/x/net v0.0.0-20190311183353-d8887717615a/go.mod h1:t9HGtf8HONx5eT2rtn golang.org/x/net v0.0.0-20190320064053-1272bf9dcd53/go.mod h1:t9HGtf8HONx5eT2rtn7q6eTqICYqUVnKs3thJo3Qplg= golang.org/x/net v0.0.0-20190328230028-74de082e2cca/go.mod h1:t9HGtf8HONx5eT2rtn7q6eTqICYqUVnKs3thJo3Qplg= golang.org/x/net v0.0.0-20190404232315-eb5bcb51f2a3/go.mod h1:t9HGtf8HONx5eT2rtn7q6eTqICYqUVnKs3thJo3Qplg= +golang.org/x/net v0.0.0-20190501004415-9ce7a6920f09/go.mod h1:t9HGtf8HONx5eT2rtn7q6eTqICYqUVnKs3thJo3Qplg= golang.org/x/net v0.0.0-20190502183928-7f726cade0ab/go.mod h1:t9HGtf8HONx5eT2rtn7q6eTqICYqUVnKs3thJo3Qplg= golang.org/x/net v0.0.0-20190503192946-f4e77d36d62c/go.mod h1:t9HGtf8HONx5eT2rtn7q6eTqICYqUVnKs3thJo3Qplg= golang.org/x/net v0.0.0-20190522155817-f3200d17e092/go.mod h1:HSz+uSET+XFnRR8LxR5pz3Of3rY3CfYBVs4xY44aLks= golang.org/x/net v0.0.0-20190603091049-60506f45cf65/go.mod h1:HSz+uSET+XFnRR8LxR5pz3Of3rY3CfYBVs4xY44aLks= golang.org/x/net v0.0.0-20190613194153-d28f0bde5980/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s= +golang.org/x/net v0.0.0-20190619014844-b5b0513f8c1b/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-20190724013045-ca1201d0de80/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s= golang.org/x/net v0.0.0-20190813141303-74dc4d7220e7/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s= golang.org/x/net v0.0.0-20190827160401-ba9fcec4b297/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s= +golang.org/x/net v0.0.0-20190923162816-aa69164e4478/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s= golang.org/x/net v0.0.0-20191004110552-13f9640d40b9/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s= +golang.org/x/net v0.0.0-20200226121028-0de0cce0169b/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s= golang.org/x/net v0.0.0-20200301022130-244492dfa37a/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s= golang.org/x/net v0.0.0-20200625001655-4c5254603344 h1:vGXIOMxbNfDTk/aXCmfdLgkrSV+Z2tcbze+pEc3v5W4= golang.org/x/net v0.0.0-20200625001655-4c5254603344/go.mod h1:/O7V0waA8r7cgGh81Ro3o1hOxt32SMVPicZroKQ2sZA= @@ -763,8 +925,10 @@ golang.org/x/sys v0.0.0-20180824143301-4910a1d54f87/go.mod h1:STP8DvDyc/dI5b8T5h golang.org/x/sys v0.0.0-20180830151530-49385e6e1522/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY= golang.org/x/sys v0.0.0-20180905080454-ebe1bf3edb33/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY= golang.org/x/sys v0.0.0-20180909124046-d0be0721c37e/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY= +golang.org/x/sys v0.0.0-20180926160741-c2ed4eda69e7/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY= golang.org/x/sys v0.0.0-20181107165924-66b7b1311ac8/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY= golang.org/x/sys v0.0.0-20181116152217-5ac8a444bdc5/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY= +golang.org/x/sys v0.0.0-20181122145206-62eef0e2fa9b/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY= golang.org/x/sys v0.0.0-20181205085412-a5c9d58dba9a/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY= golang.org/x/sys v0.0.0-20190122071731-054c452bb702/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY= golang.org/x/sys v0.0.0-20190124100055-b90733256f2e/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY= @@ -777,14 +941,19 @@ golang.org/x/sys v0.0.0-20190312061237-fead79001313/go.mod h1:h1NjWce9XRLGQEsW7w golang.org/x/sys v0.0.0-20190321052220-f7bb7a8bee54/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20190412213103-97732733099d/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20190422165155-953cdadca894/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= +golang.org/x/sys v0.0.0-20190502145724-3ef323f4f1fd/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20190502175342-a43fa875dd82/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20190507160741-ecd444e8653b/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= +golang.org/x/sys v0.0.0-20190514135907-3a4b5fb9f71f/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= +golang.org/x/sys v0.0.0-20190602015325-4c4f7f33c9ed/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20190606165138-5da285871e9c/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20190616124812-15dcb6c0061f/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20190726091711-fc99dfbffb4e/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20190813064441-fde4db37ae7a/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20190826190057-c7b8b68b1456/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= +golang.org/x/sys v0.0.0-20190916202348-b4ddaad3f8a3/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20190922100055-0a153f010e69/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= +golang.org/x/sys v0.0.0-20191002063906-3421d5a6bb1c/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20191008105621-543471e840be/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20191010194322-b09406accb47/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20191022100944-742c48ecaeb7/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= @@ -792,7 +961,9 @@ golang.org/x/sys v0.0.0-20191026070338-33540a1f6037/go.mod h1:h1NjWce9XRLGQEsW7w golang.org/x/sys v0.0.0-20191120155948-bd437916bb0e/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20200116001909-b77594299b42/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20200122134326-e047566fdf82/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= +golang.org/x/sys v0.0.0-20200302150141-5c8b2ff67527/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20200323222414-85ca7c5b95cd/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= +golang.org/x/sys v0.0.0-20200610111108-226ff32320da/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20200625212154-ddb9806d33ae h1:Ih9Yo4hSPImZOpfGuA4bR/ORKTAbhZo2AbWNRCnevdo= golang.org/x/sys v0.0.0-20200625212154-ddb9806d33ae/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/text v0.0.0-20160726164857-2910a502d2bf/go.mod h1:NqM8EUOU14njkJ3fqMW+pc6Ldnwhi/IjpwHt7yyuwOQ= @@ -834,9 +1005,13 @@ golang.org/x/tools v0.0.0-20190606124116-d0a3d012864b/go.mod h1:/rFqwRUd4F7ZHNgw golang.org/x/tools v0.0.0-20190614205625-5aca471b1d59/go.mod h1:/rFqwRUd4F7ZHNgwSSTFct+R/Kf4OFW1sUzUTQQTgfc= golang.org/x/tools v0.0.0-20190617190820-da514acc4774/go.mod h1:/rFqwRUd4F7ZHNgwSSTFct+R/Kf4OFW1sUzUTQQTgfc= golang.org/x/tools v0.0.0-20190621195816-6e04913cbbac/go.mod h1:/rFqwRUd4F7ZHNgwSSTFct+R/Kf4OFW1sUzUTQQTgfc= +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-20190909030654-5b82db07426d/go.mod h1:b+2E5dAYhXwXZwtnZ6UAqBI28+e2cm9otk0dWdXHAEo= +golang.org/x/tools v0.0.0-20190910044552-dd2b5c81c578/go.mod h1:b+2E5dAYhXwXZwtnZ6UAqBI28+e2cm9otk0dWdXHAEo= golang.org/x/tools v0.0.0-20190920225731-5eefd052ad72/go.mod h1:b+2E5dAYhXwXZwtnZ6UAqBI28+e2cm9otk0dWdXHAEo= +golang.org/x/tools v0.0.0-20190930201159-7c411dea38b0/go.mod h1:b+2E5dAYhXwXZwtnZ6UAqBI28+e2cm9otk0dWdXHAEo= +golang.org/x/tools v0.0.0-20191010075000-0337d82405ff/go.mod h1:b+2E5dAYhXwXZwtnZ6UAqBI28+e2cm9otk0dWdXHAEo= golang.org/x/tools v0.0.0-20191119224855-298f0cb1881e/go.mod h1:b+2E5dAYhXwXZwtnZ6UAqBI28+e2cm9otk0dWdXHAEo= golang.org/x/tools v0.0.0-20200708003708-134513de8882 h1:x4Two2lSwHxTqR+eal4lB4ydUnTvmDDpPQeL92ZHDgA= golang.org/x/tools v0.0.0-20200708003708-134513de8882/go.mod h1:njjCfa9FT2d7l9Bc6FUM5FLjQPp3cFF28FI3qnDFljA= @@ -853,6 +1028,7 @@ gonum.org/v1/gonum v0.6.2/go.mod h1:9mxDZsDKxgMAuccQkewq682L+0eCu4dCN2yonUJTCLU= gonum.org/v1/netlib v0.0.0-20190313105609-8cb42192e0e0/go.mod h1:wa6Ws7BG/ESfp6dHfk7C6KdzKA7wR7u/rKwOGE66zvw= gonum.org/v1/netlib v0.0.0-20190331212654-76723241ea4e/go.mod h1:kS+toOQn6AQKjmKJ7gzohV1XkqsFehRA2FbsbkopSuQ= gonum.org/v1/plot v0.0.0-20190515093506-e2840ee46a6b/go.mod h1:Wt8AAjI+ypCyYX3nZBvf6cAIx93T+c/OS2HFAYskSZc= +google.golang.org/api v0.0.0-20160322025152-9bf6e6e569ff/go.mod h1:4mhQ8q/RsB7i+udVvVy5NUi08OU8ZlA0gRVgrF7VFY0= google.golang.org/api v0.4.0/go.mod h1:8k5glujaEP+g9n7WNsDg8QP6cUVNI86fCNMcbazEtwE= google.golang.org/api v0.6.1-0.20190607001116-5213b8090861/go.mod h1:btoxGiFvQNVUZQ8W08zLtrVS08CNpINPEfxXxgJL1Q4= google.golang.org/appengine v1.1.0/go.mod h1:EbEs0AVv82hx2wNQdGPgUI5lhzA/G0D9YwlJXL52JkM= @@ -861,12 +1037,15 @@ google.golang.org/appengine v1.5.0/go.mod h1:xpcJRLb0r/rnEns0DIKYYv+WjYCduHsrkT7 google.golang.org/appengine v1.6.1/go.mod h1:i06prIuMbXzDqacNJfV5OdTW448YApPu5ww/cMBSeb0= google.golang.org/appengine v1.6.5 h1:tycE03LOZYQNhDpS27tcQdAzLCVMaj7QT2SXxebnpCM= google.golang.org/appengine v1.6.5/go.mod h1:8WjMMxjGQR8xUklV/ARdw2HLXBOI7O7uCIDZVag1xfc= +google.golang.org/cloud v0.0.0-20151119220103-975617b05ea8/go.mod h1:0H1ncTHf11KCFhTc/+EFRbzSCOZx+VUbRMk55Yv5MYk= google.golang.org/genproto v0.0.0-20180817151627-c66870c02cf8/go.mod h1:JiN7NxoALGmiZfu7CAH4rXhgtRTLTxftemlI0sWmxmc= google.golang.org/genproto v0.0.0-20190307195333-5fe7a883aa19/go.mod h1:VzzqZJRnGkLBvHegQrXjBqPurQTc5/KpmUdxsrq26oE= google.golang.org/genproto v0.0.0-20190418145605-e7d98fc518a7/go.mod h1:VzzqZJRnGkLBvHegQrXjBqPurQTc5/KpmUdxsrq26oE= +google.golang.org/genproto v0.0.0-20190425155659-357c62f0e4bb/go.mod h1:VzzqZJRnGkLBvHegQrXjBqPurQTc5/KpmUdxsrq26oE= google.golang.org/genproto v0.0.0-20190502173448-54afdca5d873/go.mod h1:VzzqZJRnGkLBvHegQrXjBqPurQTc5/KpmUdxsrq26oE= 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 v0.0.0-20160317175043-d3ddb4469d5a/go.mod h1:yo6s7OP7yaDglbqo1J04qKzAhqBH6lvTonzMVmEdcZw= 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= @@ -874,9 +1053,12 @@ google.golang.org/grpc v1.23.0/go.mod h1:Y5yQAOtifL1yxbo5wqy6BxZv8vAUGQwXBOALyac google.golang.org/grpc v1.23.1/go.mod h1:Y5yQAOtifL1yxbo5wqy6BxZv8vAUGQwXBOALyacEbxg= google.golang.org/grpc v1.26.0 h1:2dTRdpdFEEhJYQD8EMLB61nnrzSCTbG38PhqdhvOltg= google.golang.org/grpc v1.26.0/go.mod h1:qbnxyOmOxrQa7FizSgH+ReBfzJrCY1pSN7KXBS8abTk= +google.golang.org/grpc v1.27.0 h1:rRYRFMVgRv6E0D70Skyfsr28tDXIuuPZyWGMPdMcnXg= +google.golang.org/grpc v1.27.0/go.mod h1:qbnxyOmOxrQa7FizSgH+ReBfzJrCY1pSN7KXBS8abTk= 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= +gopkg.in/check.v1 v1.0.0-20141024133853-64131543e789/go.mod h1:Co6ibVJAznAaIkqp8huTwlJQCZ016jof/cbN4VW5Yz0= gopkg.in/check.v1 v1.0.0-20180628173108-788fd7840127/go.mod h1:Co6ibVJAznAaIkqp8huTwlJQCZ016jof/cbN4VW5Yz0= gopkg.in/check.v1 v1.0.0-20190902080502-41f04d3bba15/go.mod h1:Co6ibVJAznAaIkqp8huTwlJQCZ016jof/cbN4VW5Yz0= gopkg.in/check.v1 v1.0.0-20200227125254-8fa46927fb4f h1:BLraFXnmrev5lT+xlilqcH8XK9/i0At2xKjWk4p6zsU= @@ -916,6 +1098,7 @@ gopkg.in/yaml.v2 v2.2.7/go.mod h1:hI93XBmqTisBFMUTm0b8Fm+jr3Dg1NNxqwp+5A1VGuI= gopkg.in/yaml.v2 v2.2.8/go.mod h1:hI93XBmqTisBFMUTm0b8Fm+jr3Dg1NNxqwp+5A1VGuI= gopkg.in/yaml.v2 v2.3.0 h1:clyUAQHOM3G0M3f5vQj7LuJrETvjVot3Z5el9nffUtU= gopkg.in/yaml.v2 v2.3.0/go.mod h1:hI93XBmqTisBFMUTm0b8Fm+jr3Dg1NNxqwp+5A1VGuI= +gopkg.in/yaml.v3 v3.0.0-20191120175047-4206685974f2/go.mod h1:K4uyk7z7BCEPqu6E+C64Yfv1cQ7kz7rIZviUmN+EgEM= gopkg.in/yaml.v3 v3.0.0-20200121175148-a6ecf24a6d71/go.mod h1:K4uyk7z7BCEPqu6E+C64Yfv1cQ7kz7rIZviUmN+EgEM= gopkg.in/yaml.v3 v3.0.0-20200313102051-9f266ea9e77c h1:dUUwHk2QECo/6vqA44rthZ8ie2QXMNeKRTHCNY2nXvo= gopkg.in/yaml.v3 v3.0.0-20200313102051-9f266ea9e77c/go.mod h1:K4uyk7z7BCEPqu6E+C64Yfv1cQ7kz7rIZviUmN+EgEM= @@ -924,11 +1107,13 @@ gotest.tools v2.2.0+incompatible h1:VsBPFP1AI068pPrMxtb/S8Zkgf9xEmTLJjfM+P5UIEo= gotest.tools v2.2.0+incompatible/go.mod h1:DsYFclhRJ6vuDpmuTbkuFWG+y2sxOXAzmJt81HFBacw= gotest.tools/gotestsum v0.3.5/go.mod h1:Mnf3e5FUzXbkCfynWBGOwLssY7gTQgCHObK9tMpAriY= grpc.go4.org v0.0.0-20170609214715-11d0a25b4919/go.mod h1:77eQGdRu53HpSqPFJFmuJdjuHRquDANNeA4x7B8WQ9o= +helm.sh/helm/v3 v3.1.2/go.mod h1:WYsFJuMASa/4XUqLyv54s0U/f3mlAaRErGmyy4z921g= 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= +honnef.co/go/tools v0.0.1-2019.2.3/go.mod h1:a3bituU0lyd329TUQxRnasdCoJDkEUEAqEt0JzvZhAg= k8s.io/api v0.18.5 h1:fKbCxr+U3fu7k6jB+QeYPD/c6xKYeSJ2KVWmyUypuWM= k8s.io/api v0.18.5/go.mod h1:tN+e/2nbdGKOAH55NMV8oGrMG+3uRlA9GaRfvnCCSNk= k8s.io/apiextensions-apiserver v0.18.5 h1:pvbXjB/BRXZiO+/Erp5Pxr+lnhDCv5uxNxHh3FLGZ/g= @@ -970,6 +1155,7 @@ k8s.io/kube-scheduler v0.18.5/go.mod h1:LjwNAYXEZMyfpjsUdcVNPQaPutoRfm0+bsOXq4a6 k8s.io/kubectl v0.18.5 h1:htctXnWqcF1VBkuzbWINqnwx/rM7byH9o2ZuHntlbJo= k8s.io/kubectl v0.18.5/go.mod h1:LAGxvYunNuwcZst0OAMXnInFIv81/IeoAz2N1Yh+AhU= k8s.io/kubelet v0.18.5/go.mod h1:UW03kij1E5X04f9OQVkdU3tzgqckWokLXqVdsrmx2tU= +k8s.io/kubernetes v1.13.0/go.mod h1:ocZa8+6APFNC2tX1DZASIbocyYT5jHzqFVsY5aoB7Jk= k8s.io/kubernetes v1.18.5 h1:sLbTilDIc02vNzrTORdW2YakzrPCOtmffaUXCwQHsRc= k8s.io/kubernetes v1.18.5/go.mod h1:Efg82S+Ti02A/Mww53bxroc7IgzX2bgPsf6hT8gAs3M= k8s.io/legacy-cloud-providers v0.18.5/go.mod h1:dbYFPOwLEoQDs7K8s2mmti/znlG7dlYyLJIgKNKu0xM= @@ -990,16 +1176,22 @@ modernc.org/xc v1.0.0/go.mod h1:mRNCo0bvLjGhHO9WsyuKVU4q0ceiDDDoEeWDJHrNx8I= mvdan.cc/interfacer v0.0.0-20180901003855-c20040233aed/go.mod h1:Xkxe497xwlCKkIaQYRfC7CSLworTXY9RMqwhhCm+8Nc= mvdan.cc/lint v0.0.0-20170908181259-adc824a0674b/go.mod h1:2odslEg/xrtNQqCYg2/jCoyKnw3vv5biOc3JnIcYfL4= mvdan.cc/unparam v0.0.0-20190209190245-fbb59629db34/go.mod h1:H6SUd1XjIs+qQCyskXg5OFSrilMRUkD8ePJpHKDPaeY= +mvdan.cc/unparam v0.0.0-20190720180237-d51796306d8f/go.mod h1:4G1h5nDURzA3bwVMZIVpwbkw+04kSxk3rAtzlimaUJw= +rsc.io/letsencrypt v0.0.3/go.mod h1:buyQKZ6IXrRnB7TdkHP0RyEybLx18HHyOSoTyoOLqNY= rsc.io/pdf v0.1.1/go.mod h1:n8OzWcQ6Sp37PL01nO98y4iUCRdTGarVfzxY20ICaU4= sigs.k8s.io/apiserver-network-proxy/konnectivity-client v0.0.7/go.mod h1:PHgbrJT7lCHcxMU+mDHEm+nx46H4zuuHZkDP6icnhu0= sigs.k8s.io/cluster-api v0.3.6 h1:Md//qVTwPvJFIBzQ8Mnsro1510x4UFtOyx4t6sPoDnM= sigs.k8s.io/cluster-api v0.3.6/go.mod h1:joh0d0Xu2VGQa3knsf2ZIHyOLX7puUp8LvJjyneeCb8= +sigs.k8s.io/controller-runtime v0.5.0/go.mod h1:REiJzC7Y00U+2YkMbT8wxgrsX5USpXKGhb2sCtAXiT8= sigs.k8s.io/controller-runtime v0.5.2/go.mod h1:JZUwSMVbxDupo0lTJSSFP5pimEyxGynROImSsqIOx1A= sigs.k8s.io/controller-runtime v0.6.0 h1:Fzna3DY7c4BIP6KwfSlrfnj20DJ+SeMBK8HSFvOk9NM= sigs.k8s.io/controller-runtime v0.6.0/go.mod h1:CpYf5pdNY/B352A1TFLAS2JVSlnGQ5O2cftPHndTroo= sigs.k8s.io/kind v0.7.1-0.20200303021537-981bd80d3802/go.mod h1:HIZ3PWUezpklcjkqpFbnYOqaqsAE1JeCTEwkgvPLXjk= sigs.k8s.io/kustomize v2.0.3+incompatible h1:JUufWFNlI44MdtnjUqVnvh29rR37PQFzPbLXqhyOyX0= sigs.k8s.io/kustomize v2.0.3+incompatible/go.mod h1:MkjgH3RdOWrievjo6c9T245dYlB5QeXV4WCbnt/PEpU= +sigs.k8s.io/kustomize/api v0.4.1/go.mod h1:NqxqT+wbYHrD0P19Uu4dXiMsVwI1IwQs+MJHlLhmPqQ= +sigs.k8s.io/kustomize/kyaml v0.1.11 h1:/VvWxVIgH5gG1K4A7trgbyLgO3tRBiAWNhLFVU1HEmo= +sigs.k8s.io/kustomize/kyaml v0.1.11/go.mod h1:72/rLkSi+L/pHM1oCjwrf3ClU+tH5kZQvvdLSqIHwWU= sigs.k8s.io/structured-merge-diff/v3 v3.0.0-20200116222232-67a7b8c61874/go.mod h1:PlARxl6Hbt/+BC80dRLi1qAmnMqwqDg62YvvVkZjemw= sigs.k8s.io/structured-merge-diff/v3 v3.0.0 h1:dOmIZBMfhcHS09XZkMyUgkq5trg3/jRyJYFZUiaOp8E= sigs.k8s.io/structured-merge-diff/v3 v3.0.0/go.mod h1:PlARxl6Hbt/+BC80dRLi1qAmnMqwqDg62YvvVkZjemw= diff --git a/pkg/addons/addon.go b/pkg/addons/addon.go index 137f183d..5ae6cd18 100644 --- a/pkg/addons/addon.go +++ b/pkg/addons/addon.go @@ -13,6 +13,7 @@ import ( "github.com/ghodss/yaml" "github.com/google/go-jsonnet" log "github.com/sirupsen/logrus" + "github.com/weaveworks/libgitops/pkg/serializer" "github.com/weaveworks/wksctl/pkg/addons/assets" "github.com/weaveworks/wksctl/pkg/qjson" "github.com/weaveworks/wksctl/pkg/registry" @@ -333,18 +334,20 @@ func (a *Addon) buildJsonnet(config BuildOptions) ([]string, error) { return nil, err } - for filename, value := range output { + for filename, strValue := range output { + content := []byte(strValue) if config.YAML { - data, err := yaml.JSONToYAML([]byte(value)) + data, err := yaml.JSONToYAML(content) if err != nil { return nil, err } - value, err = manifest.WithNamespace(string(data), "wkp-addons") + // The WithNamespace function supports either JSON or YAML + content, err = manifest.WithNamespace(serializer.FromBytes(data), "wkp-addons") if err != nil { return nil, err } } - if err := ioutil.WriteFile(filename, []byte(value), 0660); err != nil { + if err := ioutil.WriteFile(filename, content, 0660); err != nil { return nil, err } } diff --git a/pkg/apis/apis.go b/pkg/apis/apis.go deleted file mode 100644 index d2d5b47c..00000000 --- a/pkg/apis/apis.go +++ /dev/null @@ -1,17 +0,0 @@ -// Generate deepcopy for apis -//go:generate go run ../../vendor/k8s.io/code-generator/cmd/deepcopy-gen/main.go -O zz_generated.deepcopy -i ./... -h ../../hack/boilerplate.go.txt - -// Package apis contains Kubernetes API groups. -package apis - -import ( - "k8s.io/apimachinery/pkg/runtime" -) - -// AddToSchemes may be used to add all resources defined in the project to a Scheme -var AddToSchemes runtime.SchemeBuilder - -// AddToScheme adds all Resources to the Scheme -func AddToScheme(s *runtime.Scheme) error { - return AddToSchemes.AddToScheme(s) -} diff --git a/pkg/apis/wksprovider/machine/crds/crds_vfsdata.go b/pkg/apis/wksprovider/machine/crds/crds_vfsdata.go index a72812b0..31a982ed 100644 --- a/pkg/apis/wksprovider/machine/crds/crds_vfsdata.go +++ b/pkg/apis/wksprovider/machine/crds/crds_vfsdata.go @@ -26,9 +26,9 @@ var CRDs = func() http.FileSystem { "/cluster.weave.works_existinginfraclusters.yaml": &vfsgen۰CompressedFileInfo{ name: "cluster.weave.works_existinginfraclusters.yaml", modTime: time.Date(2020, 1, 1, 0, 0, 0, 0, time.UTC), - uncompressedSize: 5369, + uncompressedSize: 5346, - compressedContent: []byte("\x1f\x8b\x08\x00\x00\x00\x00\x00\x00\xff\xdc\x58\xcd\x8e\x1b\x37\x0c\xbe\xcf\x53\x10\xe9\x21\x97\x7a\x9c\x20\x97\xc2\xb7\xc5\x36\x05\x82\xa4\xc1\x22\xbb\x4d\x0f\x45\x0f\xb4\x44\xcf\xa8\xd6\x48\x2a\x25\x39\xbb\x79\xfa\x42\x9a\x19\xdb\xbb\xf3\x63\x7b\x17\xed\xa1\x3a\x59\x34\x49\x7d\xfa\x48\x51\xd4\x14\x8b\xc5\xa2\x40\xa7\xbe\x12\x7b\x65\xcd\x0a\xd0\x29\xba\x0f\x64\xd2\xcc\x97\xdb\x9f\x7c\xa9\xec\x72\xf7\x76\x4d\x01\xdf\x16\x5b\x65\xe4\x0a\xae\xa3\x0f\xb6\xf9\x42\xde\x46\x16\xf4\x33\x6d\x94\x51\x41\x59\x53\x34\x14\x50\x62\xc0\x55\x01\x80\xc6\xd8\x80\x49\xec\xd3\x14\x40\x58\x13\xd8\x6a\x4d\xbc\xa8\xc8\x94\xdb\xb8\xa6\x75\x54\x5a\x12\xe7\x15\xfa\xf5\x77\x6f\xca\x77\xe5\x9b\x02\x40\x30\x65\xf3\x3b\xd5\x90\x0f\xd8\xb8\x15\x98\xa8\x75\x01\x60\xb0\xa1\x15\xd0\xbd\xf2\x41\x99\x4a\x99\x0d\xa3\xd0\xd1\x07\x62\x5f\x76\x3f\xca\x6f\x84\x3b\x2a\xbf\x59\xde\xfa\x02\x40\xe3\x9a\x74\x8f\xa3\xd3\xb8\x5f\xec\x37\x87\xda\xd5\xf8\x6e\x05\xfd\xaf\xc2\x3b\x12\x49\xbb\x62\x1b\xdd\x0a\xc6\x9d\x26\x18\x9d\xcf\x96\x97\xf7\x1d\xa2\x0f\x09\xd1\x75\x6b\x93\xff\xd6\xca\x87\x8f\x93\x2a\x9f\x94\x0f\x59\xcd\xe9\xc8\xa8\x27\x76\x96\x35\xbc\x32\x55\xd4\xc8\xe3\x3a\x05\x80\x17\xd6\xd1\x0a\x3e\x27\x68\x0e\x05\xc9\x02\x60\x87\x5a\xc9\x4c\x65\x0b\xd6\x3a\x32\x57\x37\x1f\xbe\xbe\xbb\x15\x35\x35\xd8\x0a\x01\x1c\x5b\x47\x1c\x54\xbf\xa7\x34\x8e\x12\x63\x2f\x03\x90\xe4\x05\x2b\x97\x3d\xc2\xeb\xe4\xaa\xd5\x01\x99\x52\x81\x3c\x84\x9a\xa0\x0b\x28\x49\xf0\x79\x19\xb0\x1b\x08\xb5\xf2\xc0\xe4\x98\x3c\x99\x36\x39\x8e\xdc\x42\x52\x41\x03\x76\xfd\x17\x89\x50\xc2\x2d\x71\x72\x02\xbe\xb6\x51\xcb\x94\x3f\x3b\xe2\x00\x4c\xc2\x56\x46\x7d\xdf\x7b\xf6\x10\x6c\x5e\x52\x63\xa0\x8e\xca\x7e\x28\x13\x88\x0d\xea\x44\x42\xa4\x1f\x01\x8d\x84\x06\x1f\x80\x29\xad\x01\xd1\x1c\x79\xcb\x2a\xbe\x84\x5f\x2d\x13\x28\xb3\xb1\x2b\xa8\x43\x70\x7e\xb5\x5c\x56\x2a\xf4\x47\x41\xd8\xa6\x89\x46\x85\x87\x65\x4e\x68\xb5\x8e\xc1\xb2\x5f\x4a\xda\x91\x5e\x7a\x55\x2d\x90\x45\xad\x02\x89\x10\x99\x96\xe8\xd4\x22\x03\x37\xf9\x24\x94\x8d\xfc\x81\xbb\x73\xe3\x5f\x1f\x21\x0d\x0f\x29\x6c\x3e\xb0\x32\xd5\x5e\x9c\xb3\x6a\x92\xf7\x94\x50\xa0\x3c\x60\x67\xd6\xe2\x3f\xd0\x9b\x44\x89\x95\x2f\xef\x6f\xef\xa0\x5f\x34\x87\xe0\x31\xe7\x99\xed\x83\x99\x3f\x10\x9f\x88\x52\x66\x43\xdc\x06\x6e\xc3\xb6\xc9\x1e\xc9\x48\x67\x95\x09\x79\x22\xb4\x22\xf3\x98\x74\x1f\xd7\x8d\x0a\x29\xd2\x7f\x47\xf2\x21\xc5\xa7\x84\xeb\x5c\x10\x60\x4d\x10\x9d\xc4\x40\xb2\x84\x0f\x06\xae\xb1\x21\x7d\x8d\x9e\xfe\x75\xda\x13\xc3\x7e\x91\x28\x3d\x4d\xfc\x71\x1d\x7b\xac\xd8\xb2\xb5\x17\xf7\x75\xa2\x1f\x63\x67\x28\x9f\x23\x29\xf7\x75\xf0\x28\x39\x03\x35\x03\xe1\x93\x30\x5f\x25\xcb\x4e\xb4\x26\x9f\xce\x47\x76\x96\x72\x5e\x19\x1f\x50\x6b\x48\xb3\x1c\x89\xb6\x4a\x0d\x1c\x4e\xa1\xea\x97\x73\xa3\xf2\x49\x7c\x33\xc4\x0d\x15\x90\x19\x1f\x46\xfe\xcf\x35\x7c\xc6\x6e\xd2\xb1\x43\xc6\x29\x54\x28\x65\xbe\x88\x50\xdf\xcc\x6e\xf9\x02\xfc\x4f\x02\xde\x8f\x94\xda\x8a\x49\x0e\xbd\x2f\xf2\xd6\x06\xe2\x19\x6f\x53\x44\xa1\x53\xed\x49\x7c\xba\xc8\x5c\x3c\x0f\x14\xdc\x5e\x7d\x1e\xdd\xfc\x4c\x54\x4f\x70\x32\x17\x51\xba\x0f\x8c\x57\x5c\xc5\x26\xd5\x90\x0b\xd7\x9d\x4f\x50\x98\x4d\x97\x33\x70\xa7\x91\x8b\xe3\x0b\x3c\x4c\x07\x1c\xa6\x83\xde\xfe\x95\x97\xbe\x3c\xc5\xe6\xf8\x9e\x34\xc4\x18\xea\x54\xf4\x44\xbe\x5c\x7f\xa7\x75\x6d\xed\xf6\x92\xfc\x11\x28\x6a\xba\xbb\xfb\x34\xb6\xcf\x59\x92\x3c\x09\xa6\xf0\x8b\xd2\xa3\x2c\xcf\x9a\x46\xd6\x17\xda\x4c\x45\x63\x71\x04\x63\xf0\x57\x64\x7d\x09\x8d\x96\xd5\xf7\x17\xb1\x78\xd5\x39\x21\xf9\x1c\x3e\xb3\x8b\xdf\x0c\xbe\xc8\xc9\xff\x2a\x28\x42\xdb\x28\x6f\xd8\xee\x94\x1c\xd6\xc4\x49\x5c\xdd\xb3\xe3\x46\xa3\xa1\xf7\x5d\xe3\x72\xbe\x31\xab\x4b\xc2\xfe\xb4\x61\x3b\xe9\x3f\x3b\x44\xb1\xc5\xea\xf2\x00\xed\x86\x8d\xf9\x19\x76\xd3\x41\x4a\xe0\x07\xc2\x0e\xdc\x40\xde\x2d\x7e\x6e\xe8\x52\x43\x77\xc3\xf6\xfe\xe1\x6c\xe6\x55\x83\x15\x7d\x21\x67\xbd\x0a\x96\xcf\xb7\x4b\xcf\x4a\x4d\x61\xf2\x26\x9a\xb8\x85\xe6\x6f\xa0\x67\x37\x2b\x33\xb7\xce\xac\xe5\xc5\xed\xc5\xd4\x2d\xf3\x8c\xb6\xc3\x0e\x28\x98\x23\x67\xa3\xf4\x38\x67\x2f\xba\xee\x25\xa5\xc7\xed\xd1\x9b\x75\x6c\x9c\x71\xeb\xb7\x8f\x9e\x69\x17\xa7\x91\x40\x5b\x42\x36\xaa\x6a\xd0\xcd\x29\x9d\x85\x27\x8d\x2d\x0d\xb2\xf9\x19\x7e\xe6\xfb\x11\xc8\x29\xb1\xc7\x3d\xa3\xb3\xa5\xb1\xee\xfc\x18\xc8\x64\x7b\x72\xba\x29\x3a\x0a\xe3\x84\x46\x1b\xa0\xff\xa8\x39\xf2\xbe\xfe\x48\x0f\x37\x18\xea\xb3\xcb\x49\xf4\x67\x5f\x35\x63\x64\x2c\xd2\x0d\xf2\x68\x7e\xc0\xf0\x48\x9c\xd6\x29\x4e\x6c\xc1\x07\x0c\xd1\x9f\xf3\xdc\x64\x42\x39\x51\x32\xd7\xd6\x6a\x42\x73\x12\x77\x76\x31\x8f\xe8\x89\xe8\xf0\x05\xaf\xff\x8a\xb6\x97\x65\x78\x8b\xee\xbb\xdd\xd1\xdf\xa9\x41\xe1\x1d\xc9\x15\x04\xee\x8a\x97\x0f\x96\xd3\x6d\xd8\x4a\x0e\x5b\x46\x21\xc8\x05\x92\x9f\x9f\x7e\x74\x7b\xf5\x2a\x4f\xfa\x6f\x67\x79\x2a\xac\x69\x5f\x41\x7e\x05\x7f\xfc\x59\xb4\x5e\x49\x7e\xed\xd1\x24\xe1\x3f\x01\x00\x00\xff\xff\x27\x55\x96\xd0\xf9\x14\x00\x00"), + compressedContent: []byte("\x1f\x8b\x08\x00\x00\x00\x00\x00\x00\xff\xdc\x58\xcd\x8e\x1b\x37\x0c\xbe\xcf\x53\x10\xe9\x21\x97\x7a\x9c\x20\x97\xc2\xb7\xc5\x36\x05\x82\xa4\xc1\x22\xbb\x4d\x0f\x45\x0f\xb4\x44\xcf\xa8\xd6\x48\x2a\x25\x39\xbb\x79\xfa\x42\x9a\x19\xaf\xd7\xf3\x63\x7b\x17\xed\xa1\x3a\x59\x34\x49\x7d\xfa\x48\x51\xd4\x14\x8b\xc5\xa2\x40\xa7\xbe\x12\x7b\x65\xcd\x0a\xd0\x29\xba\x0f\x64\xd2\xcc\x97\xdb\x9f\x7c\xa9\xec\x72\xf7\x76\x4d\x01\xdf\x16\x5b\x65\xe4\x0a\xae\xa3\x0f\xb6\xf9\x42\xde\x46\x16\xf4\x33\x6d\x94\x51\x41\x59\x53\x34\x14\x50\x62\xc0\x55\x01\x80\xc6\xd8\x80\x49\xec\xd3\x14\x40\x58\x13\xd8\x6a\x4d\xbc\xa8\xc8\x94\xdb\xb8\xa6\x75\x54\x5a\x12\xe7\x15\xfa\xf5\x77\x6f\xca\x77\xe5\x9b\x02\x40\x30\x65\xf3\x3b\xd5\x90\x0f\xd8\xb8\x15\x98\xa8\x75\x01\x60\xb0\xa1\x15\xd0\xbd\xf2\x41\x99\x4a\x99\x0d\xa3\xd0\xd1\x07\x62\x5f\x76\x3f\xca\x6f\x84\x3b\x2a\xbf\x59\xde\xfa\x02\x40\xe3\x9a\x74\x8f\xa3\xd3\xb8\x5f\xec\x37\x87\xda\xd5\xf8\x6e\x05\xfd\xaf\xc2\x3b\x12\x49\xbb\x62\x1b\xdd\x0a\xc6\x9d\x26\x18\x9d\xcf\x96\x97\xf7\x1d\xa2\x0f\x09\xd1\x75\x6b\x93\xff\xd6\xca\x87\x8f\x93\x2a\x9f\x94\x0f\x59\xcd\xe9\xc8\xa8\x27\x76\x96\x35\xbc\x32\x55\xd4\xc8\xe3\x3a\x05\x80\x17\xd6\xd1\x0a\x3e\x27\x68\x0e\x05\xc9\x02\x60\x87\x5a\xc9\x4c\x65\x0b\xd6\x3a\x32\x57\x37\x1f\xbe\xbe\xbb\x15\x35\x35\xd8\x0a\x01\x1c\x5b\x47\x1c\x54\xbf\xa7\x34\x0e\x12\x63\x2f\x03\x90\xe4\x05\x2b\x97\x3d\xc2\xeb\xe4\xaa\xd5\x01\x99\x52\x81\x3c\x84\x9a\xa0\x0b\x28\x49\xf0\x79\x19\xb0\x1b\x08\xb5\xf2\xc0\xe4\x98\x3c\x99\x36\x39\x0e\xdc\x42\x52\x41\x03\x76\xfd\x17\x89\x50\xc2\x2d\x71\x72\x02\xbe\xb6\x51\xcb\x94\x3f\x3b\xe2\x00\x4c\xc2\x56\x46\x7d\xdf\x7b\xf6\x10\x6c\x5e\x52\x63\xa0\x8e\xca\x7e\x28\x13\x88\x0d\xea\x44\x42\xa4\x1f\x01\x8d\x84\x06\x1f\x80\x29\xad\x01\xd1\x1c\x78\xcb\x2a\xbe\x84\x5f\x2d\x13\x28\xb3\xb1\x2b\xa8\x43\x70\x7e\xb5\x5c\x56\x2a\xf4\x47\x41\xd8\xa6\x89\x46\x85\x87\x65\x4e\x68\xb5\x8e\xc1\xb2\x5f\x4a\xda\x91\x5e\x7a\x55\x2d\x90\x45\xad\x02\x89\x10\x99\x96\xe8\xd4\x22\x03\x37\xf9\x24\x94\x8d\xfc\x81\xbb\x73\xe3\x5f\x1f\x20\x0d\x0f\x29\x6c\x3e\xb0\x32\xd5\x5e\x9c\xb3\x6a\x92\xf7\x94\x50\xa0\x3c\x60\x67\xd6\xe2\x7f\xa4\x37\x89\x12\x2b\x5f\xde\xdf\xde\x41\xbf\x68\x0e\xc1\x53\xce\x33\xdb\x8f\x66\xfe\x91\xf8\x44\x94\x32\x1b\xe2\x36\x70\x1b\xb6\x4d\xf6\x48\x46\x3a\xab\x4c\xc8\x13\xa1\x15\x99\xa7\xa4\xfb\xb8\x6e\x54\x48\x91\xfe\x3b\x92\x0f\x29\x3e\x25\x5c\xe7\x82\x00\x6b\x82\xe8\x24\x06\x92\x25\x7c\x30\x70\x8d\x0d\xe9\x6b\xf4\xf4\xaf\xd3\x9e\x18\xf6\x8b\x44\xe9\x69\xe2\x0f\xeb\xd8\x53\xc5\x96\xad\xbd\xb8\xaf\x13\xfd\x18\x3b\x43\xf9\x1c\x49\xb9\xaf\x83\x07\xc9\x19\xa8\x19\x08\x8f\xc2\x7c\x95\x2c\x3b\xd1\x9a\x7c\x3a\x1f\xd9\x59\xca\x79\x65\x7c\x40\xad\x21\xcd\x72\x24\xda\x2a\x35\x70\x38\x85\xaa\x5f\xce\x8d\xca\x27\xf1\xcd\x10\x37\x54\x40\x66\x7c\x18\xf9\x3f\xd7\xf0\x19\xbb\x49\xc7\x0e\x19\xa7\x50\xa1\x94\xf9\x22\x42\x7d\x33\xbb\xe5\x0b\xf0\x1f\x05\xbc\x1f\x29\xb5\x15\x93\x1c\x7a\x5f\xe4\xad\x0d\xc4\x33\xde\xa6\x88\x42\xa7\xda\x93\x78\xbc\xc8\x5c\x3c\x1f\x29\xb8\xbd\xfa\x3c\xba\xf9\x99\xa8\x9e\xe0\x64\x2e\xa2\x74\x1f\x18\xaf\xb8\x8a\x4d\xaa\x21\x17\xae\x3b\x9f\xa0\x30\x9b\x2e\x67\xe0\x4e\x23\x17\xc7\x17\x78\x98\x0e\x38\x4c\x07\xbd\xfd\x2b\x2f\x7d\x79\x8a\xcd\xf1\x3d\x69\x88\x31\xd4\xa9\xe8\x89\x7c\xb9\xfe\x4e\xeb\xda\xda\xed\x25\xf9\x23\x50\xd4\x74\x77\xf7\x69\x6c\x9f\xb3\x24\x79\x12\x4c\xe1\x17\xa5\x47\x59\x9e\x35\x8d\xac\x2f\xb4\x99\x8a\xc6\xe2\x00\xc6\xe0\xaf\xc8\xfa\x12\x1a\x2d\xab\xef\x2f\x62\xf1\xaa\x73\x42\xf2\x39\x7c\x66\x17\xbf\x19\x7c\x91\x93\xff\x55\x50\x84\xb6\x51\xde\xb0\xdd\x29\x39\xac\x89\x93\xb8\xba\x67\xc7\x8d\x46\x43\xef\xbb\xc6\xe5\x7c\x63\x56\x97\x84\xfd\xb8\x61\x3b\xe9\x3f\x3b\x44\xb1\xc5\xea\xf2\x00\xed\x86\x8d\xf9\x19\x76\xd3\x41\x4a\xe0\x07\xc2\x0e\xdc\x40\xde\x2d\x7e\x6e\xe8\x52\x43\x77\xc3\xf6\xfe\xe1\x6c\xe6\x55\x83\x15\x7d\x21\x67\xbd\x0a\x96\xcf\xb7\x4b\xcf\x4a\x4d\x61\xf2\x26\x9a\xb8\x85\xe6\x6f\xa0\x67\x37\x2b\x33\xb7\xce\xac\xe5\xc5\xed\xc5\xd4\x2d\xf3\x8c\xb6\xc3\x0e\x28\x98\x23\x67\xa3\xf4\x38\x67\x2f\xba\xee\x25\xa5\xc7\xed\xc1\x9b\x75\x6c\x9c\x71\xeb\xb7\x8f\x9e\x69\x17\xa7\x91\x40\x5b\x42\x36\xaa\x6a\xd0\xcd\x29\x9d\x85\x27\x8d\x2d\x0d\xb2\xf9\x19\x7e\xe6\xfb\x11\xc8\x29\xb1\xc7\x3d\xa3\xb3\xa5\xb1\xee\xfc\x10\xc8\x64\x7b\x72\xba\x29\x3a\x08\xe3\x84\x46\x1b\xa0\xff\xa8\x39\xf2\xbe\xfe\x48\x0f\x37\x18\xea\xb3\xcb\x49\xf4\x67\x5f\x35\x63\x64\x2c\xd2\x0d\xf2\x64\x9e\x1c\x16\x27\xb0\xfa\x80\x21\xfa\x73\xde\x95\x4c\x28\x27\x6a\xe3\xda\x5a\x4d\x68\x4e\x02\xcc\x2e\xe6\x11\x1d\x89\x1e\x3f\xd5\xf5\x9f\xcb\xf6\xb2\x0c\x6f\xd1\x7d\xa0\x3b\xf8\x3b\x75\x22\xbc\x23\xb9\x82\xc0\x5d\x95\xf2\xc1\x72\xba\xf6\x5a\xc9\xe3\x96\x51\x08\x72\x81\xe4\xe7\xe3\xaf\x6b\xaf\x5e\xe5\x49\xff\x91\x2c\x4f\x85\x35\xed\x73\xc7\xaf\xe0\x8f\x3f\x8b\xd6\x2b\xc9\xaf\x3d\x9a\x24\xfc\x27\x00\x00\xff\xff\xd1\x42\xf0\xb3\xe2\x14\x00\x00"), }, "/cluster.weave.works_existinginframachiness.yaml": &vfsgen۰CompressedFileInfo{ name: "cluster.weave.works_existinginframachiness.yaml", diff --git a/pkg/apis/wksprovider/machine/os/os.go b/pkg/apis/wksprovider/machine/os/os.go index f77d4722..7cac6661 100644 --- a/pkg/apis/wksprovider/machine/os/os.go +++ b/pkg/apis/wksprovider/machine/os/os.go @@ -18,6 +18,7 @@ import ( "github.com/bitnami-labs/sealed-secrets/pkg/crypto" "github.com/pkg/errors" log "github.com/sirupsen/logrus" + "github.com/weaveworks/libgitops/pkg/serializer" "github.com/weaveworks/wksctl/pkg/addons" "github.com/weaveworks/wksctl/pkg/apis/wksprovider/controller/manifests" "github.com/weaveworks/wksctl/pkg/apis/wksprovider/machine/config" @@ -29,6 +30,7 @@ import ( "github.com/weaveworks/wksctl/pkg/plan/resource" "github.com/weaveworks/wksctl/pkg/plan/runners/ssh" "github.com/weaveworks/wksctl/pkg/plan/runners/sudo" + "github.com/weaveworks/wksctl/pkg/scheme" "github.com/weaveworks/wksctl/pkg/specs" "github.com/weaveworks/wksctl/pkg/utilities/envcfg" "github.com/weaveworks/wksctl/pkg/utilities/manifest" @@ -38,7 +40,6 @@ import ( v1 "k8s.io/api/core/v1" metav1 "k8s.io/apimachinery/pkg/apis/meta/v1" "k8s.io/apimachinery/pkg/runtime" - "k8s.io/client-go/kubernetes/scheme" "k8s.io/client-go/tools/clientcmd" clientcmdapi "k8s.io/client-go/tools/clientcmd/api" "k8s.io/client-go/util/keyutil" @@ -685,11 +686,11 @@ func getConfigMapManifest(configDir, mapName, namespace string) ([]byte, error) if err != nil { return nil, err } - content, err := manifest.WithNamespace(string(bytes), namespace) + content, err := manifest.WithNamespace(serializer.FromBytes(bytes), namespace) if err != nil { return nil, err } - return []byte(content), nil + return content, nil } // getConfigFileContents reads a config manifest from a file in the config directory. @@ -814,73 +815,82 @@ func createAuthConfigMapManifest(authnSecretName, authzSecretName string, authnC // Decrypts secret, adds plan resources to install files found inside, plus a kubeconfig file pointing to them. // returns the sealed file contents, decrypted contents, secret name, kubeconfig, error if any func processSecret(b *plan.Builder, key *rsa.PrivateKey, configDir, secretFileName, URL string) ([]byte, map[string][]byte, string, []byte, error) { + // Read the file contents at configDir/secretFileName contents, err := getConfigFileContents(configDir, secretFileName) if err != nil { return nil, nil, "", nil, err } - object, err := runtime.Decode(scheme.Codecs.UniversalDecoder(ssv1alpha1.SchemeGroupVersion), contents) - if err != nil { - return nil, nil, "", nil, err + + // Create a new YAML FrameReader from the given bytes + fr := serializer.NewYAMLFrameReader(serializer.FromBytes(contents)) + // Create the secret to decode into + ss := &ssv1alpha1.SealedSecret{} + // Decode the Sealed Secret into the object + // In the future, if we wish to support other kinds of secrets than SealedSecrets, we + // can just change this to do .Decode(fr), and switch on the type + if err := scheme.Serializer.Decoder().DecodeInto(fr, ss); err != nil { + return nil, nil, "", nil, errors.Wrapf(err, "couldn't decode the file %q into a sealed secret", secretFileName) } + fingerprint, err := crypto.PublicKeyFingerprint(&key.PublicKey) if err != nil { return nil, nil, "", nil, err } keys := map[string]*rsa.PrivateKey{fingerprint: key} - switch s := object.(type) { - case *ssv1alpha1.SealedSecret: - secret, err := s.Unseal(scheme.Codecs, keys) - if err != nil { - return nil, nil, "", nil, errors.Wrap(err, "Could not unseal auth secret") - } - decrypted := map[string][]byte{} - secretName := secret.Name - for _, key := range pemKeys { - fileContents, ok := secret.Data[key] - if !ok { - return nil, nil, "", nil, fmt.Errorf("Missing auth config value for: %q in secret %q", key, secretName) - } - resName := secretName + "-" + key - fileName := filepath.Join(PemDestDir, secretName, key+".pem") - b.AddResource("install:"+resName, &resource.File{Content: string(fileContents), Destination: fileName}, plan.DependOn("set-perms:pem-dir")) - decrypted[key] = fileContents + + codecs := scheme.Serializer.Codecs() + if codecs == nil { + return nil, nil, "", nil, fmt.Errorf("codecs must not be nil") + } + secret, err := ss.Unseal(*codecs, keys) + if err != nil { + return nil, nil, "", nil, errors.Wrap(err, "Could not unseal auth secret") + } + decrypted := map[string][]byte{} + secretName := secret.Name + for _, key := range pemKeys { + fileContents, ok := secret.Data[key] + if !ok { + return nil, nil, "", nil, fmt.Errorf("Missing auth config value for: %q in secret %q", key, secretName) } - contextName := secretName + "-webhook" - userName := secretName + "-api-server" - config := &clientcmdapi.Config{ - Kind: "Config", - APIVersion: "v1", - Clusters: map[string]*clientcmdapi.Cluster{ - secretName: { - CertificateAuthority: filepath.Join(PemDestDir, secretName, "certificate-authority.pem"), - Server: URL, - }, + resName := secretName + "-" + key + fileName := filepath.Join(PemDestDir, secretName, key+".pem") + b.AddResource("install:"+resName, &resource.File{Content: string(fileContents), Destination: fileName}, plan.DependOn("set-perms:pem-dir")) + decrypted[key] = fileContents + } + contextName := secretName + "-webhook" + userName := secretName + "-api-server" + config := &clientcmdapi.Config{ + Kind: "Config", + APIVersion: "v1", + Clusters: map[string]*clientcmdapi.Cluster{ + secretName: { + CertificateAuthority: filepath.Join(PemDestDir, secretName, "certificate-authority.pem"), + Server: URL, }, - AuthInfos: map[string]*clientcmdapi.AuthInfo{ - userName: { - ClientCertificate: filepath.Join(PemDestDir, secretName, "client-certificate.pem"), - ClientKey: filepath.Join(PemDestDir, secretName, "client-key.pem"), - }, + }, + AuthInfos: map[string]*clientcmdapi.AuthInfo{ + userName: { + ClientCertificate: filepath.Join(PemDestDir, secretName, "client-certificate.pem"), + ClientKey: filepath.Join(PemDestDir, secretName, "client-key.pem"), }, - CurrentContext: contextName, - Contexts: map[string]*clientcmdapi.Context{ - contextName: { - Cluster: secretName, - AuthInfo: userName, - }, + }, + CurrentContext: contextName, + Contexts: map[string]*clientcmdapi.Context{ + contextName: { + Cluster: secretName, + AuthInfo: userName, }, - } - authConfig, err := clientcmd.Write(*config) - if err != nil { - return nil, nil, "", nil, err - } - configResource := &resource.File{Content: string(authConfig), Destination: filepath.Join(ConfigDestDir, secretName+".yaml")} - b.AddResource("install:"+secretName, configResource, plan.DependOn("set-perms:pem-dir")) - - return contents, decrypted, secretName, authConfig, nil - default: - return nil, nil, "", nil, fmt.Errorf("File %q does not contain a sealed secret", secretFileName) + }, } + authConfig, err := clientcmd.Write(*config) + if err != nil { + return nil, nil, "", nil, err + } + configResource := &resource.File{Content: string(authConfig), Destination: filepath.Join(ConfigDestDir, secretName+".yaml")} + b.AddResource("install:"+secretName, configResource, plan.DependOn("set-perms:pem-dir")) + + return contents, decrypted, secretName, authConfig, nil } func createSealedSecretKeySecretManifest(privateKey, cert, ns string) ([]byte, error) { @@ -1031,8 +1041,8 @@ func capiControllerManifest(controller ControllerParams, namespace, configDir st if err != nil { return nil, err } - content, err := manifest.WithNamespace(string(manifestbytes), namespace) - return []byte(content), err + content, err := manifest.WithNamespace(serializer.FromBytes(manifestbytes), namespace) + return content, err } func wksControllerManifest(controller ControllerParams, namespace, configDir string) ([]byte, error) { @@ -1062,11 +1072,11 @@ func wksControllerManifest(controller ControllerParams, namespace, configDir str if err != nil { return nil, err } - content, err := manifest.WithNamespace(string(manifestbytes), namespace) + content, err := manifest.WithNamespace(serializer.FromBytes(manifestbytes), namespace) if err != nil { return nil, err } - return updateControllerImage([]byte(content), controller.ImageOverride) + return updateControllerImage(content, controller.ImageOverride) } const deployment = "Deployment" @@ -1322,6 +1332,7 @@ func buildAddon(addonDefn existinginfrav1.Addon, imageRepository string, Cluster OutputDirectory: tmpDir, ImageRepository: imageRepository, Params: addonDefn.Params, + YAML: true, }) if err != nil { return nil, err @@ -1335,11 +1346,11 @@ func buildAddon(addonDefn existinginfrav1.Addon, imageRepository string, Cluster // The build puts files in a temp dir we read them into []byte and return those // so we can cleanup the temp files for _, m := range manifests { - content, err := manifest.WithNamespace(m, namespace) + content, err := manifest.WithNamespace(serializer.FromFile(m), namespace) if err != nil { return nil, err } - retManifests = append(retManifests, []byte(content)) + retManifests = append(retManifests, content) } return retManifests, nil } @@ -1358,12 +1369,12 @@ func processDeps(deps []string, manifests [][]byte, namespace string) ([][]byte, if err != nil { logger.Warnf("Failed to load addon dependency - %v", err) } - ctent, err := manifest.WithNamespace(string(contents), namespace) + content, err := manifest.WithNamespace(serializer.FromBytes(contents), namespace) if err != nil { - logger.Warnf("Failed to set namespace for manifest:\n%s\n", ctent) + logger.Warnf("Failed to set namespace for manifest:\n%s\n", content) } logger.Debugln("Loading dependency") - retManifests = append(retManifests, []byte(ctent)) + retManifests = append(retManifests, content) } return retManifests, nil } diff --git a/pkg/apis/wksprovider/machine/os/os_test.go b/pkg/apis/wksprovider/machine/os/os_test.go index a62eb425..e3d35d73 100644 --- a/pkg/apis/wksprovider/machine/os/os_test.go +++ b/pkg/apis/wksprovider/machine/os/os_test.go @@ -2,6 +2,7 @@ package os import ( "encoding/base64" + "fmt" "io/ioutil" "strings" "testing" @@ -99,14 +100,16 @@ func TestFlux(t *testing.T) { _, err = f.WriteString(dk) assert.NoError(t, f.Close()) assert.NoError(t, err) + identityStr := fmt.Sprintf("identity: %s", base64.StdEncoding.EncodeToString([]byte(dk))) + var gitDeployKeyPath = f.Name() var tests = []struct { URL, branch, deployKeyPath, notExp, expManifestText, notExpManifestText, msg string }{ {"", "", "", "flux", "", "", "expected plan without flux"}, {gitURL, "", "", "", gitURL, "", "expected plan w/o branch or deploy key"}, - {gitURL, "", gitDeployKeyPath, "", "identity: " + base64.StdEncoding.EncodeToString([]byte(dk)), "", "expected flux yaml with deploy key"}, - {gitURL, "", "", "", "", "identity: " + base64.StdEncoding.EncodeToString([]byte(dk)), "expected flux yaml without deploy key"}, + {gitURL, "", gitDeployKeyPath, "", identityStr, "", "expected flux yaml with deploy key"}, + {gitURL, "", "", "", "", identityStr, "expected flux yaml without deploy key"}, {gitURL, gitBranch, "", "", "--git-branch=" + gitBranch, "", "expected flux yaml with branch"}, {gitURL, gitBranch, "", "", "namespace: system", "", "expected to be in the system namespace"}, {gitURL, gitBranch, "", "", "", "namespace: flux", "flux should not be the namespace"}, diff --git a/pkg/baremetalproviderspec/v1alpha1/doc.go b/pkg/baremetalproviderspec/v1alpha1/doc.go index 02439a7c..ab15b56e 100644 --- a/pkg/baremetalproviderspec/v1alpha1/doc.go +++ b/pkg/baremetalproviderspec/v1alpha1/doc.go @@ -1,4 +1,4 @@ -// +k8s:deepcopy-gen=package,register +// +k8s:deepcopy-gen=package // +k8s:openapi-gen=true // +k8s:defaulter-gen=TypeMeta diff --git a/pkg/baremetalproviderspec/v1alpha1/register.go b/pkg/baremetalproviderspec/v1alpha1/register.go new file mode 100644 index 00000000..1bb78f97 --- /dev/null +++ b/pkg/baremetalproviderspec/v1alpha1/register.go @@ -0,0 +1,28 @@ +package v1alpha1 + +import ( + "k8s.io/apimachinery/pkg/runtime" + "k8s.io/apimachinery/pkg/runtime/schema" +) + +const GroupName = "baremetalproviderspec" + +var SchemeGroupVersion = schema.GroupVersion{Group: GroupName, Version: "v1alpha1"} + +var ( + SchemeBuilder runtime.SchemeBuilder + localSchemeBuilder = &SchemeBuilder + AddToScheme = localSchemeBuilder.AddToScheme +) + +func init() { + localSchemeBuilder.Register(addKnownTypes) +} + +func addKnownTypes(scheme *runtime.Scheme) error { + scheme.AddKnownTypes(SchemeGroupVersion, + &BareMetalClusterProviderSpec{}, + &BareMetalMachineProviderSpec{}, + ) + return nil +} diff --git a/pkg/cluster/machine/machine.go b/pkg/cluster/machine/machine.go index d87f980f..191f0627 100644 --- a/pkg/cluster/machine/machine.go +++ b/pkg/cluster/machine/machine.go @@ -9,12 +9,13 @@ import ( "github.com/blang/semver" "github.com/pkg/errors" log "github.com/sirupsen/logrus" + "github.com/weaveworks/libgitops/pkg/serializer" existinginfrav1 "github.com/weaveworks/wksctl/pkg/existinginfra/v1alpha3" "github.com/weaveworks/wksctl/pkg/kubernetes" + "github.com/weaveworks/wksctl/pkg/scheme" "github.com/weaveworks/wksctl/pkg/utilities/manifest" "k8s.io/apimachinery/pkg/util/validation/field" clusterv1 "sigs.k8s.io/cluster-api/api/v1alpha3" - clusteryaml "sigs.k8s.io/cluster-api/util/yaml" "sigs.k8s.io/controller-runtime/pkg/client" ) @@ -65,29 +66,29 @@ func ParseManifest(file string) (ml []*clusterv1.Machine, bl []*existinginfrav1. } // Parse parses the provided machines io.Reader. -func Parse(r io.ReadCloser) (ml []*clusterv1.Machine, bl []*existinginfrav1.ExistingInfraMachine, err error) { - decoder := clusteryaml.NewYAMLDecoder(r) - defer decoder.Close() - - for { - obj, _, err := decoder.Decode(nil, nil) - if err == io.EOF { - break - } else if err != nil { - return nil, nil, err - } +func Parse(rc io.ReadCloser) (ml []*clusterv1.Machine, bl []*existinginfrav1.ExistingInfraMachine, err error) { + // Read from the ReadCloser YAML document-by-document + fr := serializer.NewYAMLFrameReader(rc) + + // Decode all objects in the FrameReader + objs, err := scheme.Serializer.Decoder().DecodeAll(fr) + if err != nil { + return + } - switch v := obj.(type) { + // Loop through the untyped objects we got and add them to the specific lists + for _, obj := range objs { + switch typed := obj.(type) { case *clusterv1.Machine: - ml = append(ml, v) + ml = append(ml, typed) case *existinginfrav1.ExistingInfraMachine: - bl = append(bl, v) + bl = append(bl, typed) default: - return nil, nil, fmt.Errorf("unexpected type %T", v) + return nil, nil, fmt.Errorf("unexpected type %T", obj) } } - return ml, bl, nil + return } // Validate validates the provided machines. diff --git a/pkg/cluster/machine/machine_test.go b/pkg/cluster/machine/machine_test.go index cbf8976a..b4d96e93 100644 --- a/pkg/cluster/machine/machine_test.go +++ b/pkg/cluster/machine/machine_test.go @@ -13,7 +13,6 @@ import ( "github.com/weaveworks/wksctl/pkg/utilities/manifest" metav1 "k8s.io/apimachinery/pkg/apis/meta/v1" "k8s.io/apimachinery/pkg/util/validation/field" - "k8s.io/client-go/kubernetes/scheme" clusterv1 "sigs.k8s.io/cluster-api/api/v1alpha3" ) @@ -76,7 +75,8 @@ const machinesValid = ` metadata: name: master-0 spec: - address: "172.17.8.101" + private: + address: "172.17.8.101" --- apiVersion: "cluster.x-k8s.io/v1alpha3" kind: Machine @@ -95,11 +95,8 @@ const machinesValid = ` metadata: name: node-0 spec: - address: "172.17.8.102" - authenticationWebhook: - cacheTTL: 2m0s - server: - url: http://127.0.0.1:5000/authenticate + private: + address: "172.17.8.102" ` // A machine doesn't have a matching Kubernetes version. @@ -121,7 +118,8 @@ const machinesInconsistentKubeVersion = ` metadata: name: master-0 spec: - address: "172.17.8.101" + private: + address: "172.17.8.101" --- apiVersion: "cluster.x-k8s.io/v1alpha3" kind: Machine @@ -140,7 +138,8 @@ const machinesInconsistentKubeVersion = ` metadata: name: node-0 spec: - address: "172.17.8.102" + private: + address: "172.17.8.102" ` // Unsupported Kubernetes version. @@ -161,7 +160,8 @@ const machinesUnsupportedKubernetesVersion = ` apiVersion: "cluster.x-k8s.io/v1 metadata: name: master-0 spec: - address: "172.17.8.101" + private: + address: "172.17.8.101" --- apiVersion: "cluster.x-k8s.io/v1alpha3" kind: Machine @@ -180,7 +180,8 @@ const machinesUnsupportedKubernetesVersion = ` apiVersion: "cluster.x-k8s.io/v1 metadata: name: node-0 spec: - address: "172.17.8.102" + private: + address: "172.17.8.102" ` const machinesNoGodNoMaster = ` @@ -201,7 +202,8 @@ const machinesNoGodNoMaster = ` metadata: name: node-0 spec: - address: "172.17.8.102" + private: + address: "172.17.8.102" ` func machinesFromString(t *testing.T, s string) ([]*clusterv1.Machine, []*existinginfrav1.ExistingInfraMachine) { @@ -221,9 +223,6 @@ func fieldsInError(errors field.ErrorList) []string { } func TestValidateMachines(t *testing.T) { - assert.NoError(t, clusterv1.AddToScheme(scheme.Scheme)) - assert.NoError(t, existinginfrav1.AddToScheme(scheme.Scheme)) - tests := []struct { input string errors []string @@ -264,15 +263,16 @@ const machinesWithoutVersions = ` set: master spec: infrastructureRef: - kind: ExistingInfraMachine - name: master-0 + kind: ExistingInfraMachine + name: master-0 --- apiVersion: "cluster.weave.works/v1alpha3" kind: "ExistingInfraMachine" metadata: name: master-0 spec: - address: "172.17.8.101" + private: + address: "172.17.8.101" --- apiVersion: "cluster.x-k8s.io/v1alpha3" kind: Machine @@ -290,11 +290,8 @@ const machinesWithoutVersions = ` metadata: name: node-0 spec: - address: "172.17.8.102" - authenticationWebhook: - cacheTTL: 2m0s - server: - url: http://127.0.0.1:5000/authenticate + private: + address: "172.17.8.102" ` // Ensure we populate the Kubernetes version if not provided. diff --git a/pkg/existinginfra/v1alpha3/doc.go b/pkg/existinginfra/v1alpha3/doc.go index 0c66503c..0c3032a4 100644 --- a/pkg/existinginfra/v1alpha3/doc.go +++ b/pkg/existinginfra/v1alpha3/doc.go @@ -1,4 +1,4 @@ -// +k8s:deepcopy-gen=package,register +// +k8s:deepcopy-gen=package // +k8s:openapi-gen=true // +k8s:defaulter-gen=TypeMeta diff --git a/pkg/existinginfra/v1alpha3/register.go b/pkg/existinginfra/v1alpha3/register.go index 0f56eb58..b78af5f1 100644 --- a/pkg/existinginfra/v1alpha3/register.go +++ b/pkg/existinginfra/v1alpha3/register.go @@ -27,14 +27,7 @@ func addKnownTypes(scheme *runtime.Scheme) error { &ExistingInfraCluster{}, &ExistingInfraClusterList{}, ) + // TODO: Do we really need this? metav1.AddToGroupVersion(scheme, SchemeGroupVersion) return nil } - -func NewScheme() (*runtime.Scheme, error) { - scheme := runtime.NewScheme() - if err := AddToScheme(scheme); err != nil { - return nil, err - } - return scheme, nil -} diff --git a/pkg/existinginfra/v1alpha3/types.go b/pkg/existinginfra/v1alpha3/types.go index 7a89dbcf..5f5d591c 100644 --- a/pkg/existinginfra/v1alpha3/types.go +++ b/pkg/existinginfra/v1alpha3/types.go @@ -17,7 +17,10 @@ type ExistingInfraCluster struct { } type ExistingInfraClusterSpec struct { - User string `json:"user"` + User string `json:"user"` + // TODO: Figure out a way to re-generate the CRDs. Also, this field should be removed in v1alpha3 + // once we have the conversions in place + // +optional DeprecatedSSHKeyPath string `json:"sshKeyPath"` HTTPProxy string `json:"httpProxy,omitempty"` diff --git a/pkg/plan/resource/kubeadm_init.go b/pkg/plan/resource/kubeadm_init.go index b46b74e0..1f7d85b8 100644 --- a/pkg/plan/resource/kubeadm_init.go +++ b/pkg/plan/resource/kubeadm_init.go @@ -1,12 +1,14 @@ package resource import ( + "bytes" "fmt" "io/ioutil" "strings" "github.com/pkg/errors" log "github.com/sirupsen/logrus" + "github.com/weaveworks/libgitops/pkg/serializer" "github.com/weaveworks/wksctl/pkg/apis/wksprovider/controller/manifests" "github.com/weaveworks/wksctl/pkg/apis/wksprovider/machine/config" "github.com/weaveworks/wksctl/pkg/apis/wksprovider/machine/config/kubeadm" @@ -18,7 +20,6 @@ import ( "github.com/weaveworks/wksctl/pkg/utilities/object" "github.com/weaveworks/wksctl/pkg/utilities/ssh" "github.com/weaveworks/wksctl/pkg/utilities/version" - yml "github.com/weaveworks/wksctl/pkg/utilities/yaml" corev1 "k8s.io/api/core/v1" kubeadmapi "k8s.io/kubernetes/cmd/kubeadm/app/apis/kubeadm/v1beta1" "sigs.k8s.io/yaml" @@ -123,12 +124,23 @@ func (ki *KubeadmInit) Apply(runner plan.Runner, diff plan.Diff) (bool, error) { return false, errors.Wrap(err, "failed to serialize kube-proxy's KubeProxyConfiguration object") } - config := yml.Concat(clusterConfig, kubeadmConfig, kubeproxyConfig) + // Create a temporary buffer for YAML frames, and the corresponding YAML FrameWriter + buf := new(bytes.Buffer) + fw := serializer.NewYAMLFrameWriter(buf) + + // Write all three frames into the FrameWriter, and use the output in configBytes + if err := serializer.WriteFrameList(fw, + [][]byte{clusterConfig, kubeadmConfig, kubeproxyConfig}, + ); err != nil { + return false, err + } + configBytes := buf.Bytes() + remotePath := "/tmp/wks_kubeadm_init_config.yaml" - if err = scripts.WriteFile(config, remotePath, 0660, runner); err != nil { + if err = scripts.WriteFile(configBytes, remotePath, 0660, runner); err != nil { return false, errors.Wrap(err, "failed to upload kubeadm's configuration") } - log.WithField("yaml", string(config)).Debug("uploaded kubeadm's configuration") + log.WithField("yaml", string(configBytes)).Debug("uploaded kubeadm's configuration") //nolint:errcheck defer removeFile(remotePath, runner) // TODO: Deferred error checking @@ -174,11 +186,11 @@ func (ki *KubeadmInit) updateManifestNamespace(fileName, namespace string) ([]by if err != nil { return nil, errors.Wrap(err, "Failed to open manifest") } - c, err := manifest.WithNamespace(string(content), namespace) + c, err := manifest.WithNamespace(serializer.FromBytes(content), namespace) if err != nil { return nil, err } - return []byte(c), nil + return c, nil } func (ki *KubeadmInit) kubectlApply(fileName, namespace string, runner plan.Runner) error { diff --git a/pkg/plan/resource/kubeadm_join.go b/pkg/plan/resource/kubeadm_join.go index 9b48f6b8..9947fead 100644 --- a/pkg/plan/resource/kubeadm_join.go +++ b/pkg/plan/resource/kubeadm_join.go @@ -2,12 +2,12 @@ package resource import ( "fmt" - "github.com/weaveworks/wksctl/pkg/utilities/version" "strings" "github.com/pkg/errors" log "github.com/sirupsen/logrus" "github.com/weaveworks/wksctl/pkg/plan" + "github.com/weaveworks/wksctl/pkg/utilities/version" ) // KubeadmJoin represents an attempt to join a Kubernetes node via kubeadm. diff --git a/pkg/plan/resource/kubectl_apply.go b/pkg/plan/resource/kubectl_apply.go index ba48dd58..752033cc 100644 --- a/pkg/plan/resource/kubectl_apply.go +++ b/pkg/plan/resource/kubectl_apply.go @@ -8,6 +8,7 @@ import ( "github.com/pkg/errors" log "github.com/sirupsen/logrus" + "github.com/weaveworks/libgitops/pkg/serializer" "github.com/weaveworks/wksctl/pkg/apis/wksprovider/machine/scripts" "github.com/weaveworks/wksctl/pkg/plan" "github.com/weaveworks/wksctl/pkg/utilities/manifest" @@ -105,7 +106,6 @@ func writeTempFile(r plan.Runner, c []byte, fname string) (string, error) { // Apply performs a "kubectl apply" as specified in the receiver. func (ka *KubectlApply) Apply(runner plan.Runner, diff plan.Diff) (bool, error) { - var content string // Get the manifest content. c, err := ka.content() @@ -114,13 +114,13 @@ func (ka *KubectlApply) Apply(runner plan.Runner, diff plan.Diff) (bool, error) } if str(ka.Namespace) != "" { - content, err = manifest.WithNamespace(string(c), str(ka.Namespace)) + content, err := manifest.WithNamespace(serializer.FromBytes(c), str(ka.Namespace)) if err != nil { return false, err } - } - if content != "" { - c = []byte(content) + if len(content) != 0 { + c = content + } } if err := kubectlApply(runner, kubectlApplyArgs{ diff --git a/pkg/scheme/scheme.go b/pkg/scheme/scheme.go new file mode 100644 index 00000000..594e88d6 --- /dev/null +++ b/pkg/scheme/scheme.go @@ -0,0 +1,40 @@ +package scheme + +import ( + ssv1alpha1 "github.com/bitnami-labs/sealed-secrets/pkg/apis/sealed-secrets/v1alpha1" + "k8s.io/apimachinery/pkg/runtime" + "k8s.io/apimachinery/pkg/util/errors" + utilruntime "k8s.io/apimachinery/pkg/util/runtime" + clientgoscheme "k8s.io/client-go/kubernetes/scheme" + clusterv1alpha3 "sigs.k8s.io/cluster-api/api/v1alpha3" + + "github.com/weaveworks/libgitops/pkg/serializer" + "github.com/weaveworks/wksctl/pkg/baremetalproviderspec/v1alpha1" + "github.com/weaveworks/wksctl/pkg/existinginfra/v1alpha3" +) + +var ( + // Scheme contains information about all known types, API versions, and defaulting & conversion methods + Scheme = runtime.NewScheme() + + // Serializer provides powerful high-level encoding/decoding functionality + Serializer = serializer.NewSerializer(Scheme, nil) +) + +func init() { + utilruntime.Must(AddToScheme(Scheme)) +} + +// AddToScheme builds the scheme using all known versions of the api. +func AddToScheme(scheme *runtime.Scheme) error { + // This returns an error if and only if any of the following function calls return an error + // If many errors are returned, they are all concatenated after each other + return errors.NewAggregate([]error{ + clientgoscheme.AddToScheme(scheme), // Register all known Kubernetes types + ssv1alpha1.AddToScheme(scheme), // Register Bitnami's Sealed Secrets types + v1alpha1.AddToScheme(scheme), // Register our old v1alpha1 types + v1alpha3.AddToScheme(scheme), // Register our new v1alpha3 types + clusterv1alpha3.AddToScheme(scheme), // Register the upstream CAPI v1alpha3 types + scheme.SetVersionPriority(v1alpha3.SchemeGroupVersion), // Always prefer v1alpha3 when encoding our types + }) +} diff --git a/pkg/specs/parse_test.go b/pkg/specs/parse_test.go index 970e4c6b..fb3b66ac 100644 --- a/pkg/specs/parse_test.go +++ b/pkg/specs/parse_test.go @@ -7,34 +7,31 @@ import ( "testing" "github.com/stretchr/testify/assert" - existinginfrav1 "github.com/weaveworks/wksctl/pkg/existinginfra/v1alpha3" - "k8s.io/client-go/kubernetes/scheme" - clusterv1 "sigs.k8s.io/cluster-api/api/v1alpha3" ) const clusterMissingClusterDefinition = ` apiVersion: "cluster.weave.works/v1alpha3" kind: "ExistingInfraCluster" metadata: - name: example + name: example spec: - user: "vagrant" + user: "vagrant" ` const clusterMissingExistingInfraClusterDefinition = ` apiVersion: "cluster.x-k8s.io/v1alpha3" kind: Cluster metadata: - name: example + name: example spec: - clusterNetwork: - services: - cidrBlocks: ["10.96.0.0/12"] - pods: - cidrBlocks: ["192.168.0.0/16"] - infrastructureRef: - kind: ExistingInfraCluster - name: example + clusterNetwork: + services: + cidrBlocks: ["10.96.0.0/12"] + pods: + cidrBlocks: ["192.168.0.0/16"] + infrastructureRef: + kind: ExistingInfraCluster + name: example ` func mergeObjects(a string, b string) string { @@ -48,8 +45,6 @@ func parseConfig(s string) (err error) { } func TestParseCluster(t *testing.T) { - assert.NoError(t, clusterv1.AddToScheme(scheme.Scheme)) - assert.NoError(t, existinginfrav1.AddToScheme(scheme.Scheme)) assert.NoError(t, parseConfig(mergeObjects(clusterMissingExistingInfraClusterDefinition, clusterMissingClusterDefinition))) // Verify that the objects individually don't result in a successful parse diff --git a/pkg/specs/specs.go b/pkg/specs/specs.go index 908f040a..89562683 100644 --- a/pkg/specs/specs.go +++ b/pkg/specs/specs.go @@ -1,18 +1,20 @@ package specs import ( + "fmt" "io" "os" "github.com/pkg/errors" log "github.com/sirupsen/logrus" + "github.com/weaveworks/libgitops/pkg/serializer" "github.com/weaveworks/wksctl/pkg/cluster/machine" existinginfrav1 "github.com/weaveworks/wksctl/pkg/existinginfra/v1alpha3" + "github.com/weaveworks/wksctl/pkg/scheme" "github.com/weaveworks/wksctl/pkg/utilities" "k8s.io/apimachinery/pkg/util/validation/field" clusterv1 "sigs.k8s.io/cluster-api/api/v1alpha3" apierrors "sigs.k8s.io/cluster-api/errors" - clusteryaml "sigs.k8s.io/cluster-api/util/yaml" ) // Utilities for managing cluster and machine specs. @@ -89,25 +91,25 @@ func parseManifests(clusterManifestPath, machinesManifestPath string) (*clusterv } // ParseCluster converts the manifest file into a Cluster -func ParseCluster(r io.ReadCloser) (cluster *clusterv1.Cluster, eic *existinginfrav1.ExistingInfraCluster, err error) { - decoder := clusteryaml.NewYAMLDecoder(r) - defer decoder.Close() - - for { - obj, _, err := decoder.Decode(nil, nil) - if err == io.EOF { - break - } else if err != nil { - return nil, nil, errors.Wrap(err, "failed to parse cluster manifest") - } +func ParseCluster(rc io.ReadCloser) (cluster *clusterv1.Cluster, eic *existinginfrav1.ExistingInfraCluster, err error) { + // Read from the ReadCloser YAML document-by-document + fr := serializer.NewYAMLFrameReader(rc) + + // Decode all objects in the FrameReader + objs, err := scheme.Serializer.Decoder().DecodeAll(fr) + if err != nil { + return nil, nil, errors.Wrap(err, "failed to parse cluster manifest") + } - switch v := obj.(type) { + // Loop through the untyped objects we got and add them to the specific lists + for _, obj := range objs { + switch typed := obj.(type) { case *clusterv1.Cluster: - cluster = v + cluster = typed case *existinginfrav1.ExistingInfraCluster: - eic = v + eic = typed default: - return nil, nil, errors.Errorf("unexpected type %T", v) + return nil, nil, fmt.Errorf("unexpected type %T", obj) } } diff --git a/pkg/specs/validation_test.go b/pkg/specs/validation_test.go index 95ebc839..c6898942 100644 --- a/pkg/specs/validation_test.go +++ b/pkg/specs/validation_test.go @@ -8,7 +8,6 @@ import ( "github.com/stretchr/testify/assert" existinginfrav1 "github.com/weaveworks/wksctl/pkg/existinginfra/v1alpha3" "k8s.io/apimachinery/pkg/util/validation/field" - "k8s.io/client-go/kubernetes/scheme" clusterv1 "sigs.k8s.io/cluster-api/api/v1alpha3" ) @@ -23,9 +22,9 @@ spec: cidrBlocks: ["10.96.0.0/12"] pods: cidrBlocks: ["192.168.0.0/16"] - infrastructureRef: - kind: ExistingInfraCluster - name: example + infrastructureRef: + kind: ExistingInfraCluster + name: example --- apiVersion: "cluster.weave.works/v1alpha3" kind: "ExistingInfraCluster" @@ -46,9 +45,9 @@ spec: cidrBlocks: ["10.96.0.0/12"] pods: cidrBlocks: ["192.168.0.0/16"] - infrastructureRef: - kind: ExistingInfraCluster - name: example + infrastructureRef: + kind: ExistingInfraCluster + name: example --- apiVersion: "cluster.weave.works/v1alpha3" kind: "ExistingInfraCluster" @@ -291,8 +290,6 @@ func fieldsInError(errors field.ErrorList) []string { } func TestValidateCluster(t *testing.T) { - assert.NoError(t, clusterv1.AddToScheme(scheme.Scheme)) - assert.NoError(t, existinginfrav1.AddToScheme(scheme.Scheme)) tests := []struct { input string errors []string diff --git a/pkg/utilities/manifest/manifest.go b/pkg/utilities/manifest/manifest.go index 8bb15fb9..8503ce7f 100644 --- a/pkg/utilities/manifest/manifest.go +++ b/pkg/utilities/manifest/manifest.go @@ -1,254 +1,132 @@ package manifest import ( - encjson "encoding/json" - "io/ioutil" - "os" - "reflect" - "strings" - - "github.com/pkg/errors" - bmv1alpha3 "github.com/weaveworks/wksctl/pkg/existinginfra/v1alpha3" - "gopkg.in/oleiade/reflections.v1" - "k8s.io/apimachinery/pkg/api/meta" - metav1 "k8s.io/apimachinery/pkg/apis/meta/v1" - "k8s.io/apimachinery/pkg/runtime" - "k8s.io/apimachinery/pkg/runtime/schema" - "k8s.io/apimachinery/pkg/runtime/serializer/json" - "k8s.io/client-go/kubernetes/scheme" - clusterv1alpha3 "sigs.k8s.io/cluster-api/api/v1alpha3" - "sigs.k8s.io/yaml" + "bytes" + "io" + + "github.com/weaveworks/libgitops/pkg/serializer" + kyaml "sigs.k8s.io/kustomize/kyaml/yaml" ) -// cluster-api types const ( - GroupName = "sigs.k8s.io" - GroupVersion = "v1alpha3" DefaultNamespace = `weavek8sops` + + corev1Version = "v1" + listKind = "List" + namespaceKind = "Namespace" ) var DefaultAddonNamespaces = map[string]string{"weave-net": "kube-system"} -var SchemeGroupVersion = schema.GroupVersion{Group: GroupName, Version: GroupVersion} -var SchemeBuilder = runtime.NewSchemeBuilder(addKnownTypes) -var AddToScheme = SchemeBuilder.AddToScheme +func WithNamespace(rc io.ReadCloser, namespace string) ([]byte, error) { + // Create a FrameReader and FrameWriter, using YAML document separators + // The FrameWriter will write into buf + fr := serializer.NewYAMLFrameReader(rc) + buf := new(bytes.Buffer) + fw := serializer.NewYAMLFrameWriter(buf) -func addKnownTypes(scheme *runtime.Scheme) error { - scheme.AddKnownTypes(SchemeGroupVersion, - &clusterv1alpha3.Cluster{}, - &clusterv1alpha3.ClusterList{}, - &clusterv1alpha3.Machine{}, - &clusterv1alpha3.MachineList{}, - ) - scheme.AddKnownTypes(bmv1alpha3.SchemeGroupVersion, - &bmv1alpha3.ExistingInfraCluster{}, - &bmv1alpha3.ExistingInfraMachine{}, - ) - metav1.AddToGroupVersion(scheme, SchemeGroupVersion) - return nil -} - -//WithNamespace takes in a file or string kubernetes manifest and updates any resources to -//use the namespace specified. -//Returns the updated manifest or an error if there was a problem updating the manifest. -func WithNamespace(fileOrString, namespace string) (string, error) { - content, err := Content(fileOrString) + // Read all frames from the FrameReader + frames, err := serializer.ReadFrameList(fr) if err != nil { - return "", err + return nil, err } + + // If namespace is "", just write all the read frames to buf through the framewriter, and exit if namespace == "" { - return string(content), nil - } + if err := serializer.WriteFrameList(fw, frames); err != nil { + return nil, err + } - var ( - entries []string = strings.Split(string(content), "---\n") - updates []string - ) + return buf.Bytes(), nil + } - for _, entry := range entries { - if entry == "" { - continue - } - decode := scheme.Codecs.UniversalDeserializer().Decode - obj, _, err := decode([]byte(entry), nil, nil) - if err != nil { - return "", errors.Wrap(err, "Unable to deserialize entry") - } - err = updateNamespace(&obj, namespace) + // Loop through all the frames + for _, frame := range frames { + // Parse the given frame's YAML. JSON also works + obj, err := kyaml.Parse(string(frame)) if err != nil { - return "", errors.Wrap(err, "unable to update namespace") - } - updated, err := yaml.Marshal(obj) - if err != nil { - return "", errors.Wrap(err, "unable to marshal object") + return nil, err } - updates = append(updates, string(updated)) - } - return strings.Join(updates, "---\n"), nil -} -func updateNamespace(obj *runtime.Object, namespace string) error { - if err := setNamespace(obj, namespace); err != nil { - return errors.Wrap(err, "Unable to set namespace") - } - if err := setSubjectNamespaceRefs(obj, namespace); err != nil { - return errors.Wrap(err, "Unable to set Subject resource namespace ref") - } - if meta.IsListType(*obj) { - items, err := meta.ExtractList(*obj) + // Get the TypeMeta of the given object + meta, err := obj.GetMeta() if err != nil { - return errors.Wrap(err, "Unable to extract items from List resource!") + return nil, err } - s := json.NewYAMLSerializer(json.DefaultMetaFactory, scheme.Scheme, scheme.Scheme) - for i, item := range items { - hasRawField, err := reflections.HasField(item, "Raw") - if err != nil { - return errors.Wrap(err, "Unable to determine if list item has Raw field") + // Use special handling for the v1.List, as we need to traverse each item in the .items list + // Otherwise, just run setNamespaceOnObject for the parsed object + if meta.APIVersion == corev1Version && meta.Kind == listKind { + // Visit each item under .items + if err := visitElementsForPath(obj, func(item *kyaml.RNode) error { + // Set namespace on the given item + return setNamespaceOnObject(item, namespace) + + }, "items"); err != nil { + return nil, err } - if hasRawField { - r, err := reflections.GetField(item, "Raw") - if err != nil { - return errors.Wrap(err, "Unable to get Raw field to decode") - } - raw := r.([]byte) - o, _, err := s.Decode(raw, nil, nil) - if err != nil { - return errors.Wrap(err, "Unable to decode item's raw field") - } - if err = updateNamespace(&o, namespace); err != nil { - return err - } - items[i] = o - } else { - if err = updateNamespace(&item, namespace); err != nil { - return err - } - items[i] = item + + } else { + // Set namespace on the given object + if err := setNamespaceOnObject(obj, namespace); err != nil { + return nil, err } } - if err = meta.SetList(*obj, items); err != nil { - return errors.Wrap(err, "Unable to set items on List resource") - } - } - return nil -} -func setNamespace(obj *runtime.Object, namespace string) error { - k, err := reflections.GetField(*obj, "Kind") - if err != nil { - return errors.Wrap(err, "Unable to get object kind field") - } - kind := k.(string) - hasField, err := reflections.HasField(*obj, "ObjectMeta") - if err != nil { - return errors.Wrap(err, "unable to determine if object has metadata") - } - if hasField { - v := reflect.ValueOf(*obj).Elem().FieldByName("ObjectMeta") - om := v.Addr().Interface().(*metav1.ObjectMeta) - if kind == "Namespace" { - om.SetName(namespace) - } else { - om.SetNamespace(namespace) + // Convert the object to string, and write it to the FrameWriter + str, err := obj.String() + if err != nil { + return nil, err } - if err := reflections.SetField(*obj, "ObjectMeta", *om); err != nil { - return errors.Wrap(err, "unable to update metadata on object") + if _, err := fw.Write([]byte(str)); err != nil { + return nil, err } } - return nil + + return buf.Bytes(), nil } -func setSubjectNamespaceRefs(obj *runtime.Object, namespace string) error { - hasSubjects, err := reflections.HasField(*obj, "Subjects") - if err != nil { - return errors.Wrap(err, "Unable to determine if resource has Subject resources") - } - if !hasSubjects { - return nil - } - subjects, err := reflections.GetField(*obj, "Subjects") +func setNamespaceOnObject(obj *kyaml.RNode, namespace string) error { + // Get the TypeMeta of the given object + meta, err := obj.GetMeta() if err != nil { return err } - switch reflect.TypeOf(subjects).Kind() { - case reflect.Slice: - subs := reflect.ValueOf(subjects) - for i := 0; i < subs.Len(); i++ { - sub := subs.Index(i) - subptr := sub.Addr().Interface() - hasNamespace, err := reflections.HasField(subptr, "Namespace") - if err != nil { - return errors.Wrap(err, "Unable to determine with Subject has a namespace field") - } - if !hasNamespace { - continue - } - if err = reflections.SetField(subptr, "Namespace", namespace); err != nil { - return err - } - subs.Index(i).Set(sub) - } - if err = reflections.SetField(*obj, "Subjects", subs.Interface()); err != nil { - return errors.Wrap(err, "Unable to set namespace references") - } - default: - return errors.New("Subjects should be a slice but wasn't") - } - return nil -} -//Content returns a byte slice representing the yaml manifest retrieved from a passed in file or string -func Content(fileOrString string) ([]byte, error) { - if !isFile(fileOrString) { - return convertJSONToYAMLIfNecessary(fileOrString) - } - file, err := os.Open(fileOrString) - if err != nil { - return nil, errors.Wrap(err, "failed to open manifest") + // The default namespaceFilter sets the "namespace" field (on the metadata object) + // to the desired namespace + namespaceFilter := setNamespaceFilter(namespace) + // However, if the given object IS a Namespace, we set the "name" field to the desired + // namespace name instead. + if meta.APIVersion == corev1Version && meta.Kind == namespaceKind { + namespaceFilter = kyaml.SetField("name", kyaml.NewScalarRNode(namespace)) } - defer file.Close() - - content, err := ioutil.ReadAll(file) + // Lookup and create .metadata (if it doesn't exist), and set its + // namespace field to the desired value + err = obj.PipeE( + kyaml.LookupCreate(kyaml.MappingNode, "metadata"), + namespaceFilter, + ) if err != nil { - return nil, errors.Wrap(err, "failed to read manifest") - } - return convertJSONToYAMLIfNecessary(string(content)) -} - -func convertJSONToYAMLIfNecessary(yamlOrJson string) ([]byte, error) { - if isJSON(yamlOrJson) { - yaml, err := jsonToYaml(yamlOrJson) - if err != nil { - return nil, err - } - return yaml, nil + return err } - return []byte(yamlOrJson), nil -} -func isJSON(s string) bool { - var js string - return encjson.Unmarshal([]byte(s), &js) == nil + // Visit .subjects (if it exists), and traverse its elements, setting + // the namespace field on each item + return visitElementsForPath(obj, func(node *kyaml.RNode) error { + return node.PipeE(setNamespaceFilter(namespace)) + }, "subjects") } -func jsonToYaml(content string) ([]byte, error) { - cbytes := []byte(content) - bytes, err := yaml.JSONToYAML(cbytes) +func visitElementsForPath(obj *kyaml.RNode, fn func(node *kyaml.RNode) error, paths ...string) error { + list, err := obj.Pipe(kyaml.Lookup(paths...)) if err != nil { - return nil, err - } - if len(bytes) == 0 { - return nil, errors.New("Could not convert json to yaml") + return err } - return bytes, nil + return list.VisitElements(fn) } -func isFile(fileOrString string) bool { - _, err := os.Stat(fileOrString) - if err != nil && (os.IsNotExist(err) || strings.Contains(err.Error(), "file name too long")) { - return false - } - return true +func setNamespaceFilter(ns string) kyaml.FieldSetter { + return kyaml.SetField("namespace", kyaml.NewScalarRNode(ns)) } diff --git a/pkg/utilities/manifest/manifest_test.go b/pkg/utilities/manifest/manifest_test.go index c7ce7c41..94f93d4e 100644 --- a/pkg/utilities/manifest/manifest_test.go +++ b/pkg/utilities/manifest/manifest_test.go @@ -6,9 +6,7 @@ import ( "testing" "github.com/stretchr/testify/assert" - existinginfrav1 "github.com/weaveworks/wksctl/pkg/existinginfra/v1alpha3" - "k8s.io/client-go/kubernetes/scheme" - clusterv1 "sigs.k8s.io/cluster-api/api/v1alpha3" + "github.com/weaveworks/libgitops/pkg/serializer" ) const ( @@ -250,18 +248,16 @@ var nstests = []struct { } func TestManifestWithNamespace(t *testing.T) { - assert.NoError(t, clusterv1.AddToScheme(scheme.Scheme)) - assert.NoError(t, existinginfrav1.AddToScheme(scheme.Scheme)) for _, tt := range nstests { t.Run(tt.name, func(t *testing.T) { fname := createFile(t, tt.content, tt.fileName).Name() defer os.Remove(fname) - updated, err := WithNamespace(fname, newNamespace) + updated, err := WithNamespace(serializer.FromFile(fname), newNamespace) assert.NoError(t, err) - assert.NotEqual(t, tt.content, updated) - assert.Contains(t, updated, newNamespace) + assert.NotEqual(t, tt.content, string(updated)) + assert.Contains(t, string(updated), newNamespace) }) } } diff --git a/pkg/utilities/yaml/concat.go b/pkg/utilities/yaml/concat.go deleted file mode 100644 index 6d032c26..00000000 --- a/pkg/utilities/yaml/concat.go +++ /dev/null @@ -1,10 +0,0 @@ -package yaml - -import "bytes" - -var separator = []byte("---\n") - -// Concat concatenates the provided YAML documents. -func Concat(yamls ...[]byte) []byte { - return bytes.Join(yamls, separator) -} diff --git a/test/integration/container/multimaster_test.go b/test/integration/container/multimaster_test.go index 0abf8061..c36fbdb2 100644 --- a/test/integration/container/multimaster_test.go +++ b/test/integration/container/multimaster_test.go @@ -31,44 +31,44 @@ spec: cidrBlocks: [192.168.128.0/17] serviceDomain: cluster.local infrastructureRef: - apiVersion: "cluster.weave.works/v1alpha3" + apiVersion: cluster.weave.works/v1alpha3 kind: ExistingInfraCluster name: test-multimaster --- apiVersion: cluster.weave.works/v1alpha3 -kind: "ExistingInfraCluster" +kind: ExistingInfraCluster metadata: name: test-multimaster spec: - user: root - imageRepository: %s:%d - os: - files: - - source: - configmap: docker - key: daemon.json - destination: /etc/docker/daemon.json - - source: - configmap: repo - key: local.repo - destination: /etc/yum.repos.d/local.repo - cri: - kind: docker - package: docker-ce - version: 19.03.8 - kubeletArguments: - - name: alsologtostderr - value: "true" - - name: container-runtime - value: docker - - name: eviction-hard - value: "memory.available<100Mi,nodefs.available<100Mi,imagefs.available<100Mi" - apiServer: - extraArguments: - - name: alsologtostderr - value: "true" - - name: audit-log-maxsize - value: "10000" + user: root + imageRepository: %s:%d + os: + files: + - destination: /etc/docker/daemon.json + source: + configmap: docker + key: daemon.json + - destination: /etc/yum.repos.d/local.repo + source: + configmap: repo + key: local.repo + cri: + kind: docker + package: docker-ce + version: 19.03.8 + kubeletArguments: + - name: alsologtostderr + value: "true" + - name: container-runtime + value: docker + - name: eviction-hard + value: "memory.available<100Mi,nodefs.available<100Mi,imagefs.available<100Mi" + apiServer: + extraArguments: + - name: alsologtostderr + value: "true" + - name: audit-log-maxsize + value: "10000" ` const machinesYAML = ` @@ -81,13 +81,13 @@ const machinesYAML = ` spec: clusterName: test-multimaster infrastructureRef: - apiVersion: "cluster.weave.works/v1alpha3" + apiVersion: cluster.weave.works/v1alpha3 kind: ExistingInfraMachine name: master-1 bootstrap: {} --- - apiVersion: "cluster.weave.works/v1alpha3" - kind: "ExistingInfraMachine" + apiVersion: cluster.weave.works/v1alpha3 + kind: ExistingInfraMachine metadata: name: master-1 spec: @@ -107,13 +107,13 @@ const machinesYAML = ` spec: clusterName: test-multimaster infrastructureRef: - apiVersion: "cluster.weave.works/v1alpha3" + apiVersion: cluster.weave.works/v1alpha3 kind: ExistingInfraMachine name: master-2 bootstrap: {} --- - apiVersion: "cluster.weave.works/v1alpha3" - kind: "ExistingInfraMachine" + apiVersion: cluster.weave.works/v1alpha3 + kind: ExistingInfraMachine metadata: name: master-2 spec: @@ -133,13 +133,13 @@ const machinesYAML = ` spec: clusterName: test-multimaster infrastructureRef: - apiVersion: "cluster.weave.works/v1alpha3" + apiVersion: cluster.weave.works/v1alpha3 kind: ExistingInfraMachine name: master-3 bootstrap: {} --- - apiVersion: "cluster.weave.works/v1alpha3" - kind: "ExistingInfraMachine" + apiVersion: cluster.weave.works/v1alpha3 + kind: ExistingInfraMachine metadata: name: master-3 spec: @@ -159,13 +159,13 @@ const machinesYAML = ` spec: clusterName: test-multimaster infrastructureRef: - apiVersion: "cluster.weave.works/v1alpha3" + apiVersion: cluster.weave.works/v1alpha3 kind: ExistingInfraMachine name: worker-1 bootstrap: {} --- - apiVersion: "cluster.weave.works/v1alpha3" - kind: "ExistingInfraMachine" + apiVersion: cluster.weave.works/v1alpha3 + kind: ExistingInfraMachine metadata: name: worker-1 spec: diff --git a/test/integration/test/apply_test.go b/test/integration/test/apply_test.go index 60345025..f65d0724 100644 --- a/test/integration/test/apply_test.go +++ b/test/integration/test/apply_test.go @@ -12,21 +12,17 @@ import ( "testing" "time" - "k8s.io/client-go/tools/clientcmd" - + "github.com/stretchr/testify/assert" + "github.com/stretchr/testify/require" "github.com/weaveworks/wksctl/pkg/cluster/machine" + existinginfrav1 "github.com/weaveworks/wksctl/pkg/existinginfra/v1alpha3" "github.com/weaveworks/wksctl/pkg/kubernetes" "github.com/weaveworks/wksctl/pkg/plan/runners/ssh" "github.com/weaveworks/wksctl/pkg/specs" - - existinginfrav1 "github.com/weaveworks/wksctl/pkg/existinginfra/v1alpha3" spawn "github.com/weaveworks/wksctl/test/integration/spawn" - - "github.com/stretchr/testify/assert" - "github.com/stretchr/testify/require" v1 "k8s.io/api/core/v1" metav1 "k8s.io/apimachinery/pkg/apis/meta/v1" - "k8s.io/client-go/kubernetes/scheme" + "k8s.io/client-go/tools/clientcmd" clusterv1 "sigs.k8s.io/cluster-api/api/v1alpha3" ) @@ -363,9 +359,6 @@ func writeTmpFile(runner *ssh.Client, inputFilename, outputFilename string) erro } func TestApply(t *testing.T) { - assert.NoError(t, clusterv1.AddToScheme(scheme.Scheme)) - assert.NoError(t, existinginfrav1.AddToScheme(scheme.Scheme)) - clusterManifestPath := configPath("cluster.yaml") _, c := parseClusterManifest(t, clusterManifestPath)