diff --git a/Gopkg.lock b/Gopkg.lock index 3ef21b868..c330cf6c8 100644 --- a/Gopkg.lock +++ b/Gopkg.lock @@ -2,113 +2,154 @@ [[projects]] + digest = "1:aa65b4877ac225076b4362885e9122fdf6a8728f735749c24f1aeabcad9bdaba" name = "cloud.google.com/go" packages = [ "compute/metadata", - "internal" + "internal", ] + pruneopts = "UT" revision = "3b1ae45394a234c385be014e9a488f2bb6eef821" [[projects]] + digest = "1:42438de56663c9af79baacdcb986156b1820e0d2f030458040055c25d5c9ae01" name = "github.com/Azure/go-ansiterm" packages = [ ".", - "winterm" + "winterm", ] + pruneopts = "UT" revision = "19f72df4d05d31cbe1c56bfc8045c96babff6c7e" [[projects]] + digest = "1:c54c12f9d6716aad8079084272c0c6ac6f21abe203c374e13b512e05d51669fb" name = "github.com/Azure/go-autorest" packages = [ "autorest", "autorest/adal", "autorest/azure", - "autorest/date" + "autorest/date", ] - revision = "d4e6b95c12a08b4de2d48b45d5b4d594e5d32fab" - version = "v9.9.0" + pruneopts = "UT" + revision = "1ff28809256a84bb6966640ff3d0371af82ccba4" [[projects]] + digest = "1:b16fbfbcc20645cb419f78325bb2e85ec729b338e996a228124d68931a6f2a37" name = "github.com/BurntSushi/toml" packages = ["."] + pruneopts = "UT" revision = "b26d9c308763d68093482582cea63d69be07a0f0" version = "v0.3.0" [[projects]] + digest = "1:51d5156c2de01719fdf90b21197b95bc7e8c9d43ca0d5c3f5c875b8b530077c8" name = "github.com/MakeNowJust/heredoc" packages = ["."] + pruneopts = "UT" revision = "bb23615498cded5e105af4ce27de75b089cbe851" [[projects]] + digest = "1:6e6779c1e7984081358a4aee6f944233c8cbabfb28ca9dc0e20af595d476ebf4" name = "github.com/Masterminds/semver" packages = ["."] + pruneopts = "UT" revision = "517734cc7d6470c0d07130e40fd40bdeb9bcd3fd" version = "v1.3.1" [[projects]] + digest = "1:46a054a232ea2b7f0a35398d682b433d26ba9975fce9197b1784824402059f5b" name = "github.com/Masterminds/sprig" packages = ["."] + pruneopts = "UT" revision = "6b2a58267f6a8b1dc8e2eb5519b984008fa85e8c" version = "v2.15.0" [[projects]] + digest = "1:035b152b3f30c1d32a82862fd7af2da1894514d748b0ff7c435ed48e75a0b58a" name = "github.com/Masterminds/vcs" packages = ["."] + pruneopts = "UT" revision = "3084677c2c188840777bff30054f2b553729d329" version = "v1.11.1" [[projects]] + digest = "1:792c6f8317411834d22db5be14276cd87d589cb0f8dcc51c042f0dddf67d60b1" name = "github.com/PuerkitoBio/purell" packages = ["."] + pruneopts = "UT" revision = "8a290539e2e8629dbc4e6bad948158f790ec31f4" version = "v1.0.0" [[projects]] + digest = "1:61e5d7b1fabd5b6734b2595912944dbd9f6e0eaa4adef25e5cbf98754fc91df1" name = "github.com/PuerkitoBio/urlesc" packages = ["."] + pruneopts = "UT" revision = "5bd2802263f21d8788851d5305584c82a5c75d7e" [[projects]] + digest = "1:10bb36acbe3beb4e529f2711e02c66335adc17dffaceb1d6ceca9554c2d8baa0" name = "github.com/aokoli/goutils" packages = ["."] + pruneopts = "UT" revision = "9c37978a95bd5c709a15883b6242714ea6709e64" [[projects]] + digest = "1:311ccee815cbad2b98ab1f1f3f666db6f7f9d5e425cfd99197f6e925d3907848" name = "github.com/asaskevich/govalidator" packages = ["."] + pruneopts = "UT" revision = "7664702784775e51966f0885f5cd27435916517b" version = "v4" [[projects]] - name = "github.com/beorn7/perks" - packages = ["quantile"] - revision = "3ac7bf7a47d159a033b107610db8a1b6575507a4" + branch = "master" + digest = "1:95e08278c876d185ba67533f045e9e63b3c9d02cbd60beb0f4dbaa2344a13ac2" + name = "github.com/chai2010/gettext-go" + packages = [ + "gettext", + "gettext/mo", + "gettext/plural", + "gettext/po", + ] + pruneopts = "UT" + revision = "bf70f2a70fb1b1f36d90d671a72795984eab0fcb" [[projects]] + digest = "1:cc832d4c674b57b5c67f683f75fba043dd3eec6fcd9b936f00cc8ddf439f2131" name = "github.com/cpuguy83/go-md2man" packages = ["md2man"] + pruneopts = "UT" revision = "71acacd42f85e5e82f70a55327789582a5200a90" version = "v1.0.4" [[projects]] + digest = "1:6b21090f60571b20b3ddc2c8e48547dffcf409498ed6002c2cada023725ed377" name = "github.com/davecgh/go-spew" packages = ["spew"] + pruneopts = "UT" revision = "782f4967f2dc4564575ca782fe2d04090b5faca8" [[projects]] + digest = "1:76dc72490af7174349349838f2fe118996381b31ea83243812a97e5a0fd5ed55" name = "github.com/dgrijalva/jwt-go" packages = ["."] - revision = "01aeca54ebda6e0fbfafd0a524d234159c05ec20" + pruneopts = "UT" + revision = "06ea1031745cb8b3dab3f6a236daf2b0aa468b7e" + version = "v3.2.0" [[projects]] + digest = "1:4189ee6a3844f555124d9d2656fe7af02fca961c2a9bad9074789df13a0c62e0" name = "github.com/docker/distribution" packages = [ "digestset", - "reference" + "reference", ] + pruneopts = "UT" revision = "edc3ab29cdff8694dd6feb85cfeb4b5f1b38ed9c" [[projects]] + digest = "1:5eebe80a8c7778ba2ac8d0ce0debce3068d10a1e70891c2294d3521ae23865fc" name = "github.com/docker/docker" packages = [ "api/types", @@ -123,71 +164,95 @@ "api/types/swarm/runtime", "api/types/versions", "pkg/term", - "pkg/term/windows" + "pkg/term/windows", ] + pruneopts = "UT" revision = "4f3616fb1c112e206b88cb7a9922bf49067a7756" [[projects]] + digest = "1:87dcb59127512b84097086504c16595cf8fef35b9e0bfca565dfc06e198158d7" name = "github.com/docker/go-connections" packages = ["nat"] + pruneopts = "UT" revision = "3ede32e2033de7505e6500d6c868c2b9ed9f169d" version = "v0.3.0" [[projects]] + digest = "1:57d39983d01980c1317c2c5c6dd4b5b0c4a804ad2df800f2f6cbcd6a6d05f6ca" name = "github.com/docker/go-units" packages = ["."] + pruneopts = "UT" revision = "9e638d38cf6977a37a8ea0078f3ee75a7cdb2dd1" [[projects]] + digest = "1:58be7025fd84632dfbb8a398f931b5bdbbecc0390e4385df4ae56775487a0f87" name = "github.com/docker/spdystream" packages = [ ".", - "spdy" + "spdy", ] + pruneopts = "UT" revision = "449fdfce4d962303d702fec724ef0ad181c92528" [[projects]] + digest = "1:11e94345a96c7ffd792e2c6019b79fd9c51d9faf55201d23a96c38dc09533a01" name = "github.com/evanphx/json-patch" packages = ["."] + pruneopts = "UT" revision = "944e07253867aacae43c04b2e6a239005443f33a" [[projects]] branch = "master" + digest = "1:5e0da1aba1a7b125f46e6ddca43e98b40cf6eaea3322b016c331cf6afe53c30a" name = "github.com/exponent-io/jsonpath" packages = ["."] + pruneopts = "UT" revision = "d6023ce2651d8eafb5c75bb0c7167536102ec9f5" [[projects]] + digest = "1:e263726ba0d84e5ab1d9b96de99ab84249c83aea493c3dabfc652480189c8c7c" name = "github.com/fatih/camelcase" packages = ["."] + pruneopts = "UT" revision = "f6a740d52f961c60348ebb109adde9f4635d7540" [[projects]] + digest = "1:c45cef8e0074ea2f8176a051df38553ba997a3616f1ec2d35222b1cf9864881e" name = "github.com/ghodss/yaml" packages = ["."] + pruneopts = "UT" revision = "73d445a93680fa1a78ae23a5839bad48f32ba1ee" [[projects]] + digest = "1:172569c4bdc486213be0121e6039df4c272e9ff29397d9fd3716c31e4b37e15d" name = "github.com/go-openapi/jsonpointer" packages = ["."] + pruneopts = "UT" revision = "46af16f9f7b149af66e5d1bd010e3574dc06de98" [[projects]] + digest = "1:f30ccde775458301b306f4576e11de88d3ed0d91e68a5f3591c4ed8afbca76fa" name = "github.com/go-openapi/jsonreference" packages = ["."] + pruneopts = "UT" revision = "13c6e3589ad90f49bd3e3bbe2c2cb3d7a4142272" [[projects]] + digest = "1:ed3642d1497a543323f731039927aef565de45bafaffc97d138d7dc5bc14b5b5" name = "github.com/go-openapi/spec" packages = ["."] + pruneopts = "UT" revision = "1de3e0542de65ad8d75452a595886fdd0befb363" [[projects]] + digest = "1:3a42f9cbdeb4db3a14e0c3bb35852b7426b69f73386d52b606baf5d0fecfb4d7" name = "github.com/go-openapi/swag" packages = ["."] + pruneopts = "UT" revision = "f3f9494671f93fcff853e3c6e9e948b3eb71e590" [[projects]] + digest = "1:9ae31ce33b4bab257668963e844d98765b44160be4ee98cafc44637a213e530d" name = "github.com/gobwas/glob" packages = [ ".", @@ -197,66 +262,84 @@ "syntax/ast", "syntax/lexer", "util/runes", - "util/strings" + "util/strings", ] + pruneopts = "UT" revision = "5ccd90ef52e1e632236f7326478d4faa74f99438" version = "v0.2.3" [[projects]] + digest = "1:f83d740263b44fdeef3e1bce6147b5d7283fcad1a693d39639be33993ecf3db1" name = "github.com/gogo/protobuf" packages = [ "proto", - "sortkeys" + "sortkeys", ] + pruneopts = "UT" revision = "c0656edd0d9eab7c66d1eb0c568f9039345796f7" [[projects]] + digest = "1:2edd2416f89b4e841df0e4a78802ce14d2bc7ad79eba1a45986e39f0f8cb7d87" name = "github.com/golang/glog" packages = ["."] + pruneopts = "UT" revision = "44145f04b68cf362d9c4df2182967c2275eaefed" [[projects]] + digest = "1:7672c206322f45b33fac1ae2cb899263533ce0adcc6481d207725560208ec84e" name = "github.com/golang/groupcache" packages = ["lru"] + pruneopts = "UT" revision = "02826c3e79038b59d737d3b1c0a1d937f71a4433" [[projects]] + digest = "1:8f2df6167daef6f4d56d07f99bbcf4733117db0dedfd959995b9a679c52561f1" name = "github.com/golang/protobuf" packages = [ "proto", "ptypes", "ptypes/any", "ptypes/duration", - "ptypes/timestamp" + "ptypes/timestamp", ] + pruneopts = "UT" revision = "1643683e1b54a9e88ad26d98f81400c8c9d9f4f9" [[projects]] + digest = "1:62dfb39fe3bddeabb02cc001075ed9f951b044da2cd5b0f970ca798b1553bac3" name = "github.com/google/btree" packages = ["."] + pruneopts = "UT" revision = "7d79101e329e5a3adf994758c578dab82b90c017" [[projects]] + digest = "1:41bfd4219241b7f7d6e6fdb13fc712576f1337e68e6b895136283b76928fdd66" name = "github.com/google/gofuzz" packages = ["."] + pruneopts = "UT" revision = "44d81051d367757e1c7c6a5a86423ece9afcf63c" [[projects]] + digest = "1:8f8811f9be822914c3a25c6a071e93beb4c805d7b026cbf298bc577bc1cc945b" name = "github.com/google/uuid" packages = ["."] + pruneopts = "UT" revision = "064e2069ce9c359c118179501254f67d7d37ba24" version = "0.2" [[projects]] + digest = "1:75eb87381d25cc75212f52358df9c3a2719584eaa9685cd510ce28699122f39d" name = "github.com/googleapis/gnostic" packages = [ "OpenAPIv2", "compiler", - "extensions" + "extensions", ] + pruneopts = "UT" revision = "0c5108395e2debce0d731cf0287ddf7242066aba" [[projects]] + digest = "1:5c535c32658f994bae105a266379a40246a0aa8bfde5e78093a331f9a0b3cdb7" name = "github.com/gophercloud/gophercloud" packages = [ ".", @@ -265,205 +348,228 @@ "openstack/identity/v2/tokens", "openstack/identity/v3/tokens", "openstack/utils", - "pagination" + "pagination", ] + pruneopts = "UT" revision = "6da026c32e2d622cc242d32984259c77237aefe1" [[projects]] branch = "master" + digest = "1:4e08dc2383a46b3107f0b34ca338c4459e8fc8ee90e46a60e728aa8a2b21d558" name = "github.com/gosuri/uitable" packages = [ ".", "util/strutil", - "util/wordwrap" + "util/wordwrap", ] + pruneopts = "UT" revision = "36ee7e946282a3fb1cfecd476ddc9b35d8847e42" [[projects]] + digest = "1:878f0defa9b853f9acfaf4a162ba450a89d0050eff084f9fe7f5bd15948f172a" name = "github.com/gregjones/httpcache" packages = [ ".", - "diskcache" + "diskcache", ] + pruneopts = "UT" revision = "787624de3eb7bd915c329cba748687a3b22666a6" [[projects]] + digest = "1:3f90d23757c18b1e07bf11494dbe737ee2c44d881c0f41e681611abdadad62fa" name = "github.com/hashicorp/golang-lru" packages = [ ".", - "simplelru" + "simplelru", ] + pruneopts = "UT" revision = "a0d98a5f288019575c6d1f4bb1573fef2d1fcdc4" [[projects]] - branch = "master" - name = "github.com/howeyc/gopass" - packages = ["."] - revision = "bf9dde6d0d2c004a008c27aaee91170c786f6db8" - -[[projects]] + digest = "1:80544abec6a93301c477926d6ed12dffce5029ddb34101435d88277f98006844" name = "github.com/huandu/xstrings" packages = ["."] + pruneopts = "UT" revision = "3959339b333561bf62a38b424fd41517c2c90f40" [[projects]] + digest = "1:06ec9147400aabb0d6960dd8557638603b5f320cd4cb8a3eceaae407e782849a" name = "github.com/imdario/mergo" packages = ["."] + pruneopts = "UT" revision = "6633656539c1639d9d78127b7d47c622b5d7b6dc" [[projects]] + digest = "1:870d441fe217b8e689d7949fef6e43efbc787e50f200cb1e70dbca9204a1d6be" name = "github.com/inconshreveable/mousetrap" packages = ["."] + pruneopts = "UT" revision = "76626ae9c91c4f2a10f34cad8ce83ea42c93bb75" version = "v1.0" [[projects]] + digest = "1:bb3cc4c1b21ea18cfa4e3e47440fc74d316ab25b0cf42927e8c1274917bd9891" name = "github.com/json-iterator/go" packages = ["."] - revision = "13f86432b882000a51c6e610c620974462691a97" + pruneopts = "UT" + revision = "f2b4162afba35581b6d4a50d3b8f34e33c144682" [[projects]] + digest = "1:a867990aee2ebc1ac86614ed702bf1e63061a79eac12d4326203cb9084b61839" name = "github.com/mailru/easyjson" packages = [ "buffer", "jlexer", - "jwriter" + "jwriter", ] + pruneopts = "UT" revision = "2f5df55504ebc322e4d52d34df6a1f5b503bf26d" [[projects]] + digest = "1:1583473db99b1057f15e6acf80fee5848c055aad49614f56862690aadcb87694" name = "github.com/mattn/go-runewidth" packages = ["."] + pruneopts = "UT" revision = "d6bea18f789704b5f83375793155289da36a3c7f" version = "v0.0.1" [[projects]] + digest = "1:7efe48dea4db6b35dcc15e15394b627247e5b3fb814242de986b746ba8e0abf0" name = "github.com/mattn/go-shellwords" packages = ["."] + pruneopts = "UT" revision = "02e3cf038dcea8290e44424da473dd12be796a8a" version = "v1.0.3" -[[projects]] - name = "github.com/matttproud/golang_protobuf_extensions" - packages = ["pbutil"] - revision = "fc2b8d3a73c4867e51861bbdd5ae3c1f0869dd6a" - [[projects]] branch = "master" + digest = "1:e68cd472b96cdf7c9f6971ac41bcc1d4d3b23d67c2a31d2399446e295bc88ae9" name = "github.com/mitchellh/go-wordwrap" packages = ["."] + pruneopts = "UT" revision = "ad45545899c7b13c020ea92b2072220eefad42b8" [[projects]] + digest = "1:33422d238f147d247752996a26574ac48dcf472976eda7f5134015f06bf16563" + name = "github.com/modern-go/concurrent" + packages = ["."] + pruneopts = "UT" + revision = "bacd9c7ef1dd9b15be4a9909b8ac7a4e313eec94" + version = "1.0.3" + +[[projects]] + digest = "1:e32bdbdb7c377a07a9a46378290059822efdce5c8d96fe71940d87cb4f918855" + name = "github.com/modern-go/reflect2" + packages = ["."] + pruneopts = "UT" + revision = "4b7aa43c6742a2c18fdef89dd197aaae7dac7ccd" + version = "1.0.1" + +[[projects]] + digest = "1:37423212694a4316f48e0bbac8e4f1fd366a384a286fbaa7d80baf99d86f0416" name = "github.com/opencontainers/go-digest" packages = ["."] + pruneopts = "UT" revision = "a6d0ee40d4207ea02364bd3b9e8e77b9159ba1eb" [[projects]] + digest = "1:8e1d3df780654a0c2227b1a4d6f11bfb46d386237f31cc8b5ae8dfa13b55b4ee" name = "github.com/opencontainers/image-spec" packages = [ "specs-go", - "specs-go/v1" + "specs-go/v1", ] + pruneopts = "UT" revision = "372ad780f63454fbbbbcc7cf80e5b90245c13e13" -[[projects]] - name = "github.com/pborman/uuid" - packages = ["."] - revision = "ca53cad383cad2479bbba7f7a1a05797ec1386e4" - [[projects]] branch = "master" + digest = "1:3bf17a6e6eaa6ad24152148a631d18662f7212e21637c2699bff3369b7f00fa2" name = "github.com/petar/GoLLRB" packages = ["llrb"] + pruneopts = "UT" revision = "53be0d36a84c2a886ca057d34b6aa4468df9ccb4" [[projects]] + digest = "1:0e7775ebbcf00d8dd28ac663614af924411c868dca3d5aa762af0fae3808d852" name = "github.com/peterbourgon/diskv" packages = ["."] + pruneopts = "UT" revision = "5f041e8faa004a95c88a202771f4cc3e991971e6" version = "v2.0.1" [[projects]] + digest = "1:40e195917a951a8bf867cd05de2a46aaf1806c50cf92eebf4c16f78cd196f747" name = "github.com/pkg/errors" packages = ["."] + pruneopts = "UT" revision = "645ef00459ed84a119197bfb8d8205042c6df63d" version = "v0.8.0" [[projects]] + digest = "1:08413c4235cad94a96c39e1e2f697789733c4a87d1fdf06b412d2cf2ba49826a" name = "github.com/pmezard/go-difflib" packages = ["difflib"] + pruneopts = "UT" revision = "d8ed2627bdf02c080bf22230dbb337003b7aba2d" [[projects]] - name = "github.com/prometheus/client_golang" - packages = ["prometheus"] - revision = "e7e903064f5e9eb5da98208bae10b475d4db0f8c" - -[[projects]] - name = "github.com/prometheus/client_model" - packages = ["go"] - revision = "fa8ad6fec33561be4280a8f0514318c79d7f6cb6" - -[[projects]] - name = "github.com/prometheus/common" - packages = [ - "expfmt", - "internal/bitbucket.org/ww/goautoneg", - "model" - ] - revision = "13ba4ddd0caa9c28ca7b7bffe1dfa9ed8d5ef207" - -[[projects]] - name = "github.com/prometheus/procfs" - packages = [ - ".", - "xfs" - ] - revision = "65c1f6f8f0fc1e2185eb9863a3bc751496404259" - -[[projects]] + digest = "1:f78dee1142c1e43c9288534cadfa82f21dfd9a1163b06fa0fdf872f8020f2a53" name = "github.com/russross/blackfriday" packages = ["."] + pruneopts = "UT" revision = "300106c228d52c8941d4b3de6054a6062a86dda3" [[projects]] + digest = "1:166006f557f8035424fad136d1806d5c73229e82c670500dcbfba1a1160f5ddb" name = "github.com/shurcooL/sanitized_anchor_name" packages = ["."] + pruneopts = "UT" revision = "10ef21a441db47d8b13ebcc5fd2310f636973c77" [[projects]] + digest = "1:fb011abd58a582cf867409273f372fc6437eda670ff02055c47e6203e90466d7" name = "github.com/sirupsen/logrus" packages = ["."] + pruneopts = "UT" revision = "89742aefa4b206dcf400792f3bd35b542998eb3b" [[projects]] + digest = "1:f56a38901e3d06fb5c71219d4e5b48d546d845f776d6219097733ec27011dc60" name = "github.com/spf13/cobra" packages = [ ".", - "doc" + "doc", ] + pruneopts = "UT" revision = "a1f051bc3eba734da4772d60e2d677f47cf93ef4" version = "v0.0.2" [[projects]] + digest = "1:9424f440bba8f7508b69414634aef3b2b3a877e522d8a4624692412805407bb7" name = "github.com/spf13/pflag" packages = ["."] + pruneopts = "UT" revision = "583c0c0531f06d5278b7d917446061adc344b5cd" version = "v1.0.1" [[projects]] + digest = "1:ab5a3e72b1d94f9f7baa42963939a21ab5ab8e26976cd83ecf7da1a9cbbc7096" name = "github.com/stretchr/testify" packages = ["assert"] + pruneopts = "UT" revision = "e3a8ff8ce36581f87a15341206f205b1da467059" [[projects]] branch = "master" + digest = "1:9123998e9b4a6ed0fcf9cae137a6cd9e265a5d18823e34d1cd12e9d9845b2719" name = "github.com/technosophos/moniker" packages = ["."] + pruneopts = "UT" revision = "ab470f5e105a44d0c87ea21bacd6a335c4816d83" [[projects]] + digest = "1:9601e4354239b69f62c86d24c74a19d7c7e3c7f7d2d9f01d42e5830b4673e121" name = "golang.org/x/crypto" packages = [ "cast5", @@ -478,11 +584,13 @@ "openpgp/s2k", "pbkdf2", "scrypt", - "ssh/terminal" + "ssh/terminal", ] + pruneopts = "UT" revision = "81e90905daefcd6fd217b62423c0908922eadb30" [[projects]] + digest = "1:1e853578c8a3c5d54c1b54a4821075393b032110170107295f75442f8b41720c" name = "golang.org/x/net" packages = [ "context", @@ -490,30 +598,36 @@ "http2", "http2/hpack", "idna", - "lex/httplex" + "lex/httplex", ] + pruneopts = "UT" revision = "1c05540f6879653db88113bc4a2b70aec4bd491f" [[projects]] + digest = "1:ad764db92ed977f803ff0f59a7a957bf65cc4e8ae9dfd08228e1f54ea40392e0" name = "golang.org/x/oauth2" packages = [ ".", "google", "internal", "jws", - "jwt" + "jwt", ] + pruneopts = "UT" revision = "a6bd8cefa1811bd24b86f8902872e4e8225f74c4" [[projects]] + digest = "1:4ee37ffda2d3e007c5215ad02b56b845f20ea479ee69faa4120e8a767efcc757" name = "golang.org/x/sys" packages = [ "unix", - "windows" + "windows", ] + pruneopts = "UT" revision = "43eea11bc92608addb41b8a406b0407495c106f6" [[projects]] + digest = "1:16cd7c873369dc2c42155cad1bc9ea83409e52e3b68f185a3084fb6b84007465" name = "golang.org/x/text" packages = [ "cases", @@ -536,16 +650,20 @@ "unicode/cldr", "unicode/norm", "unicode/rangetable", - "width" + "width", ] + pruneopts = "UT" revision = "b19bf474d317b857955b12035d2c5acb57ce8b01" [[projects]] + digest = "1:d37b0ef2944431fe9e8ef35c6fffc8990d9e2ca300588df94a6890f3649ae365" name = "golang.org/x/time" packages = ["rate"] + pruneopts = "UT" revision = "f51c12702a4d776e4c1fa9b0fabab841babae631" [[projects]] + digest = "1:da33412a421eff87565c54a3223d9aeaf87ec3fc7344fc291cadd9c74113de46" name = "google.golang.org/appengine" packages = [ ".", @@ -557,34 +675,42 @@ "internal/modules", "internal/remote_api", "internal/urlfetch", - "urlfetch" + "urlfetch", ] + pruneopts = "UT" revision = "12d5545dc1cfa6047a286d5e853841b6471f4c19" [[projects]] + digest = "1:ef72505cf098abdd34efeea032103377bec06abb61d8a06f002d5d296a4b1185" name = "gopkg.in/inf.v0" packages = ["."] + pruneopts = "UT" revision = "3887ee99ecf07df5b447e9b00d9c0b2adaa9f3e4" version = "v0.9.0" [[projects]] + digest = "1:c45031ba03b85fc3b219c46b540996b793d1c5244ae4d7046314b8d09526c2a5" name = "gopkg.in/square/go-jose.v2" packages = [ ".", "cipher", "json", - "jwt" + "jwt", ] + pruneopts = "UT" revision = "f8f38de21b4dcd69d0413faf231983f5fd6634b1" version = "v2.1.3" [[projects]] + digest = "1:c27797c5f42d349e2a604510822df7d037415aae58bf1e6fd35624eda757c0aa" name = "gopkg.in/yaml.v2" packages = ["."] + pruneopts = "UT" revision = "53feefa2559fb8dfa8d81baad31be332c97d6c77" [[projects]] - branch = "release-1.10" + branch = "release-1.11" + digest = "1:fcc8693dcd553f6a9dfe94487fa66443a166405e4c4cce87d50bbad58c0812ce" name = "k8s.io/api" packages = [ "admission/v1beta1", @@ -613,33 +739,37 @@ "rbac/v1alpha1", "rbac/v1beta1", "scheduling/v1alpha1", + "scheduling/v1beta1", "settings/v1alpha1", "storage/v1", "storage/v1alpha1", - "storage/v1beta1" + "storage/v1beta1", ] - revision = "c699ec51538f0cfd4afa8bfcfe1e0779cafbe666" + pruneopts = "UT" + revision = "61b11ee6533278ae17d77fd36825d0b47ec3a293" [[projects]] + digest = "1:b46a162d7c7e9117ae2dd9a73ee4dc2181ad9ea9d505fd7c5eb63c96211dc9dd" name = "k8s.io/apiextensions-apiserver" packages = ["pkg/features"] + pruneopts = "UT" revision = "898b0eda132e1aeac43a459785144ee4bf9b0a2e" [[projects]] - branch = "release-1.10" + branch = "release-1.11" + digest = "1:5fb786469c205f315aea2e894c4bb4532570d5d7f63e1024abd274034c19547e" name = "k8s.io/apimachinery" packages = [ "pkg/api/equality", "pkg/api/errors", "pkg/api/meta", + "pkg/api/meta/testrestmapper", "pkg/api/resource", "pkg/api/validation", - "pkg/apimachinery", - "pkg/apimachinery/announced", - "pkg/apimachinery/registered", "pkg/apis/meta/internalversion", "pkg/apis/meta/v1", "pkg/apis/meta/v1/unstructured", + "pkg/apis/meta/v1/unstructured/unstructuredscheme", "pkg/apis/meta/v1/validation", "pkg/apis/meta/v1beta1", "pkg/conversion", @@ -673,7 +803,6 @@ "pkg/util/runtime", "pkg/util/sets", "pkg/util/strategicpatch", - "pkg/util/uuid", "pkg/util/validation", "pkg/util/validation/field", "pkg/util/wait", @@ -682,12 +811,14 @@ "pkg/watch", "third_party/forked/golang/json", "third_party/forked/golang/netutil", - "third_party/forked/golang/reflect" + "third_party/forked/golang/reflect", ] - revision = "54101a56dda9a0962bc48751c058eb4c546dcbb9" + pruneopts = "UT" + revision = "488889b0007f63ffee90b66a34a2deca9ec58774" [[projects]] branch = "release-1.10" + digest = "1:dde6031988d993fc4f0a4d13eded2b665d6c1dbfbea27e700a078a388d4a2593" name = "k8s.io/apiserver" packages = [ "pkg/apis/audit", @@ -697,56 +828,18 @@ "pkg/endpoints/request", "pkg/features", "pkg/util/feature", - "pkg/util/flag" ] + pruneopts = "UT" revision = "ea53f8588c655568158b4ff53f5ec6fa4ebfc332" [[projects]] + digest = "1:5acb90c7f7c2070b74fb6d693f0ce15909039ecf65d8a663591caaddf5842ecd" name = "k8s.io/client-go" packages = [ "discovery", "discovery/fake", "dynamic", - "informers", - "informers/admissionregistration", - "informers/admissionregistration/v1alpha1", - "informers/admissionregistration/v1beta1", - "informers/apps", - "informers/apps/v1", - "informers/apps/v1beta1", - "informers/apps/v1beta2", - "informers/autoscaling", - "informers/autoscaling/v1", - "informers/autoscaling/v2beta1", - "informers/batch", - "informers/batch/v1", - "informers/batch/v1beta1", - "informers/batch/v2alpha1", - "informers/certificates", - "informers/certificates/v1beta1", - "informers/core", - "informers/core/v1", - "informers/events", - "informers/events/v1beta1", - "informers/extensions", - "informers/extensions/v1beta1", - "informers/internalinterfaces", - "informers/networking", - "informers/networking/v1", - "informers/policy", - "informers/policy/v1beta1", - "informers/rbac", - "informers/rbac/v1", - "informers/rbac/v1alpha1", - "informers/rbac/v1beta1", - "informers/scheduling", - "informers/scheduling/v1alpha1", - "informers/settings", - "informers/settings/v1alpha1", - "informers/storage", - "informers/storage/v1", - "informers/storage/v1alpha1", - "informers/storage/v1beta1", + "dynamic/fake", "kubernetes", "kubernetes/fake", "kubernetes/scheme", @@ -798,6 +891,8 @@ "kubernetes/typed/rbac/v1beta1/fake", "kubernetes/typed/scheduling/v1alpha1", "kubernetes/typed/scheduling/v1alpha1/fake", + "kubernetes/typed/scheduling/v1beta1", + "kubernetes/typed/scheduling/v1beta1/fake", "kubernetes/typed/settings/v1alpha1", "kubernetes/typed/settings/v1alpha1/fake", "kubernetes/typed/storage/v1", @@ -806,32 +901,11 @@ "kubernetes/typed/storage/v1alpha1/fake", "kubernetes/typed/storage/v1beta1", "kubernetes/typed/storage/v1beta1/fake", - "listers/admissionregistration/v1alpha1", - "listers/admissionregistration/v1beta1", "listers/apps/v1", - "listers/apps/v1beta1", - "listers/apps/v1beta2", - "listers/autoscaling/v1", - "listers/autoscaling/v2beta1", - "listers/batch/v1", - "listers/batch/v1beta1", - "listers/batch/v2alpha1", - "listers/certificates/v1beta1", "listers/core/v1", - "listers/events/v1beta1", - "listers/extensions/v1beta1", - "listers/networking/v1", - "listers/policy/v1beta1", - "listers/rbac/v1", - "listers/rbac/v1alpha1", - "listers/rbac/v1beta1", - "listers/scheduling/v1alpha1", - "listers/settings/v1alpha1", - "listers/storage/v1", - "listers/storage/v1alpha1", - "listers/storage/v1beta1", "pkg/apis/clientauthentication", "pkg/apis/clientauthentication/v1alpha1", + "pkg/apis/clientauthentication/v1beta1", "pkg/version", "plugin/pkg/client/auth", "plugin/pkg/client/auth/azure", @@ -842,6 +916,7 @@ "rest", "rest/fake", "rest/watch", + "restmapper", "scale", "scale/scheme", "scale/scheme/appsint", @@ -867,27 +942,32 @@ "transport/spdy", "util/buffer", "util/cert", + "util/connrotation", "util/exec", "util/flowcontrol", "util/homedir", "util/integer", "util/jsonpath", "util/retry", - "util/workqueue" ] - revision = "23781f4d6632d88e869066eaebb743857aa1ef9b" - version = "kubernetes-1.10.0" + pruneopts = "UT" + revision = "1f13a808da65775f22cbf47862c4e5898d8f4ca1" + version = "kubernetes-1.11.2" [[projects]] + digest = "1:8a5fb6a585e27c0339096c0db745795940a7e72a7925e7c4cf40b76bd113d382" name = "k8s.io/kube-openapi" packages = [ "pkg/util/proto", - "pkg/util/proto/validation" + "pkg/util/proto/testing", + "pkg/util/proto/validation", ] + pruneopts = "UT" revision = "50ae88d24ede7b8bad68e23c805b5d3da5c8abaf" [[projects]] - branch = "release-1.10" + branch = "release-1.11" + digest = "1:0b8f7f69212ed74043de94c089008d6c3d58c53e4d08a13abec73419339d4180" name = "k8s.io/kubernetes" packages = [ "pkg/api/events", @@ -940,7 +1020,6 @@ "pkg/apis/core/pods", "pkg/apis/core/v1", "pkg/apis/core/v1/helper", - "pkg/apis/core/v1/helper/qos", "pkg/apis/core/validation", "pkg/apis/events", "pkg/apis/events/install", @@ -965,6 +1044,7 @@ "pkg/apis/scheduling", "pkg/apis/scheduling/install", "pkg/apis/scheduling/v1alpha1", + "pkg/apis/scheduling/v1beta1", "pkg/apis/settings", "pkg/apis/settings/install", "pkg/apis/settings/v1alpha1", @@ -993,36 +1073,30 @@ "pkg/client/clientset_generated/internalclientset/typed/scheduling/internalversion", "pkg/client/clientset_generated/internalclientset/typed/settings/internalversion", "pkg/client/clientset_generated/internalclientset/typed/storage/internalversion", - "pkg/cloudprovider", "pkg/controller", - "pkg/controller/daemon", - "pkg/controller/daemon/util", "pkg/controller/deployment/util", - "pkg/controller/history", - "pkg/controller/statefulset", - "pkg/controller/volume/events", - "pkg/controller/volume/persistentvolume", - "pkg/controller/volume/persistentvolume/metrics", "pkg/credentialprovider", "pkg/features", "pkg/fieldpath", + "pkg/generated", "pkg/kubectl", "pkg/kubectl/apps", - "pkg/kubectl/categories", + "pkg/kubectl/cmd/get", "pkg/kubectl/cmd/templates", "pkg/kubectl/cmd/testing", "pkg/kubectl/cmd/util", "pkg/kubectl/cmd/util/openapi", "pkg/kubectl/cmd/util/openapi/testing", "pkg/kubectl/cmd/util/openapi/validation", - "pkg/kubectl/plugins", - "pkg/kubectl/resource", + "pkg/kubectl/genericclioptions", + "pkg/kubectl/genericclioptions/printers", + "pkg/kubectl/genericclioptions/resource", "pkg/kubectl/scheme", "pkg/kubectl/util", "pkg/kubectl/util/hash", + "pkg/kubectl/util/i18n", "pkg/kubectl/util/slice", "pkg/kubectl/util/term", - "pkg/kubectl/util/transport", "pkg/kubectl/validation", "pkg/kubelet/apis", "pkg/kubelet/types", @@ -1031,52 +1105,109 @@ "pkg/printers/internalversion", "pkg/registry/rbac/validation", "pkg/scheduler/algorithm", - "pkg/scheduler/algorithm/predicates", "pkg/scheduler/algorithm/priorities/util", "pkg/scheduler/api", - "pkg/scheduler/schedulercache", + "pkg/scheduler/cache", "pkg/scheduler/util", - "pkg/scheduler/volumebinder", "pkg/security/apparmor", "pkg/serviceaccount", "pkg/util/file", - "pkg/util/goroutinemap", - "pkg/util/goroutinemap/exponentialbackoff", "pkg/util/hash", "pkg/util/interrupt", - "pkg/util/io", "pkg/util/labels", - "pkg/util/metrics", - "pkg/util/mount", "pkg/util/net/sets", "pkg/util/node", - "pkg/util/nsenter", "pkg/util/parsers", "pkg/util/pointer", "pkg/util/slice", "pkg/util/taints", "pkg/version", - "pkg/volume", - "pkg/volume/util", - "pkg/volume/util/fs", - "pkg/volume/util/recyclerclient", - "pkg/volume/util/types" ] - revision = "a7685bbc127ba77463c89e363c5cec0d94a5f485" + pruneopts = "UT" + revision = "6c8b476f24edb0abfb143e87238045d1d9aa73e6" [[projects]] + digest = "1:5271b4ee2724d8c2ad7df650a5f9db46d01ce558769469713feba0e3e6079292" name = "k8s.io/utils" packages = ["exec"] + pruneopts = "UT" revision = "aedf551cdb8b0119df3a19c65fde413a13b34997" [[projects]] + digest = "1:96f9b7c99c55e6063371088376d57d398f42888dedd08ab5d35065aba11e3965" name = "vbom.ml/util" packages = ["sortorder"] + pruneopts = "UT" revision = "db5cfe13f5cc80a4990d98e2e1b0707a4d1a5394" [solve-meta] analyzer-name = "dep" analyzer-version = 1 - inputs-digest = "4a0464d8de132c8a733f50549ad69e663b992e12537b58626302dc5dd14cd3f0" + input-imports = [ + "github.com/BurntSushi/toml", + "github.com/Masterminds/semver", + "github.com/Masterminds/sprig", + "github.com/Masterminds/vcs", + "github.com/asaskevich/govalidator", + "github.com/evanphx/json-patch", + "github.com/ghodss/yaml", + "github.com/gobwas/glob", + "github.com/gosuri/uitable", + "github.com/gosuri/uitable/util/strutil", + "github.com/mattn/go-shellwords", + "github.com/pkg/errors", + "github.com/spf13/cobra", + "github.com/spf13/cobra/doc", + "github.com/spf13/pflag", + "github.com/stretchr/testify/assert", + "github.com/technosophos/moniker", + "golang.org/x/crypto/openpgp", + "golang.org/x/crypto/openpgp/clearsign", + "golang.org/x/crypto/openpgp/errors", + "golang.org/x/crypto/openpgp/packet", + "golang.org/x/crypto/ssh/terminal", + "gopkg.in/yaml.v2", + "k8s.io/api/apps/v1", + "k8s.io/api/apps/v1beta1", + "k8s.io/api/apps/v1beta2", + "k8s.io/api/batch/v1", + "k8s.io/api/core/v1", + "k8s.io/api/extensions/v1beta1", + "k8s.io/apimachinery/pkg/api/equality", + "k8s.io/apimachinery/pkg/api/errors", + "k8s.io/apimachinery/pkg/api/meta", + "k8s.io/apimachinery/pkg/apis/meta/v1", + "k8s.io/apimachinery/pkg/fields", + "k8s.io/apimachinery/pkg/labels", + "k8s.io/apimachinery/pkg/runtime", + "k8s.io/apimachinery/pkg/runtime/schema", + "k8s.io/apimachinery/pkg/types", + "k8s.io/apimachinery/pkg/util/strategicpatch", + "k8s.io/apimachinery/pkg/util/validation", + "k8s.io/apimachinery/pkg/util/wait", + "k8s.io/apimachinery/pkg/version", + "k8s.io/apimachinery/pkg/watch", + "k8s.io/client-go/discovery", + "k8s.io/client-go/kubernetes", + "k8s.io/client-go/kubernetes/fake", + "k8s.io/client-go/kubernetes/typed/core/v1", + "k8s.io/client-go/plugin/pkg/client/auth", + "k8s.io/client-go/rest/fake", + "k8s.io/client-go/util/homedir", + "k8s.io/kubernetes/pkg/api/legacyscheme", + "k8s.io/kubernetes/pkg/api/testapi", + "k8s.io/kubernetes/pkg/api/v1/pod", + "k8s.io/kubernetes/pkg/apis/batch", + "k8s.io/kubernetes/pkg/apis/core", + "k8s.io/kubernetes/pkg/apis/core/v1/helper", + "k8s.io/kubernetes/pkg/controller/deployment/util", + "k8s.io/kubernetes/pkg/kubectl/cmd/get", + "k8s.io/kubernetes/pkg/kubectl/cmd/testing", + "k8s.io/kubernetes/pkg/kubectl/cmd/util", + "k8s.io/kubernetes/pkg/kubectl/genericclioptions", + "k8s.io/kubernetes/pkg/kubectl/genericclioptions/resource", + "k8s.io/kubernetes/pkg/kubectl/scheme", + "k8s.io/kubernetes/pkg/kubectl/validation", + ] solver-name = "gps-cdcl" solver-version = 1 diff --git a/Gopkg.toml b/Gopkg.toml index 83096a814..effd828fa 100644 --- a/Gopkg.toml +++ b/Gopkg.toml @@ -33,19 +33,27 @@ [[constraint]] name = "k8s.io/api" - branch = "release-1.10" + branch = "release-1.11" [[constraint]] name = "k8s.io/apimachinery" - branch = "release-1.10" + branch = "release-1.11" [[constraint]] - version = "kubernetes-1.10.0" + version = "kubernetes-1.11.2" name = "k8s.io/client-go" [[constraint]] name = "k8s.io/kubernetes" - branch = "release-1.10" + branch = "release-1.11" + +[[override]] + name = "github.com/json-iterator/go" + revision = "f2b4162afba35581b6d4a50d3b8f34e33c144682" + +[[override]] + name = "github.com/Azure/go-autorest" + revision = "1ff28809256a84bb6966640ff3d0371af82ccba4" [prune] go-tests = true diff --git a/cmd/helm/helm.go b/cmd/helm/helm.go index 390aa328a..762aad444 100644 --- a/cmd/helm/helm.go +++ b/cmd/helm/helm.go @@ -24,7 +24,7 @@ import ( // Import to initialize client auth plugins. _ "k8s.io/client-go/plugin/pkg/client/auth" - "k8s.io/client-go/tools/clientcmd" + "k8s.io/kubernetes/pkg/kubectl/genericclioptions" "k8s.io/helm/pkg/helm" "k8s.io/helm/pkg/helm/environment" @@ -34,7 +34,7 @@ import ( var ( settings environment.EnvSettings - config clientcmd.ClientConfig + config genericclioptions.RESTClientGetter configOnce sync.Once ) @@ -89,7 +89,7 @@ func newClient(allNamespaces bool) helm.Interface { ) } -func kubeConfig() clientcmd.ClientConfig { +func kubeConfig() genericclioptions.RESTClientGetter { configOnce.Do(func() { config = kube.GetConfig(settings.KubeConfig, settings.KubeContext, settings.Namespace) }) @@ -97,7 +97,7 @@ func kubeConfig() clientcmd.ClientConfig { } func getNamespace() string { - if ns, _, err := kubeConfig().Namespace(); err == nil { + if ns, _, err := kubeConfig().ToRawKubeConfigLoader().Namespace(); err == nil { return ns } return "default" diff --git a/pkg/kube/client.go b/pkg/kube/client.go index bf530408e..1dd366b2d 100644 --- a/pkg/kube/client.go +++ b/pkg/kube/client.go @@ -43,14 +43,14 @@ import ( "k8s.io/apimachinery/pkg/types" "k8s.io/apimachinery/pkg/util/strategicpatch" "k8s.io/apimachinery/pkg/watch" - "k8s.io/client-go/tools/clientcmd" + "k8s.io/kubernetes/pkg/api/legacyscheme" batchinternal "k8s.io/kubernetes/pkg/apis/batch" "k8s.io/kubernetes/pkg/apis/core" - "k8s.io/kubernetes/pkg/kubectl" + "k8s.io/kubernetes/pkg/kubectl/cmd/get" cmdutil "k8s.io/kubernetes/pkg/kubectl/cmd/util" - "k8s.io/kubernetes/pkg/kubectl/resource" + "k8s.io/kubernetes/pkg/kubectl/genericclioptions" + "k8s.io/kubernetes/pkg/kubectl/genericclioptions/resource" "k8s.io/kubernetes/pkg/kubectl/validation" - "k8s.io/kubernetes/pkg/printers" ) const ( @@ -68,9 +68,12 @@ type Client struct { } // New creates a new Client. -func New(config clientcmd.ClientConfig) *Client { +func New(getter genericclioptions.RESTClientGetter) *Client { + if getter == nil { + getter = genericclioptions.NewConfigFlags() + } return &Client{ - Factory: cmdutil.NewFactory(config), + Factory: cmdutil.NewFactory(getter), Log: nopLogger, } } @@ -100,7 +103,7 @@ func (c *Client) Create(namespace string, reader io.Reader, timeout int64, shoul } func (c *Client) namespace() string { - if ns, _, err := c.DefaultNamespace(); err == nil { + if ns, _, err := c.ToRawKubeConfigLoader().Namespace(); err == nil { return ns } return v1.NamespaceDefault @@ -108,8 +111,8 @@ func (c *Client) namespace() string { func (c *Client) newBuilder(namespace string, reader io.Reader) *resource.Result { return c.NewBuilder(). - Internal(). ContinueOnError(). + WithScheme(legacyscheme.Scheme). Schema(c.validator()). NamespaceParam(c.namespace()). DefaultNamespace(). @@ -177,7 +180,7 @@ func (c *Client) Get(namespace string, reader io.Reader) (string, error) { // versions per cluster, but this certainly won't hurt anything, so let's be safe. gvk := info.ResourceMapping().GroupVersionKind vk := gvk.Version + "/" + gvk.Kind - objs[vk] = append(objs[vk], info.AsInternal()) + objs[vk] = append(objs[vk], asVersioned(info)) //Get the relation pods objPods, err = c.getSelectRelationPod(info, objPods) @@ -203,10 +206,7 @@ func (c *Client) Get(namespace string, reader io.Reader) (string, error) { // an object type changes, so we can just rely on that. Problem is it doesn't seem to keep // track of tab widths. buf := new(bytes.Buffer) - p, err := cmdutil.PrinterForOptions(&printers.PrintOptions{}) - if err != nil { - return "", err - } + p, _ := get.NewHumanPrintFlags().ToPrinter("") for t, ot := range objs { if _, err = buf.WriteString("==> " + t + "\n"); err != nil { return "", err @@ -294,7 +294,7 @@ func (c *Client) Update(namespace string, originalReader, targetReader io.Reader for _, info := range original.Difference(target) { c.Log("Deleting %q in %s...", info.Name, info.Namespace) - if err := deleteResource(c, info); err != nil { + if err := deleteResource(info); err != nil { c.Log("Failed to delete %q, err: %s", info.Name, err) } } @@ -314,7 +314,7 @@ func (c *Client) Delete(namespace string, reader io.Reader) error { } return perform(infos, func(info *resource.Info) error { c.Log("Starting delete for %q %s", info.Name, info.Mapping.GroupVersionKind.Kind) - err := deleteResource(c, info) + err := deleteResource(info) return c.skipIfNotFound(err) }) } @@ -376,17 +376,11 @@ func createResource(info *resource.Info) error { return info.Refresh(obj, true) } -func deleteResource(c *Client, info *resource.Info) error { - reaper, err := c.Reaper(info.Mapping) - if err != nil { - // If there is no reaper for this resources, delete it. - if kubectl.IsNoSuchReaperError(err) { - return resource.NewHelper(info.Client, info.Mapping).Delete(info.Namespace, info.Name) - } - return err - } - c.Log("Using reaper for deleting %q", info.Name) - return reaper.Stop(info.Namespace, info.Name, 0, nil) +func deleteResource(info *resource.Info) error { + policy := metav1.DeletePropagationBackground + opts := &metav1.DeleteOptions{PropagationPolicy: &policy} + _, err := resource.NewHelper(info.Client, info.Mapping).DeleteWithOptions(info.Namespace, info.Name, opts) + return err } func createPatch(target *resource.Info, current runtime.Object) ([]byte, types.PatchType, error) { @@ -408,7 +402,7 @@ func createPatch(target *resource.Info, current runtime.Object) ([]byte, types.P } // Get a versioned object - versionedObject, err := target.Versioned() + versionedObject := asVersioned(target) // Unstructured objects, such as CRDs, may not have an not registered error // returned from ConvertToVersion. Anything that's unstructured should @@ -452,7 +446,7 @@ func updateResource(c *Client, target *resource.Info, currentObj runtime.Object, if force { // Attempt to delete... - if err := deleteResource(c, target); err != nil { + if err := deleteResource(target); err != nil { return err } log.Printf("Deleted %s: %q", kind, target.Name) @@ -480,14 +474,7 @@ func updateResource(c *Client, target *resource.Info, currentObj runtime.Object, return nil } - versioned, err := target.Versioned() - if runtime.IsNotRegisteredError(err) { - return nil - } - if err != nil { - return err - } - + versioned := asVersioned(target) selector, err := getSelectorFromObject(versioned) if err != nil { return nil @@ -695,13 +682,7 @@ func (c *Client) getSelectRelationPod(info *resource.Info, objPods map[string][] c.Log("get relation pod of object: %s/%s/%s", info.Namespace, info.Mapping.GroupVersionKind.Kind, info.Name) - versioned, err := info.Versioned() - if runtime.IsNotRegisteredError(err) { - return objPods, nil - } - if err != nil { - return objPods, err - } + versioned := asVersioned(info) // We can ignore this error because it will only error if it isn't a type that doesn't // have pods. In that case, we don't care @@ -749,3 +730,7 @@ func isFoundPod(podItem []core.Pod, pod core.Pod) bool { } return false } + +func asVersioned(info *resource.Info) runtime.Object { + return cmdutil.AsDefaultVersionedOrOriginal(info.Object, info.Mapping) +} diff --git a/pkg/kube/client_test.go b/pkg/kube/client_test.go index 97dcd3b90..b0cc5cde6 100644 --- a/pkg/kube/client_test.go +++ b/pkg/kube/client_test.go @@ -23,25 +23,20 @@ import ( "net/http" "strings" "testing" - "time" - "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/client-go/dynamic" "k8s.io/client-go/rest/fake" "k8s.io/kubernetes/pkg/api/legacyscheme" "k8s.io/kubernetes/pkg/api/testapi" "k8s.io/kubernetes/pkg/apis/core" - "k8s.io/kubernetes/pkg/kubectl" cmdtesting "k8s.io/kubernetes/pkg/kubectl/cmd/testing" - cmdutil "k8s.io/kubernetes/pkg/kubectl/cmd/util" - "k8s.io/kubernetes/pkg/kubectl/resource" + "k8s.io/kubernetes/pkg/kubectl/genericclioptions/resource" "k8s.io/kubernetes/pkg/kubectl/scheme" ) -var unstructuredSerializer = dynamic.ContentConfig().NegotiatedSerializer +var unstructuredSerializer = resource.UnstructuredPlusDefaultContentConfig().NegotiatedSerializer func objBody(codec runtime.Codec, obj runtime.Object) io.ReadCloser { return ioutil.NopCloser(bytes.NewReader([]byte(runtime.EncodeOrDie(codec, obj)))) @@ -98,24 +93,6 @@ func newResponse(code int, obj runtime.Object) (*http.Response, error) { return &http.Response{StatusCode: code, Header: header, Body: body}, nil } -type fakeReaper struct { - name string -} - -func (r *fakeReaper) Stop(namespace, name string, timeout time.Duration, gracePeriod *metav1.DeleteOptions) error { - r.name = name - return nil -} - -type fakeReaperFactory struct { - cmdutil.Factory - reaper kubectl.Reaper -} - -func (f *fakeReaperFactory) Reaper(mapping *meta.RESTMapping) (kubectl.Reaper, error) { - return f.reaper, nil -} - type testClient struct { *Client *cmdtesting.TestFactory @@ -123,8 +100,6 @@ type testClient struct { func newTestClient() *testClient { tf := cmdtesting.NewTestFactory() - tf.Namespace = core.NamespaceDefault - c := &Client{Factory: tf, Log: nopLogger} return &testClient{Client: c, TestFactory: tf} } @@ -141,7 +116,6 @@ func TestUpdate(t *testing.T) { tf := cmdtesting.NewTestFactory() defer tf.Cleanup() tf.UnstructuredClient = &fake.RESTClient{ - GroupVersion: schema.GroupVersion{Version: "v1"}, NegotiatedSerializer: unstructuredSerializer, Client: fake.CreateHTTPClient(func(req *http.Request) (*http.Response, error) { p, m := req.URL.Path, req.Method @@ -176,12 +150,11 @@ func TestUpdate(t *testing.T) { }), } - c := newTestClient() - tf.Namespace = core.NamespaceDefault - reaper := &fakeReaper{} - rf := &fakeReaperFactory{Factory: tf, reaper: reaper} - c.Client.Factory = rf - codec := legacyscheme.Codecs.LegacyCodec(scheme.Versions...) + c := &Client{ + Factory: tf, + Log: nopLogger, + } + codec := legacyscheme.Codecs.LegacyCodec(scheme.Scheme.PrioritizedVersionsAllGroups()...) if err := c.Update(core.NamespaceDefault, objBody(codec, &listA), objBody(codec, &listB), false, false, 0, false); err != nil { t.Fatal(err) } @@ -202,6 +175,7 @@ func TestUpdate(t *testing.T) { "/namespaces/default/pods/otter:GET", "/namespaces/default/pods/dolphin:GET", "/namespaces/default/pods:POST", + "/namespaces/default/pods/squid:DELETE", } if len(expectedActions) != len(actions) { t.Errorf("unexpected number of requests, expected %d, got %d", len(expectedActions), len(actions)) @@ -212,11 +186,6 @@ func TestUpdate(t *testing.T) { t.Errorf("expected %s request got %s", v, actions[k]) } } - - if reaper.name != "squid" { - t.Errorf("unexpected reaper: %#v", reaper) - } - } func TestBuild(t *testing.T) { diff --git a/pkg/kube/config.go b/pkg/kube/config.go index 5038f49c4..a4abed520 100644 --- a/pkg/kube/config.go +++ b/pkg/kube/config.go @@ -16,17 +16,15 @@ limitations under the License. package kube // import "k8s.io/helm/pkg/kube" -import "k8s.io/client-go/tools/clientcmd" +import ( + "k8s.io/kubernetes/pkg/kubectl/genericclioptions" +) // GetConfig returns a Kubernetes client config. -func GetConfig(kubeconfig, context, namespace string) clientcmd.ClientConfig { - rules := clientcmd.NewDefaultClientConfigLoadingRules() - rules.DefaultClientConfig = &clientcmd.DefaultClientConfig - rules.ExplicitPath = kubeconfig - - overrides := &clientcmd.ConfigOverrides{ClusterDefaults: clientcmd.ClusterDefaults} - overrides.CurrentContext = context - overrides.Context.Namespace = namespace - - return clientcmd.NewNonInteractiveDeferredLoadingClientConfig(rules, overrides) +func GetConfig(kubeconfig, context, namespace string) *genericclioptions.ConfigFlags { + cf := genericclioptions.NewConfigFlags() + cf.Namespace = &namespace + cf.Context = &context + cf.KubeConfig = &kubeconfig + return cf } diff --git a/pkg/kube/result.go b/pkg/kube/result.go index 87c7e6ac1..f970e06ee 100644 --- a/pkg/kube/result.go +++ b/pkg/kube/result.go @@ -16,7 +16,7 @@ limitations under the License. package kube // import "k8s.io/helm/pkg/kube" -import "k8s.io/kubernetes/pkg/kubectl/resource" +import "k8s.io/kubernetes/pkg/kubectl/genericclioptions/resource" // Result provides convenience methods for comparing collections of Infos. type Result []*resource.Info diff --git a/pkg/kube/result_test.go b/pkg/kube/result_test.go index 962e90426..ed7a409f8 100644 --- a/pkg/kube/result_test.go +++ b/pkg/kube/result_test.go @@ -19,15 +19,14 @@ package kube // import "k8s.io/helm/pkg/kube" import ( "testing" + "k8s.io/apimachinery/pkg/api/meta" "k8s.io/apimachinery/pkg/runtime/schema" - "k8s.io/kubernetes/pkg/api/testapi" - "k8s.io/kubernetes/pkg/kubectl/resource" + "k8s.io/kubernetes/pkg/kubectl/genericclioptions/resource" ) func TestResult(t *testing.T) { - mapping, err := testapi.Default.RESTMapper().RESTMapping(schema.GroupKind{Kind: "Pod"}) - if err != nil { - t.Fatal(err) + mapping := &meta.RESTMapping{ + Resource: schema.GroupVersionResource{Group: "group", Version: "version", Resource: "pod"}, } info := func(name string) *resource.Info { diff --git a/pkg/kube/wait.go b/pkg/kube/wait.go index 88f3c7d34..3b8803b54 100644 --- a/pkg/kube/wait.go +++ b/pkg/kube/wait.go @@ -27,7 +27,6 @@ import ( metav1 "k8s.io/apimachinery/pkg/apis/meta/v1" "k8s.io/apimachinery/pkg/fields" "k8s.io/apimachinery/pkg/labels" - "k8s.io/apimachinery/pkg/runtime" "k8s.io/apimachinery/pkg/util/wait" "k8s.io/client-go/kubernetes" podutil "k8s.io/kubernetes/pkg/api/v1/pod" @@ -37,8 +36,8 @@ import ( // deployment holds associated replicaSets for a deployment type deployment struct { - replicaSets *extensions.ReplicaSet - deployment *extensions.Deployment + replicaSets *appsv1.ReplicaSet + deployment *appsv1.Deployment } // waitForResources polls to get the current status of all pods, PVCs, and Services @@ -56,11 +55,7 @@ func (c *Client) waitForResources(timeout time.Duration, created Result) error { pvc := []v1.PersistentVolumeClaim{} deployments := []deployment{} for _, v := range created { - obj, err := v.Versioned() - if err != nil && !runtime.IsNotRegisteredError(err) { - return false, err - } - switch value := obj.(type) { + switch value := asVersioned(v).(type) { case *v1.ReplicationController: list, err := getPods(kcs, value.Namespace, value.Spec.Selector) if err != nil { @@ -74,12 +69,12 @@ func (c *Client) waitForResources(timeout time.Duration, created Result) error { } pods = append(pods, *pod) case *appsv1.Deployment: - currentDeployment, err := kcs.ExtensionsV1beta1().Deployments(value.Namespace).Get(value.Name, metav1.GetOptions{}) + currentDeployment, err := kcs.AppsV1().Deployments(value.Namespace).Get(value.Name, metav1.GetOptions{}) if err != nil { return false, err } // Find RS associated with deployment - newReplicaSet, err := deploymentutil.GetNewReplicaSet(currentDeployment, kcs.ExtensionsV1beta1()) + newReplicaSet, err := deploymentutil.GetNewReplicaSet(currentDeployment, kcs.AppsV1()) if err != nil || newReplicaSet == nil { return false, err } @@ -89,12 +84,12 @@ func (c *Client) waitForResources(timeout time.Duration, created Result) error { } deployments = append(deployments, newDeployment) case *appsv1beta1.Deployment: - currentDeployment, err := kcs.ExtensionsV1beta1().Deployments(value.Namespace).Get(value.Name, metav1.GetOptions{}) + currentDeployment, err := kcs.AppsV1().Deployments(value.Namespace).Get(value.Name, metav1.GetOptions{}) if err != nil { return false, err } // Find RS associated with deployment - newReplicaSet, err := deploymentutil.GetNewReplicaSet(currentDeployment, kcs.ExtensionsV1beta1()) + newReplicaSet, err := deploymentutil.GetNewReplicaSet(currentDeployment, kcs.AppsV1()) if err != nil || newReplicaSet == nil { return false, err } @@ -104,12 +99,12 @@ func (c *Client) waitForResources(timeout time.Duration, created Result) error { } deployments = append(deployments, newDeployment) case *appsv1beta2.Deployment: - currentDeployment, err := kcs.ExtensionsV1beta1().Deployments(value.Namespace).Get(value.Name, metav1.GetOptions{}) + currentDeployment, err := kcs.AppsV1().Deployments(value.Namespace).Get(value.Name, metav1.GetOptions{}) if err != nil { return false, err } // Find RS associated with deployment - newReplicaSet, err := deploymentutil.GetNewReplicaSet(currentDeployment, kcs.ExtensionsV1beta1()) + newReplicaSet, err := deploymentutil.GetNewReplicaSet(currentDeployment, kcs.AppsV1()) if err != nil || newReplicaSet == nil { return false, err } @@ -119,12 +114,12 @@ func (c *Client) waitForResources(timeout time.Duration, created Result) error { } deployments = append(deployments, newDeployment) case *extensions.Deployment: - currentDeployment, err := kcs.ExtensionsV1beta1().Deployments(value.Namespace).Get(value.Name, metav1.GetOptions{}) + currentDeployment, err := kcs.AppsV1().Deployments(value.Namespace).Get(value.Name, metav1.GetOptions{}) if err != nil { return false, err } // Find RS associated with deployment - newReplicaSet, err := deploymentutil.GetNewReplicaSet(currentDeployment, kcs.ExtensionsV1beta1()) + newReplicaSet, err := deploymentutil.GetNewReplicaSet(currentDeployment, kcs.AppsV1()) if err != nil || newReplicaSet == nil { return false, err } diff --git a/pkg/tiller/environment/environment.go b/pkg/tiller/environment/environment.go index 052120ff9..fb2293789 100644 --- a/pkg/tiller/environment/environment.go +++ b/pkg/tiller/environment/environment.go @@ -27,7 +27,7 @@ import ( "time" "k8s.io/kubernetes/pkg/apis/core" - "k8s.io/kubernetes/pkg/kubectl/resource" + "k8s.io/kubernetes/pkg/kubectl/genericclioptions/resource" "k8s.io/helm/pkg/chartutil" "k8s.io/helm/pkg/engine" diff --git a/pkg/tiller/environment/environment_test.go b/pkg/tiller/environment/environment_test.go index 1f06b1f28..616163e4c 100644 --- a/pkg/tiller/environment/environment_test.go +++ b/pkg/tiller/environment/environment_test.go @@ -23,7 +23,7 @@ import ( "time" "k8s.io/kubernetes/pkg/apis/core" - "k8s.io/kubernetes/pkg/kubectl/resource" + "k8s.io/kubernetes/pkg/kubectl/genericclioptions/resource" "k8s.io/helm/pkg/chartutil" "k8s.io/helm/pkg/hapi/chart" diff --git a/pkg/tiller/release_server_test.go b/pkg/tiller/release_server_test.go index b8e34bf10..9840c4731 100644 --- a/pkg/tiller/release_server_test.go +++ b/pkg/tiller/release_server_test.go @@ -30,7 +30,7 @@ import ( "github.com/pkg/errors" "k8s.io/client-go/kubernetes/fake" "k8s.io/kubernetes/pkg/apis/core" - "k8s.io/kubernetes/pkg/kubectl/resource" + "k8s.io/kubernetes/pkg/kubectl/genericclioptions/resource" "k8s.io/helm/pkg/hapi" "k8s.io/helm/pkg/hapi/chart"