FieldRef feature for DownwardAPI (#534)
* FieldRef feature for DownwardAPI Signed-off-by: VineethReddy02 <vineethpothulapati@outlook.com> * Unit tests for FieldRef Signed-off-by: VineethReddy02 <vineethpothulapati@outlook.com>
This commit is contained in:
committed by
Brian Goff
parent
f8c51004d4
commit
5cea3e7ea8
108
Gopkg.lock
generated
108
Gopkg.lock
generated
@@ -26,7 +26,7 @@
|
|||||||
"services/batch/2017-09-01.6.0/batch",
|
"services/batch/2017-09-01.6.0/batch",
|
||||||
"services/network/mgmt/2018-08-01/network",
|
"services/network/mgmt/2018-08-01/network",
|
||||||
"services/preview/servicefabricmesh/mgmt/2018-07-01-preview/servicefabricmesh",
|
"services/preview/servicefabricmesh/mgmt/2018-07-01-preview/servicefabricmesh",
|
||||||
"version",
|
"version"
|
||||||
]
|
]
|
||||||
pruneopts = "NUT"
|
pruneopts = "NUT"
|
||||||
revision = "6d20bdbae88c06c36d72eb512295417693bfdf4e"
|
revision = "6d20bdbae88c06c36d72eb512295417693bfdf4e"
|
||||||
@@ -38,7 +38,7 @@
|
|||||||
name = "github.com/Azure/go-ansiterm"
|
name = "github.com/Azure/go-ansiterm"
|
||||||
packages = [
|
packages = [
|
||||||
".",
|
".",
|
||||||
"winterm",
|
"winterm"
|
||||||
]
|
]
|
||||||
pruneopts = "NUT"
|
pruneopts = "NUT"
|
||||||
revision = "d6e3b3328b783f23731bc4d058875b0371ff8109"
|
revision = "d6e3b3328b783f23731bc4d058875b0371ff8109"
|
||||||
@@ -55,7 +55,7 @@
|
|||||||
"autorest/to",
|
"autorest/to",
|
||||||
"autorest/validation",
|
"autorest/validation",
|
||||||
"logger",
|
"logger",
|
||||||
"version",
|
"version"
|
||||||
]
|
]
|
||||||
pruneopts = "NUT"
|
pruneopts = "NUT"
|
||||||
revision = "9bc4033dd347c7f416fca46b2f42a043dc1fbdf6"
|
revision = "9bc4033dd347c7f416fca46b2f42a043dc1fbdf6"
|
||||||
@@ -113,7 +113,7 @@
|
|||||||
"sdk/errors",
|
"sdk/errors",
|
||||||
"sdk/requests",
|
"sdk/requests",
|
||||||
"sdk/responses",
|
"sdk/responses",
|
||||||
"sdk/utils",
|
"sdk/utils"
|
||||||
]
|
]
|
||||||
pruneopts = "NUT"
|
pruneopts = "NUT"
|
||||||
revision = "cad214d7d71fba7883fcf3b7e550ba782c15b400"
|
revision = "cad214d7d71fba7883fcf3b7e550ba782c15b400"
|
||||||
@@ -172,7 +172,7 @@
|
|||||||
"service/ecs",
|
"service/ecs",
|
||||||
"service/ecs/ecsiface",
|
"service/ecs/ecsiface",
|
||||||
"service/iam",
|
"service/iam",
|
||||||
"service/sts",
|
"service/sts"
|
||||||
]
|
]
|
||||||
pruneopts = "NUT"
|
pruneopts = "NUT"
|
||||||
revision = "2e04cd1d1af06ff041e6036745e8b100e2e5f426"
|
revision = "2e04cd1d1af06ff041e6036745e8b100e2e5f426"
|
||||||
@@ -192,7 +192,7 @@
|
|||||||
packages = [
|
packages = [
|
||||||
"gen-go/agent/common/v1",
|
"gen-go/agent/common/v1",
|
||||||
"gen-go/agent/trace/v1",
|
"gen-go/agent/trace/v1",
|
||||||
"gen-go/trace/v1",
|
"gen-go/trace/v1"
|
||||||
]
|
]
|
||||||
pruneopts = "NUT"
|
pruneopts = "NUT"
|
||||||
revision = "24333298e36590ea0716598caacc8959fc393c48"
|
revision = "24333298e36590ea0716598caacc8959fc393c48"
|
||||||
@@ -204,7 +204,7 @@
|
|||||||
packages = [
|
packages = [
|
||||||
".",
|
".",
|
||||||
"status",
|
"status",
|
||||||
"status/ocstatus",
|
"status/ocstatus"
|
||||||
]
|
]
|
||||||
pruneopts = "NUT"
|
pruneopts = "NUT"
|
||||||
revision = "05f877ca1e627f0a1e01902ba78c63f1ef7db5a3"
|
revision = "05f877ca1e627f0a1e01902ba78c63f1ef7db5a3"
|
||||||
@@ -242,7 +242,7 @@
|
|||||||
"context",
|
"context",
|
||||||
"digest",
|
"digest",
|
||||||
"reference",
|
"reference",
|
||||||
"uuid",
|
"uuid"
|
||||||
]
|
]
|
||||||
pruneopts = "NUT"
|
pruneopts = "NUT"
|
||||||
revision = "48294d928ced5dd9b378f7fd7c6f5da3ff3f2c89"
|
revision = "48294d928ced5dd9b378f7fd7c6f5da3ff3f2c89"
|
||||||
@@ -294,7 +294,7 @@
|
|||||||
"pkg/term/windows",
|
"pkg/term/windows",
|
||||||
"pkg/truncindex",
|
"pkg/truncindex",
|
||||||
"plugin/v2",
|
"plugin/v2",
|
||||||
"reference",
|
"reference"
|
||||||
]
|
]
|
||||||
pruneopts = "NUT"
|
pruneopts = "NUT"
|
||||||
revision = "49bf474f9ed7ce7143a59d1964ff7b7fd9b52178"
|
revision = "49bf474f9ed7ce7143a59d1964ff7b7fd9b52178"
|
||||||
@@ -305,7 +305,7 @@
|
|||||||
packages = [
|
packages = [
|
||||||
"nat",
|
"nat",
|
||||||
"sockets",
|
"sockets",
|
||||||
"tlsconfig",
|
"tlsconfig"
|
||||||
]
|
]
|
||||||
pruneopts = "NUT"
|
pruneopts = "NUT"
|
||||||
revision = "3ede32e2033de7505e6500d6c868c2b9ed9f169d"
|
revision = "3ede32e2033de7505e6500d6c868c2b9ed9f169d"
|
||||||
@@ -324,7 +324,7 @@
|
|||||||
name = "github.com/docker/libnetwork"
|
name = "github.com/docker/libnetwork"
|
||||||
packages = [
|
packages = [
|
||||||
"iptables",
|
"iptables",
|
||||||
"portallocator",
|
"portallocator"
|
||||||
]
|
]
|
||||||
pruneopts = "NUT"
|
pruneopts = "NUT"
|
||||||
revision = "1ee720e18fe98dceda6039bdd005ffbcb359d343"
|
revision = "1ee720e18fe98dceda6039bdd005ffbcb359d343"
|
||||||
@@ -336,7 +336,7 @@
|
|||||||
name = "github.com/docker/spdystream"
|
name = "github.com/docker/spdystream"
|
||||||
packages = [
|
packages = [
|
||||||
".",
|
".",
|
||||||
"spdy",
|
"spdy"
|
||||||
]
|
]
|
||||||
pruneopts = "NUT"
|
pruneopts = "NUT"
|
||||||
revision = "bc6354cbbc295e925e4c611ffe90c1f287ee54db"
|
revision = "bc6354cbbc295e925e4c611ffe90c1f287ee54db"
|
||||||
@@ -400,7 +400,7 @@
|
|||||||
name = "github.com/go-openapi/loads"
|
name = "github.com/go-openapi/loads"
|
||||||
packages = [
|
packages = [
|
||||||
".",
|
".",
|
||||||
"fmts",
|
"fmts"
|
||||||
]
|
]
|
||||||
pruneopts = "NUT"
|
pruneopts = "NUT"
|
||||||
revision = "6bb6486231e079ea125c0f39994ed3d0c53399ed"
|
revision = "6bb6486231e079ea125c0f39994ed3d0c53399ed"
|
||||||
@@ -410,7 +410,7 @@
|
|||||||
name = "github.com/go-openapi/runtime"
|
name = "github.com/go-openapi/runtime"
|
||||||
packages = [
|
packages = [
|
||||||
".",
|
".",
|
||||||
"client",
|
"client"
|
||||||
]
|
]
|
||||||
pruneopts = "NUT"
|
pruneopts = "NUT"
|
||||||
revision = "3b13ebb46790d871d74a6c2450fa4b1280f90854"
|
revision = "3b13ebb46790d871d74a6c2450fa4b1280f90854"
|
||||||
@@ -460,7 +460,7 @@
|
|||||||
"gogoproto",
|
"gogoproto",
|
||||||
"proto",
|
"proto",
|
||||||
"protoc-gen-gogo/descriptor",
|
"protoc-gen-gogo/descriptor",
|
||||||
"sortkeys",
|
"sortkeys"
|
||||||
]
|
]
|
||||||
pruneopts = "NUT"
|
pruneopts = "NUT"
|
||||||
revision = "1adfc126b41513cc696b209667c8656ea7aac67c"
|
revision = "1adfc126b41513cc696b209667c8656ea7aac67c"
|
||||||
@@ -491,7 +491,7 @@
|
|||||||
"ptypes/any",
|
"ptypes/any",
|
||||||
"ptypes/duration",
|
"ptypes/duration",
|
||||||
"ptypes/timestamp",
|
"ptypes/timestamp",
|
||||||
"ptypes/wrappers",
|
"ptypes/wrappers"
|
||||||
]
|
]
|
||||||
pruneopts = "NUT"
|
pruneopts = "NUT"
|
||||||
revision = "b4deda0973fb4c70b50d226b1af49f3da59f5265"
|
revision = "b4deda0973fb4c70b50d226b1af49f3da59f5265"
|
||||||
@@ -535,7 +535,7 @@
|
|||||||
packages = [
|
packages = [
|
||||||
"OpenAPIv2",
|
"OpenAPIv2",
|
||||||
"compiler",
|
"compiler",
|
||||||
"extensions",
|
"extensions"
|
||||||
]
|
]
|
||||||
pruneopts = "NUT"
|
pruneopts = "NUT"
|
||||||
revision = "ee43cbb60db7bd22502942cccbc39059117352ab"
|
revision = "ee43cbb60db7bd22502942cccbc39059117352ab"
|
||||||
@@ -579,7 +579,7 @@
|
|||||||
name = "github.com/gregjones/httpcache"
|
name = "github.com/gregjones/httpcache"
|
||||||
packages = [
|
packages = [
|
||||||
".",
|
".",
|
||||||
"diskcache",
|
"diskcache"
|
||||||
]
|
]
|
||||||
pruneopts = "NUT"
|
pruneopts = "NUT"
|
||||||
revision = "9cad4c3443a7200dd6400aef47183728de563a38"
|
revision = "9cad4c3443a7200dd6400aef47183728de563a38"
|
||||||
@@ -589,7 +589,7 @@
|
|||||||
name = "github.com/hashicorp/consul"
|
name = "github.com/hashicorp/consul"
|
||||||
packages = [
|
packages = [
|
||||||
"api",
|
"api",
|
||||||
"lib/freeport",
|
"lib/freeport"
|
||||||
]
|
]
|
||||||
pruneopts = "NUT"
|
pruneopts = "NUT"
|
||||||
revision = "0bddfa23a2ebe3c0773d917fc104f53d74f7a5ec"
|
revision = "0bddfa23a2ebe3c0773d917fc104f53d74f7a5ec"
|
||||||
@@ -672,7 +672,7 @@
|
|||||||
name = "github.com/hashicorp/golang-lru"
|
name = "github.com/hashicorp/golang-lru"
|
||||||
packages = [
|
packages = [
|
||||||
".",
|
".",
|
||||||
"simplelru",
|
"simplelru"
|
||||||
]
|
]
|
||||||
pruneopts = "NUT"
|
pruneopts = "NUT"
|
||||||
revision = "20f1fb78b0740ba8c3cb143a61e86ba5c8669768"
|
revision = "20f1fb78b0740ba8c3cb143a61e86ba5c8669768"
|
||||||
@@ -692,7 +692,7 @@
|
|||||||
"hcl/token",
|
"hcl/token",
|
||||||
"json/parser",
|
"json/parser",
|
||||||
"json/scanner",
|
"json/scanner",
|
||||||
"json/token",
|
"json/token"
|
||||||
]
|
]
|
||||||
pruneopts = "NUT"
|
pruneopts = "NUT"
|
||||||
revision = "ef8a98b0bbce4a65b5aa4c368430a80ddc533168"
|
revision = "ef8a98b0bbce4a65b5aa4c368430a80ddc533168"
|
||||||
@@ -712,7 +712,7 @@
|
|||||||
"helper/uuid",
|
"helper/uuid",
|
||||||
"nomad/structs",
|
"nomad/structs",
|
||||||
"nomad/structs/config",
|
"nomad/structs/config",
|
||||||
"testutil",
|
"testutil"
|
||||||
]
|
]
|
||||||
pruneopts = "NUT"
|
pruneopts = "NUT"
|
||||||
revision = "v0.8.6"
|
revision = "v0.8.6"
|
||||||
@@ -743,7 +743,7 @@
|
|||||||
"helper/hclutil",
|
"helper/hclutil",
|
||||||
"helper/jsonutil",
|
"helper/jsonutil",
|
||||||
"helper/parseutil",
|
"helper/parseutil",
|
||||||
"helper/strutil",
|
"helper/strutil"
|
||||||
]
|
]
|
||||||
pruneopts = "NUT"
|
pruneopts = "NUT"
|
||||||
revision = "08df121c8b9adcc2b8fd55fc8506c3f9714c7e61"
|
revision = "08df121c8b9adcc2b8fd55fc8506c3f9714c7e61"
|
||||||
@@ -819,7 +819,7 @@
|
|||||||
packages = [
|
packages = [
|
||||||
"buffer",
|
"buffer",
|
||||||
"jlexer",
|
"jlexer",
|
||||||
"jwriter",
|
"jwriter"
|
||||||
]
|
]
|
||||||
pruneopts = "NUT"
|
pruneopts = "NUT"
|
||||||
revision = "3fdea8d05856a0c8df22ed4bc71b3219245e4485"
|
revision = "3fdea8d05856a0c8df22ed4bc71b3219245e4485"
|
||||||
@@ -895,7 +895,7 @@
|
|||||||
"libcontainer/configs",
|
"libcontainer/configs",
|
||||||
"libcontainer/devices",
|
"libcontainer/devices",
|
||||||
"libcontainer/system",
|
"libcontainer/system",
|
||||||
"libcontainer/user",
|
"libcontainer/user"
|
||||||
]
|
]
|
||||||
pruneopts = "NUT"
|
pruneopts = "NUT"
|
||||||
revision = "baf6536d6259209c3edfa2b22237af82942d3dfa"
|
revision = "baf6536d6259209c3edfa2b22237af82942d3dfa"
|
||||||
@@ -945,7 +945,7 @@
|
|||||||
name = "github.com/pierrec/lz4"
|
name = "github.com/pierrec/lz4"
|
||||||
packages = [
|
packages = [
|
||||||
".",
|
".",
|
||||||
"internal/xxh32",
|
"internal/xxh32"
|
||||||
]
|
]
|
||||||
pruneopts = "NUT"
|
pruneopts = "NUT"
|
||||||
revision = "635575b42742856941dbc767b44905bb9ba083f6"
|
revision = "635575b42742856941dbc767b44905bb9ba083f6"
|
||||||
@@ -988,7 +988,7 @@
|
|||||||
name = "github.com/spf13/afero"
|
name = "github.com/spf13/afero"
|
||||||
packages = [
|
packages = [
|
||||||
".",
|
".",
|
||||||
"mem",
|
"mem"
|
||||||
]
|
]
|
||||||
pruneopts = "NUT"
|
pruneopts = "NUT"
|
||||||
revision = "63644898a8da0bc22138abf860edaf5277b6102e"
|
revision = "63644898a8da0bc22138abf860edaf5277b6102e"
|
||||||
@@ -1048,7 +1048,7 @@
|
|||||||
packages = [
|
packages = [
|
||||||
"assert",
|
"assert",
|
||||||
"mock",
|
"mock",
|
||||||
"require",
|
"require"
|
||||||
]
|
]
|
||||||
pruneopts = "NUT"
|
pruneopts = "NUT"
|
||||||
revision = "12b6f73e6084dad08a7c6e575284b177ecafbc71"
|
revision = "12b6f73e6084dad08a7c6e575284b177ecafbc71"
|
||||||
@@ -1075,7 +1075,7 @@
|
|||||||
packages = [
|
packages = [
|
||||||
"archive/tar",
|
"archive/tar",
|
||||||
"tar/asm",
|
"tar/asm",
|
||||||
"tar/storage",
|
"tar/storage"
|
||||||
]
|
]
|
||||||
pruneopts = "NUT"
|
pruneopts = "NUT"
|
||||||
revision = "38ec4ddb06dedbea0a895c4848b248eb38af221b"
|
revision = "38ec4ddb06dedbea0a895c4848b248eb38af221b"
|
||||||
@@ -1088,7 +1088,7 @@
|
|||||||
"client",
|
"client",
|
||||||
"client/aci",
|
"client/aci",
|
||||||
"client/api",
|
"client/api",
|
||||||
"client/network",
|
"client/network"
|
||||||
]
|
]
|
||||||
pruneopts = "NUT"
|
pruneopts = "NUT"
|
||||||
revision = "2e12def8b355625e62ffdb319e7c0b26d1d9c15d"
|
revision = "2e12def8b355625e62ffdb319e7c0b26d1d9c15d"
|
||||||
@@ -1099,7 +1099,7 @@
|
|||||||
name = "github.com/vishvananda/netlink"
|
name = "github.com/vishvananda/netlink"
|
||||||
packages = [
|
packages = [
|
||||||
".",
|
".",
|
||||||
"nl",
|
"nl"
|
||||||
]
|
]
|
||||||
pruneopts = "NUT"
|
pruneopts = "NUT"
|
||||||
revision = "482f7a52b758233521878cb6c5904b6bd63f3457"
|
revision = "482f7a52b758233521878cb6c5904b6bd63f3457"
|
||||||
@@ -1132,7 +1132,7 @@
|
|||||||
"vim25/progress",
|
"vim25/progress",
|
||||||
"vim25/soap",
|
"vim25/soap",
|
||||||
"vim25/types",
|
"vim25/types",
|
||||||
"vim25/xml",
|
"vim25/xml"
|
||||||
]
|
]
|
||||||
pruneopts = "NUT"
|
pruneopts = "NUT"
|
||||||
revision = "123ed177021588bac57b5c87c1a84270ddf2eca8"
|
revision = "123ed177021588bac57b5c87c1a84270ddf2eca8"
|
||||||
@@ -1183,7 +1183,7 @@
|
|||||||
"pkg/vsphere/extraconfig",
|
"pkg/vsphere/extraconfig",
|
||||||
"pkg/vsphere/performance",
|
"pkg/vsphere/performance",
|
||||||
"pkg/vsphere/session",
|
"pkg/vsphere/session",
|
||||||
"pkg/vsphere/sys",
|
"pkg/vsphere/sys"
|
||||||
]
|
]
|
||||||
pruneopts = "NUT"
|
pruneopts = "NUT"
|
||||||
revision = "c7d40ac878b09c577c307bc5331c7dd39619ed7c"
|
revision = "c7d40ac878b09c577c307bc5331c7dd39619ed7c"
|
||||||
@@ -1197,7 +1197,7 @@
|
|||||||
"message",
|
"message",
|
||||||
"rpcout",
|
"rpcout",
|
||||||
"rpcvmx",
|
"rpcvmx",
|
||||||
"vmcheck",
|
"vmcheck"
|
||||||
]
|
]
|
||||||
pruneopts = "NUT"
|
pruneopts = "NUT"
|
||||||
revision = "25eff159a728be87e103a0b8045e08273f4dbec4"
|
revision = "25eff159a728be87e103a0b8045e08273f4dbec4"
|
||||||
@@ -1223,7 +1223,7 @@
|
|||||||
"trace/propagation",
|
"trace/propagation",
|
||||||
"trace/tracestate",
|
"trace/tracestate",
|
||||||
"zpages",
|
"zpages",
|
||||||
"zpages/internal",
|
"zpages/internal"
|
||||||
]
|
]
|
||||||
pruneopts = "NUT"
|
pruneopts = "NUT"
|
||||||
revision = "79993219becaa7e29e3b60cb67f5b8e82dee11d6"
|
revision = "79993219becaa7e29e3b60cb67f5b8e82dee11d6"
|
||||||
@@ -1241,7 +1241,7 @@
|
|||||||
"pkcs12/internal/rc2",
|
"pkcs12/internal/rc2",
|
||||||
"poly1305",
|
"poly1305",
|
||||||
"salsa20/salsa",
|
"salsa20/salsa",
|
||||||
"ssh/terminal",
|
"ssh/terminal"
|
||||||
]
|
]
|
||||||
pruneopts = "NUT"
|
pruneopts = "NUT"
|
||||||
revision = "ff983b9c42bc9fbf91556e191cc8efb585c16908"
|
revision = "ff983b9c42bc9fbf91556e191cc8efb585c16908"
|
||||||
@@ -1261,7 +1261,7 @@
|
|||||||
"internal/timeseries",
|
"internal/timeseries",
|
||||||
"proxy",
|
"proxy",
|
||||||
"trace",
|
"trace",
|
||||||
"websocket",
|
"websocket"
|
||||||
]
|
]
|
||||||
pruneopts = "NUT"
|
pruneopts = "NUT"
|
||||||
revision = "f73e4c9ed3b7ebdd5f699a16a880c2b1994e50dd"
|
revision = "f73e4c9ed3b7ebdd5f699a16a880c2b1994e50dd"
|
||||||
@@ -1272,7 +1272,7 @@
|
|||||||
name = "golang.org/x/oauth2"
|
name = "golang.org/x/oauth2"
|
||||||
packages = [
|
packages = [
|
||||||
".",
|
".",
|
||||||
"internal",
|
"internal"
|
||||||
]
|
]
|
||||||
pruneopts = "NUT"
|
pruneopts = "NUT"
|
||||||
revision = "c57b0facaced709681d9f90397429b9430a74754"
|
revision = "c57b0facaced709681d9f90397429b9430a74754"
|
||||||
@@ -1283,7 +1283,7 @@
|
|||||||
name = "golang.org/x/sync"
|
name = "golang.org/x/sync"
|
||||||
packages = [
|
packages = [
|
||||||
"errgroup",
|
"errgroup",
|
||||||
"semaphore",
|
"semaphore"
|
||||||
]
|
]
|
||||||
pruneopts = "NUT"
|
pruneopts = "NUT"
|
||||||
revision = "1d60e4601c6fd243af51cc01ddf169918a5407ca"
|
revision = "1d60e4601c6fd243af51cc01ddf169918a5407ca"
|
||||||
@@ -1295,7 +1295,7 @@
|
|||||||
packages = [
|
packages = [
|
||||||
"cpu",
|
"cpu",
|
||||||
"unix",
|
"unix",
|
||||||
"windows",
|
"windows"
|
||||||
]
|
]
|
||||||
pruneopts = "NUT"
|
pruneopts = "NUT"
|
||||||
revision = "7dfd1290c7917b7ba22824b9d24954ab3002fe24"
|
revision = "7dfd1290c7917b7ba22824b9d24954ab3002fe24"
|
||||||
@@ -1318,7 +1318,7 @@
|
|||||||
"unicode/cldr",
|
"unicode/cldr",
|
||||||
"unicode/norm",
|
"unicode/norm",
|
||||||
"unicode/rangetable",
|
"unicode/rangetable",
|
||||||
"width",
|
"width"
|
||||||
]
|
]
|
||||||
pruneopts = "NUT"
|
pruneopts = "NUT"
|
||||||
revision = "f21a4dfb5e38f5895301dc265a8def02365cc3d0"
|
revision = "f21a4dfb5e38f5895301dc265a8def02365cc3d0"
|
||||||
@@ -1350,7 +1350,7 @@
|
|||||||
"internal/log",
|
"internal/log",
|
||||||
"internal/remote_api",
|
"internal/remote_api",
|
||||||
"internal/urlfetch",
|
"internal/urlfetch",
|
||||||
"urlfetch",
|
"urlfetch"
|
||||||
]
|
]
|
||||||
pruneopts = "NUT"
|
pruneopts = "NUT"
|
||||||
revision = "ae0ab99deb4dc413a2b4bd6c8bdd0eb67f1e4d06"
|
revision = "ae0ab99deb4dc413a2b4bd6c8bdd0eb67f1e4d06"
|
||||||
@@ -1391,7 +1391,7 @@
|
|||||||
"stats",
|
"stats",
|
||||||
"status",
|
"status",
|
||||||
"tap",
|
"tap",
|
||||||
"transport",
|
"transport"
|
||||||
]
|
]
|
||||||
pruneopts = "NUT"
|
pruneopts = "NUT"
|
||||||
revision = "41344da2231b913fa3d983840a57a6b1b7b631a1"
|
revision = "41344da2231b913fa3d983840a57a6b1b7b631a1"
|
||||||
@@ -1448,7 +1448,7 @@
|
|||||||
"settings/v1alpha1",
|
"settings/v1alpha1",
|
||||||
"storage/v1",
|
"storage/v1",
|
||||||
"storage/v1alpha1",
|
"storage/v1alpha1",
|
||||||
"storage/v1beta1",
|
"storage/v1beta1"
|
||||||
]
|
]
|
||||||
pruneopts = "NUT"
|
pruneopts = "NUT"
|
||||||
revision = "05914d821849570fba9eacfb29466f2d8d3cd229"
|
revision = "05914d821849570fba9eacfb29466f2d8d3cd229"
|
||||||
@@ -1504,7 +1504,7 @@
|
|||||||
"pkg/watch",
|
"pkg/watch",
|
||||||
"third_party/forked/golang/json",
|
"third_party/forked/golang/json",
|
||||||
"third_party/forked/golang/netutil",
|
"third_party/forked/golang/netutil",
|
||||||
"third_party/forked/golang/reflect",
|
"third_party/forked/golang/reflect"
|
||||||
]
|
]
|
||||||
pruneopts = "NUT"
|
pruneopts = "NUT"
|
||||||
revision = "2b1284ed4c93a43499e781493253e2ac5959c4fd"
|
revision = "2b1284ed4c93a43499e781493253e2ac5959c4fd"
|
||||||
@@ -1516,7 +1516,7 @@
|
|||||||
name = "k8s.io/apiserver"
|
name = "k8s.io/apiserver"
|
||||||
packages = [
|
packages = [
|
||||||
"pkg/server/httplog",
|
"pkg/server/httplog",
|
||||||
"pkg/util/wsstream",
|
"pkg/util/wsstream"
|
||||||
]
|
]
|
||||||
pruneopts = "NUT"
|
pruneopts = "NUT"
|
||||||
revision = "25e79651c7e569b0ebcd97affc0fe7f1ffcbee94"
|
revision = "25e79651c7e569b0ebcd97affc0fe7f1ffcbee94"
|
||||||
@@ -1698,7 +1698,7 @@
|
|||||||
"util/homedir",
|
"util/homedir",
|
||||||
"util/integer",
|
"util/integer",
|
||||||
"util/retry",
|
"util/retry",
|
||||||
"util/workqueue",
|
"util/workqueue"
|
||||||
]
|
]
|
||||||
pruneopts = "NUT"
|
pruneopts = "NUT"
|
||||||
revision = "8d9ed539ba3134352c586810e749e58df4e94e4f"
|
revision = "8d9ed539ba3134352c586810e749e58df4e94e4f"
|
||||||
@@ -1721,18 +1721,20 @@
|
|||||||
revision = "0317810137be915b9cf888946c6e115c1bfac693"
|
revision = "0317810137be915b9cf888946c6e115c1bfac693"
|
||||||
|
|
||||||
[[projects]]
|
[[projects]]
|
||||||
digest = "1:8e43e15194de65c9e9223df5488e3f400b76d33b68085a2e70b2c6ab84132d2c"
|
digest = "1:02e74ccd0c045a31940dca52ba2545108fd299d4f66632b1bf643fb92b662de2"
|
||||||
name = "k8s.io/kubernetes"
|
name = "k8s.io/kubernetes"
|
||||||
packages = [
|
packages = [
|
||||||
"pkg/api/v1/pod",
|
"pkg/api/v1/pod",
|
||||||
"pkg/apis/core",
|
"pkg/apis/core",
|
||||||
|
"pkg/apis/core/pods",
|
||||||
|
"pkg/fieldpath",
|
||||||
"pkg/kubelet/apis/cri/runtime/v1alpha2",
|
"pkg/kubelet/apis/cri/runtime/v1alpha2",
|
||||||
"pkg/kubelet/apis/stats/v1alpha1",
|
"pkg/kubelet/apis/stats/v1alpha1",
|
||||||
"pkg/kubelet/server/remotecommand",
|
"pkg/kubelet/server/remotecommand"
|
||||||
]
|
]
|
||||||
pruneopts = "NUT"
|
pruneopts = "NUT"
|
||||||
revision = "4ed3216f3ec431b140b1d899130a69fc671678f4"
|
revision = "c27b913fddd1a6c480c229191a087698aa92f0b1"
|
||||||
version = "v1.12.1"
|
version = "v1.13.4"
|
||||||
|
|
||||||
[[projects]]
|
[[projects]]
|
||||||
branch = "master"
|
branch = "master"
|
||||||
@@ -1857,9 +1859,11 @@
|
|||||||
"k8s.io/client-go/tools/watch",
|
"k8s.io/client-go/tools/watch",
|
||||||
"k8s.io/client-go/util/workqueue",
|
"k8s.io/client-go/util/workqueue",
|
||||||
"k8s.io/kubernetes/pkg/api/v1/pod",
|
"k8s.io/kubernetes/pkg/api/v1/pod",
|
||||||
|
"k8s.io/kubernetes/pkg/apis/core/pods",
|
||||||
|
"k8s.io/kubernetes/pkg/fieldpath",
|
||||||
"k8s.io/kubernetes/pkg/kubelet/apis/cri/runtime/v1alpha2",
|
"k8s.io/kubernetes/pkg/kubelet/apis/cri/runtime/v1alpha2",
|
||||||
"k8s.io/kubernetes/pkg/kubelet/apis/stats/v1alpha1",
|
"k8s.io/kubernetes/pkg/kubelet/apis/stats/v1alpha1",
|
||||||
"k8s.io/kubernetes/pkg/kubelet/server/remotecommand",
|
"k8s.io/kubernetes/pkg/kubelet/server/remotecommand"
|
||||||
]
|
]
|
||||||
solver-name = "gps-cdcl"
|
solver-name = "gps-cdcl"
|
||||||
solver-version = 1
|
solver-version = 1
|
||||||
|
|||||||
5401
vendor/k8s.io/kubernetes/Godeps/LICENSES
generated
vendored
5401
vendor/k8s.io/kubernetes/Godeps/LICENSES
generated
vendored
File diff suppressed because it is too large
Load Diff
35
vendor/k8s.io/kubernetes/pkg/api/v1/pod/util.go
generated
vendored
35
vendor/k8s.io/kubernetes/pkg/api/v1/pod/util.go
generated
vendored
@@ -238,13 +238,13 @@ func IsPodReady(pod *v1.Pod) bool {
|
|||||||
return IsPodReadyConditionTrue(pod.Status)
|
return IsPodReadyConditionTrue(pod.Status)
|
||||||
}
|
}
|
||||||
|
|
||||||
// IsPodReady returns true if a pod is ready; false otherwise.
|
// IsPodReadyConditionTrue returns true if a pod is ready; false otherwise.
|
||||||
func IsPodReadyConditionTrue(status v1.PodStatus) bool {
|
func IsPodReadyConditionTrue(status v1.PodStatus) bool {
|
||||||
condition := GetPodReadyCondition(status)
|
condition := GetPodReadyCondition(status)
|
||||||
return condition != nil && condition.Status == v1.ConditionTrue
|
return condition != nil && condition.Status == v1.ConditionTrue
|
||||||
}
|
}
|
||||||
|
|
||||||
// Extracts the pod ready condition from the given status and returns that.
|
// GetPodReadyCondition extracts the pod ready condition from the given status and returns that.
|
||||||
// Returns nil if the condition is not present.
|
// Returns nil if the condition is not present.
|
||||||
func GetPodReadyCondition(status v1.PodStatus) *v1.PodCondition {
|
func GetPodReadyCondition(status v1.PodStatus) *v1.PodCondition {
|
||||||
_, condition := GetPodCondition(&status, v1.PodReady)
|
_, condition := GetPodCondition(&status, v1.PodReady)
|
||||||
@@ -274,7 +274,7 @@ func GetPodConditionFromList(conditions []v1.PodCondition, conditionType v1.PodC
|
|||||||
return -1, nil
|
return -1, nil
|
||||||
}
|
}
|
||||||
|
|
||||||
// Updates existing pod condition or creates a new one. Sets LastTransitionTime to now if the
|
// UpdatePodCondition updates existing pod condition or creates a new one. Sets LastTransitionTime to now if the
|
||||||
// status has changed.
|
// status has changed.
|
||||||
// Returns true if pod condition has changed or has been added.
|
// Returns true if pod condition has changed or has been added.
|
||||||
func UpdatePodCondition(status *v1.PodStatus, condition *v1.PodCondition) bool {
|
func UpdatePodCondition(status *v1.PodStatus, condition *v1.PodCondition) bool {
|
||||||
@@ -286,20 +286,19 @@ func UpdatePodCondition(status *v1.PodStatus, condition *v1.PodCondition) bool {
|
|||||||
// We are adding new pod condition.
|
// We are adding new pod condition.
|
||||||
status.Conditions = append(status.Conditions, *condition)
|
status.Conditions = append(status.Conditions, *condition)
|
||||||
return true
|
return true
|
||||||
} else {
|
|
||||||
// We are updating an existing condition, so we need to check if it has changed.
|
|
||||||
if condition.Status == oldCondition.Status {
|
|
||||||
condition.LastTransitionTime = oldCondition.LastTransitionTime
|
|
||||||
}
|
|
||||||
|
|
||||||
isEqual := condition.Status == oldCondition.Status &&
|
|
||||||
condition.Reason == oldCondition.Reason &&
|
|
||||||
condition.Message == oldCondition.Message &&
|
|
||||||
condition.LastProbeTime.Equal(&oldCondition.LastProbeTime) &&
|
|
||||||
condition.LastTransitionTime.Equal(&oldCondition.LastTransitionTime)
|
|
||||||
|
|
||||||
status.Conditions[conditionIndex] = *condition
|
|
||||||
// Return true if one of the fields have changed.
|
|
||||||
return !isEqual
|
|
||||||
}
|
}
|
||||||
|
// We are updating an existing condition, so we need to check if it has changed.
|
||||||
|
if condition.Status == oldCondition.Status {
|
||||||
|
condition.LastTransitionTime = oldCondition.LastTransitionTime
|
||||||
|
}
|
||||||
|
|
||||||
|
isEqual := condition.Status == oldCondition.Status &&
|
||||||
|
condition.Reason == oldCondition.Reason &&
|
||||||
|
condition.Message == oldCondition.Message &&
|
||||||
|
condition.LastProbeTime.Equal(&oldCondition.LastProbeTime) &&
|
||||||
|
condition.LastTransitionTime.Equal(&oldCondition.LastTransitionTime)
|
||||||
|
|
||||||
|
status.Conditions[conditionIndex] = *condition
|
||||||
|
// Return true if one of the fields have changed.
|
||||||
|
return !isEqual
|
||||||
}
|
}
|
||||||
|
|||||||
19
vendor/k8s.io/kubernetes/pkg/apis/core/annotation_key_constants.go
generated
vendored
19
vendor/k8s.io/kubernetes/pkg/apis/core/annotation_key_constants.go
generated
vendored
@@ -82,4 +82,23 @@ const (
|
|||||||
//
|
//
|
||||||
// Not all cloud providers support this annotation, though AWS & GCE do.
|
// Not all cloud providers support this annotation, though AWS & GCE do.
|
||||||
AnnotationLoadBalancerSourceRangesKey = "service.beta.kubernetes.io/load-balancer-source-ranges"
|
AnnotationLoadBalancerSourceRangesKey = "service.beta.kubernetes.io/load-balancer-source-ranges"
|
||||||
|
|
||||||
|
// EndpointsLastChangeTriggerTime is the annotation key, set for endpoints objects, that
|
||||||
|
// represents the timestamp (stored as RFC 3339 date-time string, e.g. '2018-10-22T19:32:52.1Z')
|
||||||
|
// of the last change, of some Pod or Service object, that triggered the endpoints object change.
|
||||||
|
// In other words, if a Pod / Service changed at time T0, that change was observed by endpoints
|
||||||
|
// controller at T1, and the Endpoints object was changed at T2, the
|
||||||
|
// EndpointsLastChangeTriggerTime would be set to T0.
|
||||||
|
//
|
||||||
|
// The "endpoints change trigger" here means any Pod or Service change that resulted in the
|
||||||
|
// Endpoints object change.
|
||||||
|
//
|
||||||
|
// Given the definition of the "endpoints change trigger", please note that this annotation will
|
||||||
|
// be set ONLY for endpoints object changes triggered by either Pod or Service change. If the
|
||||||
|
// Endpoints object changes due to other reasons, this annotation won't be set (or updated if it's
|
||||||
|
// already set).
|
||||||
|
//
|
||||||
|
// This annotation will be used to compute the in-cluster network programming latency SLI, see
|
||||||
|
// https://github.com/kubernetes/community/blob/master/sig-scalability/slos/network_programming_latency.md
|
||||||
|
EndpointsLastChangeTriggerTime = "endpoints.kubernetes.io/last-change-trigger-time"
|
||||||
)
|
)
|
||||||
|
|||||||
63
vendor/k8s.io/kubernetes/pkg/apis/core/pods/helpers.go
generated
vendored
Normal file
63
vendor/k8s.io/kubernetes/pkg/apis/core/pods/helpers.go
generated
vendored
Normal file
@@ -0,0 +1,63 @@
|
|||||||
|
/*
|
||||||
|
Copyright 2017 The Kubernetes Authors.
|
||||||
|
|
||||||
|
Licensed under the Apache License, Version 2.0 (the "License");
|
||||||
|
you may not use this file except in compliance with the License.
|
||||||
|
You may obtain a copy of the License at
|
||||||
|
|
||||||
|
http://www.apache.org/licenses/LICENSE-2.0
|
||||||
|
|
||||||
|
Unless required by applicable law or agreed to in writing, software
|
||||||
|
distributed under the License is distributed on an "AS IS" BASIS,
|
||||||
|
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||||
|
See the License for the specific language governing permissions and
|
||||||
|
limitations under the License.
|
||||||
|
*/
|
||||||
|
|
||||||
|
package pods
|
||||||
|
|
||||||
|
import (
|
||||||
|
"fmt"
|
||||||
|
|
||||||
|
"k8s.io/kubernetes/pkg/fieldpath"
|
||||||
|
)
|
||||||
|
|
||||||
|
// ConvertDownwardAPIFieldLabel converts the specified downward API field label
|
||||||
|
// and its value in the pod of the specified version to the internal version,
|
||||||
|
// and returns the converted label and value. This function returns an error if
|
||||||
|
// the conversion fails.
|
||||||
|
func ConvertDownwardAPIFieldLabel(version, label, value string) (string, string, error) {
|
||||||
|
if version != "v1" {
|
||||||
|
return "", "", fmt.Errorf("unsupported pod version: %s", version)
|
||||||
|
}
|
||||||
|
|
||||||
|
if path, _, ok := fieldpath.SplitMaybeSubscriptedPath(label); ok {
|
||||||
|
switch path {
|
||||||
|
case "metadata.annotations", "metadata.labels":
|
||||||
|
return label, value, nil
|
||||||
|
default:
|
||||||
|
return "", "", fmt.Errorf("field label does not support subscript: %s", label)
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
switch label {
|
||||||
|
case "metadata.annotations",
|
||||||
|
"metadata.labels",
|
||||||
|
"metadata.name",
|
||||||
|
"metadata.namespace",
|
||||||
|
"metadata.uid",
|
||||||
|
"spec.nodeName",
|
||||||
|
"spec.restartPolicy",
|
||||||
|
"spec.serviceAccountName",
|
||||||
|
"spec.schedulerName",
|
||||||
|
"status.phase",
|
||||||
|
"status.hostIP",
|
||||||
|
"status.podIP":
|
||||||
|
return label, value, nil
|
||||||
|
// This is for backwards compatibility with old v1 clients which send spec.host
|
||||||
|
case "spec.host":
|
||||||
|
return "spec.nodeName", value, nil
|
||||||
|
default:
|
||||||
|
return "", "", fmt.Errorf("field label not supported: %s", label)
|
||||||
|
}
|
||||||
|
}
|
||||||
61
vendor/k8s.io/kubernetes/pkg/apis/core/types.go
generated
vendored
61
vendor/k8s.io/kubernetes/pkg/apis/core/types.go
generated
vendored
@@ -26,19 +26,19 @@ import (
|
|||||||
|
|
||||||
const (
|
const (
|
||||||
// NamespaceDefault means the object is in the default namespace which is applied when not specified by clients
|
// NamespaceDefault means the object is in the default namespace which is applied when not specified by clients
|
||||||
NamespaceDefault string = "default"
|
NamespaceDefault = "default"
|
||||||
// NamespaceAll is the default argument to specify on a context when you want to list or filter resources across all namespaces
|
// NamespaceAll is the default argument to specify on a context when you want to list or filter resources across all namespaces
|
||||||
NamespaceAll string = ""
|
NamespaceAll = ""
|
||||||
// NamespaceNone is the argument for a context when there is no namespace.
|
// NamespaceNone is the argument for a context when there is no namespace.
|
||||||
NamespaceNone string = ""
|
NamespaceNone = ""
|
||||||
// NamespaceSystem is the system namespace where we place system components.
|
// NamespaceSystem is the system namespace where we place system components.
|
||||||
NamespaceSystem string = "kube-system"
|
NamespaceSystem = "kube-system"
|
||||||
// NamespacePublic is the namespace where we place public info (ConfigMaps)
|
// NamespacePublic is the namespace where we place public info (ConfigMaps)
|
||||||
NamespacePublic string = "kube-public"
|
NamespacePublic = "kube-public"
|
||||||
// NamespaceNodeLease is the namespace where we place node lease objects (used for node heartbeats)
|
// NamespaceNodeLease is the namespace where we place node lease objects (used for node heartbeats)
|
||||||
NamespaceNodeLease string = "kube-node-lease"
|
NamespaceNodeLease = "kube-node-lease"
|
||||||
// TerminationMessagePathDefault means the default path to capture the application termination message running in a container
|
// TerminationMessagePathDefault means the default path to capture the application termination message running in a container
|
||||||
TerminationMessagePathDefault string = "/dev/termination-log"
|
TerminationMessagePathDefault = "/dev/termination-log"
|
||||||
)
|
)
|
||||||
|
|
||||||
// Volume represents a named volume in a pod that may be accessed by any containers in the pod.
|
// Volume represents a named volume in a pod that may be accessed by any containers in the pod.
|
||||||
@@ -175,7 +175,7 @@ type PersistentVolumeSource struct {
|
|||||||
HostPath *HostPathVolumeSource
|
HostPath *HostPathVolumeSource
|
||||||
// Glusterfs represents a Glusterfs volume that is attached to a host and exposed to the pod
|
// Glusterfs represents a Glusterfs volume that is attached to a host and exposed to the pod
|
||||||
// +optional
|
// +optional
|
||||||
Glusterfs *GlusterfsVolumeSource
|
Glusterfs *GlusterfsPersistentVolumeSource
|
||||||
// NFS represents an NFS mount on the host that shares a pod's lifetime
|
// NFS represents an NFS mount on the host that shares a pod's lifetime
|
||||||
// +optional
|
// +optional
|
||||||
NFS *NFSVolumeSource
|
NFS *NFSVolumeSource
|
||||||
@@ -229,7 +229,7 @@ type PersistentVolumeSource struct {
|
|||||||
// More info: https://releases.k8s.io/HEAD/examples/volumes/storageos/README.md
|
// More info: https://releases.k8s.io/HEAD/examples/volumes/storageos/README.md
|
||||||
// +optional
|
// +optional
|
||||||
StorageOS *StorageOSPersistentVolumeSource
|
StorageOS *StorageOSPersistentVolumeSource
|
||||||
// CSI (Container Storage Interface) represents storage that handled by an external CSI driver (Beta feature).
|
// CSI (Container Storage Interface) represents storage that handled by an external CSI driver.
|
||||||
// +optional
|
// +optional
|
||||||
CSI *CSIPersistentVolumeSource
|
CSI *CSIPersistentVolumeSource
|
||||||
}
|
}
|
||||||
@@ -298,7 +298,7 @@ type PersistentVolumeSpec struct {
|
|||||||
MountOptions []string
|
MountOptions []string
|
||||||
// volumeMode defines if a volume is intended to be used with a formatted filesystem
|
// volumeMode defines if a volume is intended to be used with a formatted filesystem
|
||||||
// or to remain in raw block state. Value of Filesystem is implied when not included in spec.
|
// or to remain in raw block state. Value of Filesystem is implied when not included in spec.
|
||||||
// This is an alpha feature and may change in the future.
|
// This is a beta feature.
|
||||||
// +optional
|
// +optional
|
||||||
VolumeMode *PersistentVolumeMode
|
VolumeMode *PersistentVolumeMode
|
||||||
// NodeAffinity defines constraints that limit what nodes this volume can be accessed from.
|
// NodeAffinity defines constraints that limit what nodes this volume can be accessed from.
|
||||||
@@ -410,7 +410,7 @@ type PersistentVolumeClaimSpec struct {
|
|||||||
StorageClassName *string
|
StorageClassName *string
|
||||||
// volumeMode defines what type of volume is required by the claim.
|
// volumeMode defines what type of volume is required by the claim.
|
||||||
// Value of Filesystem is implied when not included in claim spec.
|
// Value of Filesystem is implied when not included in claim spec.
|
||||||
// This is an alpha feature and may change in the future.
|
// This is a beta feature.
|
||||||
// +optional
|
// +optional
|
||||||
VolumeMode *PersistentVolumeMode
|
VolumeMode *PersistentVolumeMode
|
||||||
// This field requires the VolumeSnapshotDataSource alpha feature gate to be
|
// This field requires the VolumeSnapshotDataSource alpha feature gate to be
|
||||||
@@ -935,6 +935,30 @@ type GlusterfsVolumeSource struct {
|
|||||||
ReadOnly bool
|
ReadOnly bool
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// Represents a Glusterfs mount that lasts the lifetime of a pod.
|
||||||
|
// Glusterfs volumes do not support ownership management or SELinux relabeling.
|
||||||
|
type GlusterfsPersistentVolumeSource struct {
|
||||||
|
// EndpointsName is the endpoint name that details Glusterfs topology.
|
||||||
|
// More info: https://releases.k8s.io/HEAD/examples/volumes/glusterfs/README.md#create-a-pod
|
||||||
|
EndpointsName string
|
||||||
|
|
||||||
|
// Path is the Glusterfs volume path.
|
||||||
|
// More info: https://releases.k8s.io/HEAD/examples/volumes/glusterfs/README.md#create-a-pod
|
||||||
|
Path string
|
||||||
|
|
||||||
|
// ReadOnly here will force the Glusterfs volume to be mounted with read-only permissions.
|
||||||
|
// Defaults to false.
|
||||||
|
// More info: https://releases.k8s.io/HEAD/examples/volumes/glusterfs/README.md#create-a-pod
|
||||||
|
// +optional
|
||||||
|
ReadOnly bool
|
||||||
|
|
||||||
|
// EndpointsNamespace is the namespace that contains Glusterfs endpoint.
|
||||||
|
// If this field is empty, the EndpointNamespace defaults to the same namespace as the bound PVC.
|
||||||
|
// More info: https://releases.k8s.io/HEAD/examples/volumes/glusterfs/README.md#create-a-pod
|
||||||
|
// +optional
|
||||||
|
EndpointsNamespace *string
|
||||||
|
}
|
||||||
|
|
||||||
// Represents a Rados Block Device mount that lasts the lifetime of a pod.
|
// Represents a Rados Block Device mount that lasts the lifetime of a pod.
|
||||||
// RBD volumes support ownership management and SELinux relabeling.
|
// RBD volumes support ownership management and SELinux relabeling.
|
||||||
type RBDVolumeSource struct {
|
type RBDVolumeSource struct {
|
||||||
@@ -1523,7 +1547,7 @@ type LocalVolumeSource struct {
|
|||||||
FSType *string
|
FSType *string
|
||||||
}
|
}
|
||||||
|
|
||||||
// Represents storage that is managed by an external CSI volume driver (Beta feature)
|
// Represents storage that is managed by an external CSI volume driver.
|
||||||
type CSIPersistentVolumeSource struct {
|
type CSIPersistentVolumeSource struct {
|
||||||
// Driver is the name of the driver to use for this volume.
|
// Driver is the name of the driver to use for this volume.
|
||||||
// Required.
|
// Required.
|
||||||
@@ -1552,7 +1576,7 @@ type CSIPersistentVolumeSource struct {
|
|||||||
// ControllerPublishSecretRef is a reference to the secret object containing
|
// ControllerPublishSecretRef is a reference to the secret object containing
|
||||||
// sensitive information to pass to the CSI driver to complete the CSI
|
// sensitive information to pass to the CSI driver to complete the CSI
|
||||||
// ControllerPublishVolume and ControllerUnpublishVolume calls.
|
// ControllerPublishVolume and ControllerUnpublishVolume calls.
|
||||||
// This field is optional, and may be empty if no secret is required. If the
|
// This field is optional, and may be empty if no secret is required. If the
|
||||||
// secret object contains more than one secret, all secrets are passed.
|
// secret object contains more than one secret, all secrets are passed.
|
||||||
// +optional
|
// +optional
|
||||||
ControllerPublishSecretRef *SecretReference
|
ControllerPublishSecretRef *SecretReference
|
||||||
@@ -1560,7 +1584,7 @@ type CSIPersistentVolumeSource struct {
|
|||||||
// NodeStageSecretRef is a reference to the secret object containing sensitive
|
// NodeStageSecretRef is a reference to the secret object containing sensitive
|
||||||
// information to pass to the CSI driver to complete the CSI NodeStageVolume
|
// information to pass to the CSI driver to complete the CSI NodeStageVolume
|
||||||
// and NodeStageVolume and NodeUnstageVolume calls.
|
// and NodeStageVolume and NodeUnstageVolume calls.
|
||||||
// This field is optional, and may be empty if no secret is required. If the
|
// This field is optional, and may be empty if no secret is required. If the
|
||||||
// secret object contains more than one secret, all secrets are passed.
|
// secret object contains more than one secret, all secrets are passed.
|
||||||
// +optional
|
// +optional
|
||||||
NodeStageSecretRef *SecretReference
|
NodeStageSecretRef *SecretReference
|
||||||
@@ -1568,7 +1592,7 @@ type CSIPersistentVolumeSource struct {
|
|||||||
// NodePublishSecretRef is a reference to the secret object containing
|
// NodePublishSecretRef is a reference to the secret object containing
|
||||||
// sensitive information to pass to the CSI driver to complete the CSI
|
// sensitive information to pass to the CSI driver to complete the CSI
|
||||||
// NodePublishVolume and NodeUnpublishVolume calls.
|
// NodePublishVolume and NodeUnpublishVolume calls.
|
||||||
// This field is optional, and may be empty if no secret is required. If the
|
// This field is optional, and may be empty if no secret is required. If the
|
||||||
// secret object contains more than one secret, all secrets are passed.
|
// secret object contains more than one secret, all secrets are passed.
|
||||||
// +optional
|
// +optional
|
||||||
NodePublishSecretRef *SecretReference
|
NodePublishSecretRef *SecretReference
|
||||||
@@ -1944,7 +1968,7 @@ type Container struct {
|
|||||||
// +optional
|
// +optional
|
||||||
VolumeMounts []VolumeMount
|
VolumeMounts []VolumeMount
|
||||||
// volumeDevices is the list of block devices to be used by the container.
|
// volumeDevices is the list of block devices to be used by the container.
|
||||||
// This is an alpha feature and may change in the future.
|
// This is a beta feature.
|
||||||
// +optional
|
// +optional
|
||||||
VolumeDevices []VolumeDevice
|
VolumeDevices []VolumeDevice
|
||||||
// +optional
|
// +optional
|
||||||
@@ -2597,6 +2621,11 @@ type PodSpec struct {
|
|||||||
// This is an alpha feature and may change in the future.
|
// This is an alpha feature and may change in the future.
|
||||||
// +optional
|
// +optional
|
||||||
RuntimeClassName *string
|
RuntimeClassName *string
|
||||||
|
// EnableServiceLinks indicates whether information about services should be injected into pod's
|
||||||
|
// environment variables, matching the syntax of Docker links.
|
||||||
|
// If not specified, the default is true.
|
||||||
|
// +optional
|
||||||
|
EnableServiceLinks *bool
|
||||||
}
|
}
|
||||||
|
|
||||||
// HostAlias holds the mapping between IP and hostnames that will be injected as an entry in the
|
// HostAlias holds the mapping between IP and hostnames that will be injected as an entry in the
|
||||||
|
|||||||
30
vendor/k8s.io/kubernetes/pkg/apis/core/zz_generated.deepcopy.go
generated
vendored
30
vendor/k8s.io/kubernetes/pkg/apis/core/zz_generated.deepcopy.go
generated
vendored
@@ -1498,6 +1498,27 @@ func (in *GitRepoVolumeSource) DeepCopy() *GitRepoVolumeSource {
|
|||||||
return out
|
return out
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.
|
||||||
|
func (in *GlusterfsPersistentVolumeSource) DeepCopyInto(out *GlusterfsPersistentVolumeSource) {
|
||||||
|
*out = *in
|
||||||
|
if in.EndpointsNamespace != nil {
|
||||||
|
in, out := &in.EndpointsNamespace, &out.EndpointsNamespace
|
||||||
|
*out = new(string)
|
||||||
|
**out = **in
|
||||||
|
}
|
||||||
|
return
|
||||||
|
}
|
||||||
|
|
||||||
|
// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new GlusterfsPersistentVolumeSource.
|
||||||
|
func (in *GlusterfsPersistentVolumeSource) DeepCopy() *GlusterfsPersistentVolumeSource {
|
||||||
|
if in == nil {
|
||||||
|
return nil
|
||||||
|
}
|
||||||
|
out := new(GlusterfsPersistentVolumeSource)
|
||||||
|
in.DeepCopyInto(out)
|
||||||
|
return out
|
||||||
|
}
|
||||||
|
|
||||||
// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.
|
// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.
|
||||||
func (in *GlusterfsVolumeSource) DeepCopyInto(out *GlusterfsVolumeSource) {
|
func (in *GlusterfsVolumeSource) DeepCopyInto(out *GlusterfsVolumeSource) {
|
||||||
*out = *in
|
*out = *in
|
||||||
@@ -2808,8 +2829,8 @@ func (in *PersistentVolumeSource) DeepCopyInto(out *PersistentVolumeSource) {
|
|||||||
}
|
}
|
||||||
if in.Glusterfs != nil {
|
if in.Glusterfs != nil {
|
||||||
in, out := &in.Glusterfs, &out.Glusterfs
|
in, out := &in.Glusterfs, &out.Glusterfs
|
||||||
*out = new(GlusterfsVolumeSource)
|
*out = new(GlusterfsPersistentVolumeSource)
|
||||||
**out = **in
|
(*in).DeepCopyInto(*out)
|
||||||
}
|
}
|
||||||
if in.NFS != nil {
|
if in.NFS != nil {
|
||||||
in, out := &in.NFS, &out.NFS
|
in, out := &in.NFS, &out.NFS
|
||||||
@@ -3556,6 +3577,11 @@ func (in *PodSpec) DeepCopyInto(out *PodSpec) {
|
|||||||
*out = new(string)
|
*out = new(string)
|
||||||
**out = **in
|
**out = **in
|
||||||
}
|
}
|
||||||
|
if in.EnableServiceLinks != nil {
|
||||||
|
in, out := &in.EnableServiceLinks, &out.EnableServiceLinks
|
||||||
|
*out = new(bool)
|
||||||
|
**out = **in
|
||||||
|
}
|
||||||
return
|
return
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
19
vendor/k8s.io/kubernetes/pkg/fieldpath/doc.go
generated
vendored
Normal file
19
vendor/k8s.io/kubernetes/pkg/fieldpath/doc.go
generated
vendored
Normal file
@@ -0,0 +1,19 @@
|
|||||||
|
/*
|
||||||
|
Copyright 2015 The Kubernetes Authors.
|
||||||
|
|
||||||
|
Licensed under the Apache License, Version 2.0 (the "License");
|
||||||
|
you may not use this file except in compliance with the License.
|
||||||
|
You may obtain a copy of the License at
|
||||||
|
|
||||||
|
http://www.apache.org/licenses/LICENSE-2.0
|
||||||
|
|
||||||
|
Unless required by applicable law or agreed to in writing, software
|
||||||
|
distributed under the License is distributed on an "AS IS" BASIS,
|
||||||
|
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||||
|
See the License for the specific language governing permissions and
|
||||||
|
limitations under the License.
|
||||||
|
*/
|
||||||
|
|
||||||
|
// Package fieldpath supplies methods for extracting fields from objects
|
||||||
|
// given a path to a field.
|
||||||
|
package fieldpath // import "k8s.io/kubernetes/pkg/fieldpath"
|
||||||
109
vendor/k8s.io/kubernetes/pkg/fieldpath/fieldpath.go
generated
vendored
Normal file
109
vendor/k8s.io/kubernetes/pkg/fieldpath/fieldpath.go
generated
vendored
Normal file
@@ -0,0 +1,109 @@
|
|||||||
|
/*
|
||||||
|
Copyright 2015 The Kubernetes Authors.
|
||||||
|
|
||||||
|
Licensed under the Apache License, Version 2.0 (the "License");
|
||||||
|
you may not use this file except in compliance with the License.
|
||||||
|
You may obtain a copy of the License at
|
||||||
|
|
||||||
|
http://www.apache.org/licenses/LICENSE-2.0
|
||||||
|
|
||||||
|
Unless required by applicable law or agreed to in writing, software
|
||||||
|
distributed under the License is distributed on an "AS IS" BASIS,
|
||||||
|
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||||
|
See the License for the specific language governing permissions and
|
||||||
|
limitations under the License.
|
||||||
|
*/
|
||||||
|
|
||||||
|
package fieldpath
|
||||||
|
|
||||||
|
import (
|
||||||
|
"fmt"
|
||||||
|
"strings"
|
||||||
|
|
||||||
|
"k8s.io/apimachinery/pkg/api/meta"
|
||||||
|
"k8s.io/apimachinery/pkg/util/sets"
|
||||||
|
"k8s.io/apimachinery/pkg/util/validation"
|
||||||
|
)
|
||||||
|
|
||||||
|
// FormatMap formats map[string]string to a string.
|
||||||
|
func FormatMap(m map[string]string) (fmtStr string) {
|
||||||
|
// output with keys in sorted order to provide stable output
|
||||||
|
keys := sets.NewString()
|
||||||
|
for key := range m {
|
||||||
|
keys.Insert(key)
|
||||||
|
}
|
||||||
|
for _, key := range keys.List() {
|
||||||
|
fmtStr += fmt.Sprintf("%v=%q\n", key, m[key])
|
||||||
|
}
|
||||||
|
fmtStr = strings.TrimSuffix(fmtStr, "\n")
|
||||||
|
|
||||||
|
return
|
||||||
|
}
|
||||||
|
|
||||||
|
// ExtractFieldPathAsString extracts the field from the given object
|
||||||
|
// and returns it as a string. The object must be a pointer to an
|
||||||
|
// API type.
|
||||||
|
func ExtractFieldPathAsString(obj interface{}, fieldPath string) (string, error) {
|
||||||
|
accessor, err := meta.Accessor(obj)
|
||||||
|
if err != nil {
|
||||||
|
return "", nil
|
||||||
|
}
|
||||||
|
|
||||||
|
if path, subscript, ok := SplitMaybeSubscriptedPath(fieldPath); ok {
|
||||||
|
switch path {
|
||||||
|
case "metadata.annotations":
|
||||||
|
if errs := validation.IsQualifiedName(strings.ToLower(subscript)); len(errs) != 0 {
|
||||||
|
return "", fmt.Errorf("invalid key subscript in %s: %s", fieldPath, strings.Join(errs, ";"))
|
||||||
|
}
|
||||||
|
return accessor.GetAnnotations()[subscript], nil
|
||||||
|
case "metadata.labels":
|
||||||
|
if errs := validation.IsQualifiedName(subscript); len(errs) != 0 {
|
||||||
|
return "", fmt.Errorf("invalid key subscript in %s: %s", fieldPath, strings.Join(errs, ";"))
|
||||||
|
}
|
||||||
|
return accessor.GetLabels()[subscript], nil
|
||||||
|
default:
|
||||||
|
return "", fmt.Errorf("fieldPath %q does not support subscript", fieldPath)
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
switch fieldPath {
|
||||||
|
case "metadata.annotations":
|
||||||
|
return FormatMap(accessor.GetAnnotations()), nil
|
||||||
|
case "metadata.labels":
|
||||||
|
return FormatMap(accessor.GetLabels()), nil
|
||||||
|
case "metadata.name":
|
||||||
|
return accessor.GetName(), nil
|
||||||
|
case "metadata.namespace":
|
||||||
|
return accessor.GetNamespace(), nil
|
||||||
|
case "metadata.uid":
|
||||||
|
return string(accessor.GetUID()), nil
|
||||||
|
}
|
||||||
|
|
||||||
|
return "", fmt.Errorf("unsupported fieldPath: %v", fieldPath)
|
||||||
|
}
|
||||||
|
|
||||||
|
// SplitMaybeSubscriptedPath checks whether the specified fieldPath is
|
||||||
|
// subscripted, and
|
||||||
|
// - if yes, this function splits the fieldPath into path and subscript, and
|
||||||
|
// returns (path, subscript, true).
|
||||||
|
// - if no, this function returns (fieldPath, "", false).
|
||||||
|
//
|
||||||
|
// Example inputs and outputs:
|
||||||
|
// - "metadata.annotations['myKey']" --> ("metadata.annotations", "myKey", true)
|
||||||
|
// - "metadata.annotations['a[b]c']" --> ("metadata.annotations", "a[b]c", true)
|
||||||
|
// - "metadata.labels['']" --> ("metadata.labels", "", true)
|
||||||
|
// - "metadata.labels" --> ("metadata.labels", "", false)
|
||||||
|
func SplitMaybeSubscriptedPath(fieldPath string) (string, string, bool) {
|
||||||
|
if !strings.HasSuffix(fieldPath, "']") {
|
||||||
|
return fieldPath, "", false
|
||||||
|
}
|
||||||
|
s := strings.TrimSuffix(fieldPath, "']")
|
||||||
|
parts := strings.SplitN(s, "['", 2)
|
||||||
|
if len(parts) < 2 {
|
||||||
|
return fieldPath, "", false
|
||||||
|
}
|
||||||
|
if len(parts[0]) == 0 {
|
||||||
|
return fieldPath, "", false
|
||||||
|
}
|
||||||
|
return parts[0], parts[1], true
|
||||||
|
}
|
||||||
3013
vendor/k8s.io/kubernetes/pkg/kubelet/apis/cri/runtime/v1alpha2/api.pb.go
generated
vendored
3013
vendor/k8s.io/kubernetes/pkg/kubelet/apis/cri/runtime/v1alpha2/api.pb.go
generated
vendored
File diff suppressed because it is too large
Load Diff
9
vendor/k8s.io/kubernetes/pkg/kubelet/server/remotecommand/httpstream.go
generated
vendored
9
vendor/k8s.io/kubernetes/pkg/kubelet/server/remotecommand/httpstream.go
generated
vendored
@@ -34,7 +34,7 @@ import (
|
|||||||
"k8s.io/client-go/tools/remotecommand"
|
"k8s.io/client-go/tools/remotecommand"
|
||||||
api "k8s.io/kubernetes/pkg/apis/core"
|
api "k8s.io/kubernetes/pkg/apis/core"
|
||||||
|
|
||||||
"github.com/golang/glog"
|
"k8s.io/klog"
|
||||||
)
|
)
|
||||||
|
|
||||||
// Options contains details about which streams are required for
|
// Options contains details about which streams are required for
|
||||||
@@ -54,7 +54,7 @@ func NewOptions(req *http.Request) (*Options, error) {
|
|||||||
stderr := req.FormValue(api.ExecStderrParam) == "1"
|
stderr := req.FormValue(api.ExecStderrParam) == "1"
|
||||||
if tty && stderr {
|
if tty && stderr {
|
||||||
// TODO: make this an error before we reach this method
|
// TODO: make this an error before we reach this method
|
||||||
glog.V(4).Infof("Access to exec with tty and stderr is not supported, bypassing stderr")
|
klog.V(4).Infof("Access to exec with tty and stderr is not supported, bypassing stderr")
|
||||||
stderr = false
|
stderr = false
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -125,8 +125,7 @@ func createStreams(req *http.Request, w http.ResponseWriter, opts *Options, supp
|
|||||||
func createHttpStreamStreams(req *http.Request, w http.ResponseWriter, opts *Options, supportedStreamProtocols []string, idleTimeout, streamCreationTimeout time.Duration) (*context, bool) {
|
func createHttpStreamStreams(req *http.Request, w http.ResponseWriter, opts *Options, supportedStreamProtocols []string, idleTimeout, streamCreationTimeout time.Duration) (*context, bool) {
|
||||||
protocol, err := httpstream.Handshake(req, w, supportedStreamProtocols)
|
protocol, err := httpstream.Handshake(req, w, supportedStreamProtocols)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
w.WriteHeader(http.StatusBadRequest)
|
http.Error(w, err.Error(), http.StatusBadRequest)
|
||||||
fmt.Fprint(w, err.Error())
|
|
||||||
return nil, false
|
return nil, false
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -156,7 +155,7 @@ func createHttpStreamStreams(req *http.Request, w http.ResponseWriter, opts *Opt
|
|||||||
case remotecommandconsts.StreamProtocolV2Name:
|
case remotecommandconsts.StreamProtocolV2Name:
|
||||||
handler = &v2ProtocolHandler{}
|
handler = &v2ProtocolHandler{}
|
||||||
case "":
|
case "":
|
||||||
glog.V(4).Infof("Client did not request protocol negotiation. Falling back to %q", remotecommandconsts.StreamProtocolV1Name)
|
klog.V(4).Infof("Client did not request protocol negotiation. Falling back to %q", remotecommandconsts.StreamProtocolV1Name)
|
||||||
fallthrough
|
fallthrough
|
||||||
case remotecommandconsts.StreamProtocolV1Name:
|
case remotecommandconsts.StreamProtocolV1Name:
|
||||||
handler = &v1ProtocolHandler{}
|
handler = &v1ProtocolHandler{}
|
||||||
|
|||||||
201
vendor/k8s.io/kubernetes/staging/src/k8s.io/cloud-provider/LICENSE
generated
vendored
Normal file
201
vendor/k8s.io/kubernetes/staging/src/k8s.io/cloud-provider/LICENSE
generated
vendored
Normal file
@@ -0,0 +1,201 @@
|
|||||||
|
Apache License
|
||||||
|
Version 2.0, January 2004
|
||||||
|
http://www.apache.org/licenses/
|
||||||
|
|
||||||
|
TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION
|
||||||
|
|
||||||
|
1. Definitions.
|
||||||
|
|
||||||
|
"License" shall mean the terms and conditions for use, reproduction,
|
||||||
|
and distribution as defined by Sections 1 through 9 of this document.
|
||||||
|
|
||||||
|
"Licensor" shall mean the copyright owner or entity authorized by
|
||||||
|
the copyright owner that is granting the License.
|
||||||
|
|
||||||
|
"Legal Entity" shall mean the union of the acting entity and all
|
||||||
|
other entities that control, are controlled by, or are under common
|
||||||
|
control with that entity. For the purposes of this definition,
|
||||||
|
"control" means (i) the power, direct or indirect, to cause the
|
||||||
|
direction or management of such entity, whether by contract or
|
||||||
|
otherwise, or (ii) ownership of fifty percent (50%) or more of the
|
||||||
|
outstanding shares, or (iii) beneficial ownership of such entity.
|
||||||
|
|
||||||
|
"You" (or "Your") shall mean an individual or Legal Entity
|
||||||
|
exercising permissions granted by this License.
|
||||||
|
|
||||||
|
"Source" form shall mean the preferred form for making modifications,
|
||||||
|
including but not limited to software source code, documentation
|
||||||
|
source, and configuration files.
|
||||||
|
|
||||||
|
"Object" form shall mean any form resulting from mechanical
|
||||||
|
transformation or translation of a Source form, including but
|
||||||
|
not limited to compiled object code, generated documentation,
|
||||||
|
and conversions to other media types.
|
||||||
|
|
||||||
|
"Work" shall mean the work of authorship, whether in Source or
|
||||||
|
Object form, made available under the License, as indicated by a
|
||||||
|
copyright notice that is included in or attached to the work
|
||||||
|
(an example is provided in the Appendix below).
|
||||||
|
|
||||||
|
"Derivative Works" shall mean any work, whether in Source or Object
|
||||||
|
form, that is based on (or derived from) the Work and for which the
|
||||||
|
editorial revisions, annotations, elaborations, or other modifications
|
||||||
|
represent, as a whole, an original work of authorship. For the purposes
|
||||||
|
of this License, Derivative Works shall not include works that remain
|
||||||
|
separable from, or merely link (or bind by name) to the interfaces of,
|
||||||
|
the Work and Derivative Works thereof.
|
||||||
|
|
||||||
|
"Contribution" shall mean any work of authorship, including
|
||||||
|
the original version of the Work and any modifications or additions
|
||||||
|
to that Work or Derivative Works thereof, that is intentionally
|
||||||
|
submitted to Licensor for inclusion in the Work by the copyright owner
|
||||||
|
or by an individual or Legal Entity authorized to submit on behalf of
|
||||||
|
the copyright owner. For the purposes of this definition, "submitted"
|
||||||
|
means any form of electronic, verbal, or written communication sent
|
||||||
|
to the Licensor or its representatives, including but not limited to
|
||||||
|
communication on electronic mailing lists, source code control systems,
|
||||||
|
and issue tracking systems that are managed by, or on behalf of, the
|
||||||
|
Licensor for the purpose of discussing and improving the Work, but
|
||||||
|
excluding communication that is conspicuously marked or otherwise
|
||||||
|
designated in writing by the copyright owner as "Not a Contribution."
|
||||||
|
|
||||||
|
"Contributor" shall mean Licensor and any individual or Legal Entity
|
||||||
|
on behalf of whom a Contribution has been received by Licensor and
|
||||||
|
subsequently incorporated within the Work.
|
||||||
|
|
||||||
|
2. Grant of Copyright License. Subject to the terms and conditions of
|
||||||
|
this License, each Contributor hereby grants to You a perpetual,
|
||||||
|
worldwide, non-exclusive, no-charge, royalty-free, irrevocable
|
||||||
|
copyright license to reproduce, prepare Derivative Works of,
|
||||||
|
publicly display, publicly perform, sublicense, and distribute the
|
||||||
|
Work and such Derivative Works in Source or Object form.
|
||||||
|
|
||||||
|
3. Grant of Patent License. Subject to the terms and conditions of
|
||||||
|
this License, each Contributor hereby grants to You a perpetual,
|
||||||
|
worldwide, non-exclusive, no-charge, royalty-free, irrevocable
|
||||||
|
(except as stated in this section) patent license to make, have made,
|
||||||
|
use, offer to sell, sell, import, and otherwise transfer the Work,
|
||||||
|
where such license applies only to those patent claims licensable
|
||||||
|
by such Contributor that are necessarily infringed by their
|
||||||
|
Contribution(s) alone or by combination of their Contribution(s)
|
||||||
|
with the Work to which such Contribution(s) was submitted. If You
|
||||||
|
institute patent litigation against any entity (including a
|
||||||
|
cross-claim or counterclaim in a lawsuit) alleging that the Work
|
||||||
|
or a Contribution incorporated within the Work constitutes direct
|
||||||
|
or contributory patent infringement, then any patent licenses
|
||||||
|
granted to You under this License for that Work shall terminate
|
||||||
|
as of the date such litigation is filed.
|
||||||
|
|
||||||
|
4. Redistribution. You may reproduce and distribute copies of the
|
||||||
|
Work or Derivative Works thereof in any medium, with or without
|
||||||
|
modifications, and in Source or Object form, provided that You
|
||||||
|
meet the following conditions:
|
||||||
|
|
||||||
|
(a) You must give any other recipients of the Work or
|
||||||
|
Derivative Works a copy of this License; and
|
||||||
|
|
||||||
|
(b) You must cause any modified files to carry prominent notices
|
||||||
|
stating that You changed the files; and
|
||||||
|
|
||||||
|
(c) You must retain, in the Source form of any Derivative Works
|
||||||
|
that You distribute, all copyright, patent, trademark, and
|
||||||
|
attribution notices from the Source form of the Work,
|
||||||
|
excluding those notices that do not pertain to any part of
|
||||||
|
the Derivative Works; and
|
||||||
|
|
||||||
|
(d) If the Work includes a "NOTICE" text file as part of its
|
||||||
|
distribution, then any Derivative Works that You distribute must
|
||||||
|
include a readable copy of the attribution notices contained
|
||||||
|
within such NOTICE file, excluding those notices that do not
|
||||||
|
pertain to any part of the Derivative Works, in at least one
|
||||||
|
of the following places: within a NOTICE text file distributed
|
||||||
|
as part of the Derivative Works; within the Source form or
|
||||||
|
documentation, if provided along with the Derivative Works; or,
|
||||||
|
within a display generated by the Derivative Works, if and
|
||||||
|
wherever such third-party notices normally appear. The contents
|
||||||
|
of the NOTICE file are for informational purposes only and
|
||||||
|
do not modify the License. You may add Your own attribution
|
||||||
|
notices within Derivative Works that You distribute, alongside
|
||||||
|
or as an addendum to the NOTICE text from the Work, provided
|
||||||
|
that such additional attribution notices cannot be construed
|
||||||
|
as modifying the License.
|
||||||
|
|
||||||
|
You may add Your own copyright statement to Your modifications and
|
||||||
|
may provide additional or different license terms and conditions
|
||||||
|
for use, reproduction, or distribution of Your modifications, or
|
||||||
|
for any such Derivative Works as a whole, provided Your use,
|
||||||
|
reproduction, and distribution of the Work otherwise complies with
|
||||||
|
the conditions stated in this License.
|
||||||
|
|
||||||
|
5. Submission of Contributions. Unless You explicitly state otherwise,
|
||||||
|
any Contribution intentionally submitted for inclusion in the Work
|
||||||
|
by You to the Licensor shall be under the terms and conditions of
|
||||||
|
this License, without any additional terms or conditions.
|
||||||
|
Notwithstanding the above, nothing herein shall supersede or modify
|
||||||
|
the terms of any separate license agreement you may have executed
|
||||||
|
with Licensor regarding such Contributions.
|
||||||
|
|
||||||
|
6. Trademarks. This License does not grant permission to use the trade
|
||||||
|
names, trademarks, service marks, or product names of the Licensor,
|
||||||
|
except as required for reasonable and customary use in describing the
|
||||||
|
origin of the Work and reproducing the content of the NOTICE file.
|
||||||
|
|
||||||
|
7. Disclaimer of Warranty. Unless required by applicable law or
|
||||||
|
agreed to in writing, Licensor provides the Work (and each
|
||||||
|
Contributor provides its Contributions) on an "AS IS" BASIS,
|
||||||
|
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or
|
||||||
|
implied, including, without limitation, any warranties or conditions
|
||||||
|
of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A
|
||||||
|
PARTICULAR PURPOSE. You are solely responsible for determining the
|
||||||
|
appropriateness of using or redistributing the Work and assume any
|
||||||
|
risks associated with Your exercise of permissions under this License.
|
||||||
|
|
||||||
|
8. Limitation of Liability. In no event and under no legal theory,
|
||||||
|
whether in tort (including negligence), contract, or otherwise,
|
||||||
|
unless required by applicable law (such as deliberate and grossly
|
||||||
|
negligent acts) or agreed to in writing, shall any Contributor be
|
||||||
|
liable to You for damages, including any direct, indirect, special,
|
||||||
|
incidental, or consequential damages of any character arising as a
|
||||||
|
result of this License or out of the use or inability to use the
|
||||||
|
Work (including but not limited to damages for loss of goodwill,
|
||||||
|
work stoppage, computer failure or malfunction, or any and all
|
||||||
|
other commercial damages or losses), even if such Contributor
|
||||||
|
has been advised of the possibility of such damages.
|
||||||
|
|
||||||
|
9. Accepting Warranty or Additional Liability. While redistributing
|
||||||
|
the Work or Derivative Works thereof, You may choose to offer,
|
||||||
|
and charge a fee for, acceptance of support, warranty, indemnity,
|
||||||
|
or other liability obligations and/or rights consistent with this
|
||||||
|
License. However, in accepting such obligations, You may act only
|
||||||
|
on Your own behalf and on Your sole responsibility, not on behalf
|
||||||
|
of any other Contributor, and only if You agree to indemnify,
|
||||||
|
defend, and hold each Contributor harmless for any liability
|
||||||
|
incurred by, or claims asserted against, such Contributor by reason
|
||||||
|
of your accepting any such warranty or additional liability.
|
||||||
|
|
||||||
|
END OF TERMS AND CONDITIONS
|
||||||
|
|
||||||
|
APPENDIX: How to apply the Apache License to your work.
|
||||||
|
|
||||||
|
To apply the Apache License to your work, attach the following
|
||||||
|
boilerplate notice, with the fields enclosed by brackets "{}"
|
||||||
|
replaced with your own identifying information. (Don't include
|
||||||
|
the brackets!) The text should be enclosed in the appropriate
|
||||||
|
comment syntax for the file format. We also recommend that a
|
||||||
|
file or class name and description of purpose be included on the
|
||||||
|
same "printed page" as the copyright notice for easier
|
||||||
|
identification within third-party archives.
|
||||||
|
|
||||||
|
Copyright {yyyy} {name of copyright owner}
|
||||||
|
|
||||||
|
Licensed under the Apache License, Version 2.0 (the "License");
|
||||||
|
you may not use this file except in compliance with the License.
|
||||||
|
You may obtain a copy of the License at
|
||||||
|
|
||||||
|
http://www.apache.org/licenses/LICENSE-2.0
|
||||||
|
|
||||||
|
Unless required by applicable law or agreed to in writing, software
|
||||||
|
distributed under the License is distributed on an "AS IS" BASIS,
|
||||||
|
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||||
|
See the License for the specific language governing permissions and
|
||||||
|
limitations under the License.
|
||||||
202
vendor/k8s.io/kubernetes/staging/src/k8s.io/cluster-bootstrap/LICENSE
generated
vendored
Normal file
202
vendor/k8s.io/kubernetes/staging/src/k8s.io/cluster-bootstrap/LICENSE
generated
vendored
Normal file
@@ -0,0 +1,202 @@
|
|||||||
|
|
||||||
|
Apache License
|
||||||
|
Version 2.0, January 2004
|
||||||
|
http://www.apache.org/licenses/
|
||||||
|
|
||||||
|
TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION
|
||||||
|
|
||||||
|
1. Definitions.
|
||||||
|
|
||||||
|
"License" shall mean the terms and conditions for use, reproduction,
|
||||||
|
and distribution as defined by Sections 1 through 9 of this document.
|
||||||
|
|
||||||
|
"Licensor" shall mean the copyright owner or entity authorized by
|
||||||
|
the copyright owner that is granting the License.
|
||||||
|
|
||||||
|
"Legal Entity" shall mean the union of the acting entity and all
|
||||||
|
other entities that control, are controlled by, or are under common
|
||||||
|
control with that entity. For the purposes of this definition,
|
||||||
|
"control" means (i) the power, direct or indirect, to cause the
|
||||||
|
direction or management of such entity, whether by contract or
|
||||||
|
otherwise, or (ii) ownership of fifty percent (50%) or more of the
|
||||||
|
outstanding shares, or (iii) beneficial ownership of such entity.
|
||||||
|
|
||||||
|
"You" (or "Your") shall mean an individual or Legal Entity
|
||||||
|
exercising permissions granted by this License.
|
||||||
|
|
||||||
|
"Source" form shall mean the preferred form for making modifications,
|
||||||
|
including but not limited to software source code, documentation
|
||||||
|
source, and configuration files.
|
||||||
|
|
||||||
|
"Object" form shall mean any form resulting from mechanical
|
||||||
|
transformation or translation of a Source form, including but
|
||||||
|
not limited to compiled object code, generated documentation,
|
||||||
|
and conversions to other media types.
|
||||||
|
|
||||||
|
"Work" shall mean the work of authorship, whether in Source or
|
||||||
|
Object form, made available under the License, as indicated by a
|
||||||
|
copyright notice that is included in or attached to the work
|
||||||
|
(an example is provided in the Appendix below).
|
||||||
|
|
||||||
|
"Derivative Works" shall mean any work, whether in Source or Object
|
||||||
|
form, that is based on (or derived from) the Work and for which the
|
||||||
|
editorial revisions, annotations, elaborations, or other modifications
|
||||||
|
represent, as a whole, an original work of authorship. For the purposes
|
||||||
|
of this License, Derivative Works shall not include works that remain
|
||||||
|
separable from, or merely link (or bind by name) to the interfaces of,
|
||||||
|
the Work and Derivative Works thereof.
|
||||||
|
|
||||||
|
"Contribution" shall mean any work of authorship, including
|
||||||
|
the original version of the Work and any modifications or additions
|
||||||
|
to that Work or Derivative Works thereof, that is intentionally
|
||||||
|
submitted to Licensor for inclusion in the Work by the copyright owner
|
||||||
|
or by an individual or Legal Entity authorized to submit on behalf of
|
||||||
|
the copyright owner. For the purposes of this definition, "submitted"
|
||||||
|
means any form of electronic, verbal, or written communication sent
|
||||||
|
to the Licensor or its representatives, including but not limited to
|
||||||
|
communication on electronic mailing lists, source code control systems,
|
||||||
|
and issue tracking systems that are managed by, or on behalf of, the
|
||||||
|
Licensor for the purpose of discussing and improving the Work, but
|
||||||
|
excluding communication that is conspicuously marked or otherwise
|
||||||
|
designated in writing by the copyright owner as "Not a Contribution."
|
||||||
|
|
||||||
|
"Contributor" shall mean Licensor and any individual or Legal Entity
|
||||||
|
on behalf of whom a Contribution has been received by Licensor and
|
||||||
|
subsequently incorporated within the Work.
|
||||||
|
|
||||||
|
2. Grant of Copyright License. Subject to the terms and conditions of
|
||||||
|
this License, each Contributor hereby grants to You a perpetual,
|
||||||
|
worldwide, non-exclusive, no-charge, royalty-free, irrevocable
|
||||||
|
copyright license to reproduce, prepare Derivative Works of,
|
||||||
|
publicly display, publicly perform, sublicense, and distribute the
|
||||||
|
Work and such Derivative Works in Source or Object form.
|
||||||
|
|
||||||
|
3. Grant of Patent License. Subject to the terms and conditions of
|
||||||
|
this License, each Contributor hereby grants to You a perpetual,
|
||||||
|
worldwide, non-exclusive, no-charge, royalty-free, irrevocable
|
||||||
|
(except as stated in this section) patent license to make, have made,
|
||||||
|
use, offer to sell, sell, import, and otherwise transfer the Work,
|
||||||
|
where such license applies only to those patent claims licensable
|
||||||
|
by such Contributor that are necessarily infringed by their
|
||||||
|
Contribution(s) alone or by combination of their Contribution(s)
|
||||||
|
with the Work to which such Contribution(s) was submitted. If You
|
||||||
|
institute patent litigation against any entity (including a
|
||||||
|
cross-claim or counterclaim in a lawsuit) alleging that the Work
|
||||||
|
or a Contribution incorporated within the Work constitutes direct
|
||||||
|
or contributory patent infringement, then any patent licenses
|
||||||
|
granted to You under this License for that Work shall terminate
|
||||||
|
as of the date such litigation is filed.
|
||||||
|
|
||||||
|
4. Redistribution. You may reproduce and distribute copies of the
|
||||||
|
Work or Derivative Works thereof in any medium, with or without
|
||||||
|
modifications, and in Source or Object form, provided that You
|
||||||
|
meet the following conditions:
|
||||||
|
|
||||||
|
(a) You must give any other recipients of the Work or
|
||||||
|
Derivative Works a copy of this License; and
|
||||||
|
|
||||||
|
(b) You must cause any modified files to carry prominent notices
|
||||||
|
stating that You changed the files; and
|
||||||
|
|
||||||
|
(c) You must retain, in the Source form of any Derivative Works
|
||||||
|
that You distribute, all copyright, patent, trademark, and
|
||||||
|
attribution notices from the Source form of the Work,
|
||||||
|
excluding those notices that do not pertain to any part of
|
||||||
|
the Derivative Works; and
|
||||||
|
|
||||||
|
(d) If the Work includes a "NOTICE" text file as part of its
|
||||||
|
distribution, then any Derivative Works that You distribute must
|
||||||
|
include a readable copy of the attribution notices contained
|
||||||
|
within such NOTICE file, excluding those notices that do not
|
||||||
|
pertain to any part of the Derivative Works, in at least one
|
||||||
|
of the following places: within a NOTICE text file distributed
|
||||||
|
as part of the Derivative Works; within the Source form or
|
||||||
|
documentation, if provided along with the Derivative Works; or,
|
||||||
|
within a display generated by the Derivative Works, if and
|
||||||
|
wherever such third-party notices normally appear. The contents
|
||||||
|
of the NOTICE file are for informational purposes only and
|
||||||
|
do not modify the License. You may add Your own attribution
|
||||||
|
notices within Derivative Works that You distribute, alongside
|
||||||
|
or as an addendum to the NOTICE text from the Work, provided
|
||||||
|
that such additional attribution notices cannot be construed
|
||||||
|
as modifying the License.
|
||||||
|
|
||||||
|
You may add Your own copyright statement to Your modifications and
|
||||||
|
may provide additional or different license terms and conditions
|
||||||
|
for use, reproduction, or distribution of Your modifications, or
|
||||||
|
for any such Derivative Works as a whole, provided Your use,
|
||||||
|
reproduction, and distribution of the Work otherwise complies with
|
||||||
|
the conditions stated in this License.
|
||||||
|
|
||||||
|
5. Submission of Contributions. Unless You explicitly state otherwise,
|
||||||
|
any Contribution intentionally submitted for inclusion in the Work
|
||||||
|
by You to the Licensor shall be under the terms and conditions of
|
||||||
|
this License, without any additional terms or conditions.
|
||||||
|
Notwithstanding the above, nothing herein shall supersede or modify
|
||||||
|
the terms of any separate license agreement you may have executed
|
||||||
|
with Licensor regarding such Contributions.
|
||||||
|
|
||||||
|
6. Trademarks. This License does not grant permission to use the trade
|
||||||
|
names, trademarks, service marks, or product names of the Licensor,
|
||||||
|
except as required for reasonable and customary use in describing the
|
||||||
|
origin of the Work and reproducing the content of the NOTICE file.
|
||||||
|
|
||||||
|
7. Disclaimer of Warranty. Unless required by applicable law or
|
||||||
|
agreed to in writing, Licensor provides the Work (and each
|
||||||
|
Contributor provides its Contributions) on an "AS IS" BASIS,
|
||||||
|
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or
|
||||||
|
implied, including, without limitation, any warranties or conditions
|
||||||
|
of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A
|
||||||
|
PARTICULAR PURPOSE. You are solely responsible for determining the
|
||||||
|
appropriateness of using or redistributing the Work and assume any
|
||||||
|
risks associated with Your exercise of permissions under this License.
|
||||||
|
|
||||||
|
8. Limitation of Liability. In no event and under no legal theory,
|
||||||
|
whether in tort (including negligence), contract, or otherwise,
|
||||||
|
unless required by applicable law (such as deliberate and grossly
|
||||||
|
negligent acts) or agreed to in writing, shall any Contributor be
|
||||||
|
liable to You for damages, including any direct, indirect, special,
|
||||||
|
incidental, or consequential damages of any character arising as a
|
||||||
|
result of this License or out of the use or inability to use the
|
||||||
|
Work (including but not limited to damages for loss of goodwill,
|
||||||
|
work stoppage, computer failure or malfunction, or any and all
|
||||||
|
other commercial damages or losses), even if such Contributor
|
||||||
|
has been advised of the possibility of such damages.
|
||||||
|
|
||||||
|
9. Accepting Warranty or Additional Liability. While redistributing
|
||||||
|
the Work or Derivative Works thereof, You may choose to offer,
|
||||||
|
and charge a fee for, acceptance of support, warranty, indemnity,
|
||||||
|
or other liability obligations and/or rights consistent with this
|
||||||
|
License. However, in accepting such obligations, You may act only
|
||||||
|
on Your own behalf and on Your sole responsibility, not on behalf
|
||||||
|
of any other Contributor, and only if You agree to indemnify,
|
||||||
|
defend, and hold each Contributor harmless for any liability
|
||||||
|
incurred by, or claims asserted against, such Contributor by reason
|
||||||
|
of your accepting any such warranty or additional liability.
|
||||||
|
|
||||||
|
END OF TERMS AND CONDITIONS
|
||||||
|
|
||||||
|
APPENDIX: How to apply the Apache License to your work.
|
||||||
|
|
||||||
|
To apply the Apache License to your work, attach the following
|
||||||
|
boilerplate notice, with the fields enclosed by brackets "[]"
|
||||||
|
replaced with your own identifying information. (Don't include
|
||||||
|
the brackets!) The text should be enclosed in the appropriate
|
||||||
|
comment syntax for the file format. We also recommend that a
|
||||||
|
file or class name and description of purpose be included on the
|
||||||
|
same "printed page" as the copyright notice for easier
|
||||||
|
identification within third-party archives.
|
||||||
|
|
||||||
|
Copyright [yyyy] [name of copyright owner]
|
||||||
|
|
||||||
|
Licensed under the Apache License, Version 2.0 (the "License");
|
||||||
|
you may not use this file except in compliance with the License.
|
||||||
|
You may obtain a copy of the License at
|
||||||
|
|
||||||
|
http://www.apache.org/licenses/LICENSE-2.0
|
||||||
|
|
||||||
|
Unless required by applicable law or agreed to in writing, software
|
||||||
|
distributed under the License is distributed on an "AS IS" BASIS,
|
||||||
|
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||||
|
See the License for the specific language governing permissions and
|
||||||
|
limitations under the License.
|
||||||
28
vendor/k8s.io/kubernetes/third_party/forked/godep/License
generated
vendored
Normal file
28
vendor/k8s.io/kubernetes/third_party/forked/godep/License
generated
vendored
Normal file
@@ -0,0 +1,28 @@
|
|||||||
|
Copyright © 2013 Keith Rarick.
|
||||||
|
Portions Copyright (c) 2012 The Go Authors. All rights reserved.
|
||||||
|
|
||||||
|
Redistribution and use in source and binary forms, with or without
|
||||||
|
modification, are permitted provided that the following conditions are
|
||||||
|
met:
|
||||||
|
|
||||||
|
* Redistributions of source code must retain the above copyright
|
||||||
|
notice, this list of conditions and the following disclaimer.
|
||||||
|
* Redistributions in binary form must reproduce the above
|
||||||
|
copyright notice, this list of conditions and the following disclaimer
|
||||||
|
in the documentation and/or other materials provided with the
|
||||||
|
distribution.
|
||||||
|
* Neither the name of Google Inc. nor the names of its
|
||||||
|
contributors may be used to endorse or promote products derived from
|
||||||
|
this software without specific prior written permission.
|
||||||
|
|
||||||
|
THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
|
||||||
|
"AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
|
||||||
|
LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
|
||||||
|
A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
|
||||||
|
OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
|
||||||
|
SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
|
||||||
|
LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
|
||||||
|
DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
|
||||||
|
THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
|
||||||
|
(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
|
||||||
|
OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
|
||||||
27
vendor/k8s.io/kubernetes/third_party/go-srcimporter/LICENSE
generated
vendored
Normal file
27
vendor/k8s.io/kubernetes/third_party/go-srcimporter/LICENSE
generated
vendored
Normal file
@@ -0,0 +1,27 @@
|
|||||||
|
Copyright (c) 2009 The Go Authors. All rights reserved.
|
||||||
|
|
||||||
|
Redistribution and use in source and binary forms, with or without
|
||||||
|
modification, are permitted provided that the following conditions are
|
||||||
|
met:
|
||||||
|
|
||||||
|
* Redistributions of source code must retain the above copyright
|
||||||
|
notice, this list of conditions and the following disclaimer.
|
||||||
|
* Redistributions in binary form must reproduce the above
|
||||||
|
copyright notice, this list of conditions and the following disclaimer
|
||||||
|
in the documentation and/or other materials provided with the
|
||||||
|
distribution.
|
||||||
|
* Neither the name of Google Inc. nor the names of its
|
||||||
|
contributors may be used to endorse or promote products derived from
|
||||||
|
this software without specific prior written permission.
|
||||||
|
|
||||||
|
THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
|
||||||
|
"AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
|
||||||
|
LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
|
||||||
|
A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
|
||||||
|
OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
|
||||||
|
SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
|
||||||
|
LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
|
||||||
|
DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
|
||||||
|
THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
|
||||||
|
(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
|
||||||
|
OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
|
||||||
21
vendor/k8s.io/kubernetes/third_party/multiarch/qemu-user-static/LICENSE
generated
vendored
Normal file
21
vendor/k8s.io/kubernetes/third_party/multiarch/qemu-user-static/LICENSE
generated
vendored
Normal file
@@ -0,0 +1,21 @@
|
|||||||
|
The MIT License (MIT)
|
||||||
|
|
||||||
|
Copyright (c) 2015-2016 Manfred Touron
|
||||||
|
|
||||||
|
Permission is hereby granted, free of charge, to any person obtaining a copy
|
||||||
|
of this software and associated documentation files (the "Software"), to deal
|
||||||
|
in the Software without restriction, including without limitation the rights
|
||||||
|
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
|
||||||
|
copies of the Software, and to permit persons to whom the Software is
|
||||||
|
furnished to do so, subject to the following conditions:
|
||||||
|
|
||||||
|
The above copyright notice and this permission notice shall be included in all
|
||||||
|
copies or substantial portions of the Software.
|
||||||
|
|
||||||
|
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
||||||
|
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
||||||
|
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
|
||||||
|
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
|
||||||
|
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
|
||||||
|
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
|
||||||
|
SOFTWARE.
|
||||||
@@ -10,6 +10,8 @@ import (
|
|||||||
"k8s.io/apimachinery/pkg/api/errors"
|
"k8s.io/apimachinery/pkg/api/errors"
|
||||||
apivalidation "k8s.io/apimachinery/pkg/util/validation"
|
apivalidation "k8s.io/apimachinery/pkg/util/validation"
|
||||||
"k8s.io/client-go/tools/record"
|
"k8s.io/client-go/tools/record"
|
||||||
|
podshelper "k8s.io/kubernetes/pkg/apis/core/pods"
|
||||||
|
fieldpath "k8s.io/kubernetes/pkg/fieldpath"
|
||||||
|
|
||||||
"github.com/virtual-kubelet/virtual-kubelet/log"
|
"github.com/virtual-kubelet/virtual-kubelet/log"
|
||||||
"github.com/virtual-kubelet/virtual-kubelet/manager"
|
"github.com/virtual-kubelet/virtual-kubelet/manager"
|
||||||
@@ -328,8 +330,16 @@ loop:
|
|||||||
continue loop
|
continue loop
|
||||||
// Handle population from a field (downward API).
|
// Handle population from a field (downward API).
|
||||||
case env.ValueFrom != nil && env.ValueFrom.FieldRef != nil:
|
case env.ValueFrom != nil && env.ValueFrom.FieldRef != nil:
|
||||||
// TODO Implement the downward API.
|
|
||||||
// https://github.com/virtual-kubelet/virtual-kubelet/issues/123
|
// https://github.com/virtual-kubelet/virtual-kubelet/issues/123
|
||||||
|
vf := env.ValueFrom.FieldRef
|
||||||
|
|
||||||
|
runtimeVal, err := podFieldSelectorRuntimeValue(vf, pod)
|
||||||
|
if err != nil {
|
||||||
|
return res, err
|
||||||
|
}
|
||||||
|
|
||||||
|
res[env.Name] = runtimeVal
|
||||||
|
|
||||||
continue loop
|
continue loop
|
||||||
// Handle population from a resource request/limit.
|
// Handle population from a resource request/limit.
|
||||||
case env.ValueFrom != nil && env.ValueFrom.ResourceFieldRef != nil:
|
case env.ValueFrom != nil && env.ValueFrom.ResourceFieldRef != nil:
|
||||||
@@ -341,6 +351,23 @@ loop:
|
|||||||
return res, nil
|
return res, nil
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// podFieldSelectorRuntimeValue returns the runtime value of the given
|
||||||
|
// selector for a pod.
|
||||||
|
func podFieldSelectorRuntimeValue(fs *corev1.ObjectFieldSelector, pod *corev1.Pod) (string, error) {
|
||||||
|
internalFieldPath, _, err := podshelper.ConvertDownwardAPIFieldLabel(fs.APIVersion, fs.FieldPath, "")
|
||||||
|
if err != nil {
|
||||||
|
return "", err
|
||||||
|
}
|
||||||
|
switch internalFieldPath {
|
||||||
|
case "spec.nodeName":
|
||||||
|
return pod.Spec.NodeName, nil
|
||||||
|
case "spec.serviceAccountName":
|
||||||
|
return pod.Spec.ServiceAccountName, nil
|
||||||
|
|
||||||
|
}
|
||||||
|
return fieldpath.ExtractFieldPathAsString(pod, internalFieldPath)
|
||||||
|
}
|
||||||
|
|
||||||
// mergeEnvironments creates the final environment for a container by merging "envFrom" and "env".
|
// mergeEnvironments creates the final environment for a container by merging "envFrom" and "env".
|
||||||
// Values in "env" override any values with the same key defined in "envFrom".
|
// Values in "env" override any values with the same key defined in "envFrom".
|
||||||
// This is in accordance with what the Kubelet itself does.
|
// This is in accordance with what the Kubelet itself does.
|
||||||
|
|||||||
@@ -18,8 +18,12 @@ const (
|
|||||||
envVarName1 = "FOO"
|
envVarName1 = "FOO"
|
||||||
// envVarValue1 is a string meant to be used as the value of the "envVarName1" environment value.
|
// envVarValue1 is a string meant to be used as the value of the "envVarName1" environment value.
|
||||||
envVarValue1 = "foo_value"
|
envVarValue1 = "foo_value"
|
||||||
// envVarName1 is a string that can be used as the name of an environment value.
|
// envVarName2 is a string that can be used as the name of an environment value.
|
||||||
envVarName2 = "BAR"
|
envVarName2 = "BAR"
|
||||||
|
// envVarName3 is a string that can be used as the name of an environment value.
|
||||||
|
envVarName3 = "CHO"
|
||||||
|
// envVarName4 is a string that can be used as the name of an environment value.
|
||||||
|
envVarName4 = "CAR"
|
||||||
// invalidKey1 is a key that cannot be used as the name of an environment variable (since it starts with a digit).
|
// invalidKey1 is a key that cannot be used as the name of an environment variable (since it starts with a digit).
|
||||||
invalidKey1 = "1INVALID"
|
invalidKey1 = "1INVALID"
|
||||||
// invalidKey2 is a key that cannot be used as the name of an environment variable (since it starts with a digit).
|
// invalidKey2 is a key that cannot be used as the name of an environment variable (since it starts with a digit).
|
||||||
@@ -113,7 +117,7 @@ func TestPopulatePodWithInitContainersUsingEnv(t *testing.T) {
|
|||||||
LocalObjectReference: corev1.LocalObjectReference{
|
LocalObjectReference: corev1.LocalObjectReference{
|
||||||
Name: configMap1.Name,
|
Name: configMap1.Name,
|
||||||
},
|
},
|
||||||
Key: keyFoo,
|
Key: keyFoo,
|
||||||
// This scenario has been observed before https://github.com/virtual-kubelet/virtual-kubelet/issues/444#issuecomment-449611851.
|
// This scenario has been observed before https://github.com/virtual-kubelet/virtual-kubelet/issues/444#issuecomment-449611851.
|
||||||
Optional: nil,
|
Optional: nil,
|
||||||
},
|
},
|
||||||
@@ -156,7 +160,7 @@ func TestPopulatePodWithInitContainersUsingEnv(t *testing.T) {
|
|||||||
LocalObjectReference: corev1.LocalObjectReference{
|
LocalObjectReference: corev1.LocalObjectReference{
|
||||||
Name: configMap1.Name,
|
Name: configMap1.Name,
|
||||||
},
|
},
|
||||||
Key: keyFoo,
|
Key: keyFoo,
|
||||||
// This scenario has been observed before https://github.com/virtual-kubelet/virtual-kubelet/issues/444#issuecomment-449611851.
|
// This scenario has been observed before https://github.com/virtual-kubelet/virtual-kubelet/issues/444#issuecomment-449611851.
|
||||||
Optional: nil,
|
Optional: nil,
|
||||||
},
|
},
|
||||||
@@ -235,6 +239,164 @@ func TestPopulatePodWithInitContainersUsingEnv(t *testing.T) {
|
|||||||
})
|
})
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// TestPopulatePodWithInitContainersUsingEnv populates the environment of a pod with four containers (two init containers, two containers) using ".env".
|
||||||
|
// Then, it checks that the resulting environment for each container contains the expected environment variables.
|
||||||
|
func TestPopulatePodWithInitContainersUsingEnvWithFieldRef(t *testing.T) {
|
||||||
|
rm := testutil.FakeResourceManager(configMap1, configMap2, secret1, secret2)
|
||||||
|
er := testutil.FakeEventRecorder(defaultEventRecorderBufferSize)
|
||||||
|
|
||||||
|
// Create a pod object having two init containers and two containers.
|
||||||
|
// The containers' environment is to be populated both from directly-provided values and from keys in two configmaps and two secrets.
|
||||||
|
pod := &corev1.Pod{
|
||||||
|
ObjectMeta: metav1.ObjectMeta{
|
||||||
|
Namespace: namespace,
|
||||||
|
Name: "pod-0",
|
||||||
|
Labels: map[string]string{
|
||||||
|
"zone": "us-est-coast",
|
||||||
|
"cluster": "test-cluster1",
|
||||||
|
"rack": "rack-22",
|
||||||
|
},
|
||||||
|
Annotations: map[string]string{
|
||||||
|
"build": "two",
|
||||||
|
"builder": "john-doe",
|
||||||
|
},
|
||||||
|
},
|
||||||
|
Spec: corev1.PodSpec{
|
||||||
|
NodeName: "namenode",
|
||||||
|
ServiceAccountName: "serviceaccount",
|
||||||
|
InitContainers: []corev1.Container{
|
||||||
|
{
|
||||||
|
Env: []corev1.EnvVar{
|
||||||
|
{
|
||||||
|
Name: envVarName1,
|
||||||
|
ValueFrom: &corev1.EnvVarSource{
|
||||||
|
FieldRef: &corev1.ObjectFieldSelector{
|
||||||
|
APIVersion: "v1",
|
||||||
|
FieldPath: "spec.nodeName",
|
||||||
|
},
|
||||||
|
},
|
||||||
|
},
|
||||||
|
{
|
||||||
|
Name: envVarName2,
|
||||||
|
ValueFrom: &corev1.EnvVarSource{
|
||||||
|
FieldRef: &corev1.ObjectFieldSelector{
|
||||||
|
APIVersion: "v1",
|
||||||
|
FieldPath: "metadata.labels",
|
||||||
|
},
|
||||||
|
},
|
||||||
|
},
|
||||||
|
{
|
||||||
|
Name: envVarName3,
|
||||||
|
ValueFrom: &corev1.EnvVarSource{
|
||||||
|
FieldRef: &corev1.ObjectFieldSelector{
|
||||||
|
APIVersion: "v1",
|
||||||
|
FieldPath: "metadata.annotations",
|
||||||
|
},
|
||||||
|
},
|
||||||
|
},
|
||||||
|
{
|
||||||
|
Name: envVarName4,
|
||||||
|
ValueFrom: &corev1.EnvVarSource{
|
||||||
|
FieldRef: &corev1.ObjectFieldSelector{
|
||||||
|
APIVersion: "v1",
|
||||||
|
FieldPath: "spec.serviceAccountName",
|
||||||
|
},
|
||||||
|
},
|
||||||
|
},
|
||||||
|
},
|
||||||
|
},
|
||||||
|
},
|
||||||
|
Containers: []corev1.Container{
|
||||||
|
{
|
||||||
|
Env: []corev1.EnvVar{
|
||||||
|
{
|
||||||
|
Name: envVarName1,
|
||||||
|
ValueFrom: &corev1.EnvVarSource{
|
||||||
|
FieldRef: &corev1.ObjectFieldSelector{
|
||||||
|
APIVersion: "v1",
|
||||||
|
FieldPath: "spec.nodeName",
|
||||||
|
},
|
||||||
|
},
|
||||||
|
},
|
||||||
|
{
|
||||||
|
Name: envVarName2,
|
||||||
|
ValueFrom: &corev1.EnvVarSource{
|
||||||
|
FieldRef: &corev1.ObjectFieldSelector{
|
||||||
|
APIVersion: "v1",
|
||||||
|
FieldPath: "metadata.labels",
|
||||||
|
},
|
||||||
|
},
|
||||||
|
},
|
||||||
|
{
|
||||||
|
Name: envVarName3,
|
||||||
|
ValueFrom: &corev1.EnvVarSource{
|
||||||
|
FieldRef: &corev1.ObjectFieldSelector{
|
||||||
|
APIVersion: "v1",
|
||||||
|
FieldPath: "metadata.annotations",
|
||||||
|
},
|
||||||
|
},
|
||||||
|
},
|
||||||
|
{
|
||||||
|
Name: envVarName4,
|
||||||
|
ValueFrom: &corev1.EnvVarSource{
|
||||||
|
FieldRef: &corev1.ObjectFieldSelector{
|
||||||
|
APIVersion: "v1",
|
||||||
|
FieldPath: "spec.serviceAccountName",
|
||||||
|
},
|
||||||
|
},
|
||||||
|
},
|
||||||
|
},
|
||||||
|
},
|
||||||
|
},
|
||||||
|
},
|
||||||
|
}
|
||||||
|
|
||||||
|
// Populate the pod's environment.
|
||||||
|
err := populateEnvironmentVariables(context.Background(), pod, rm, er)
|
||||||
|
assert.NoError(t, err)
|
||||||
|
|
||||||
|
// Make sure that all the containers' environments contain all the expected keys and values.
|
||||||
|
assert.ElementsMatch(t, pod.Spec.InitContainers[0].Env, []corev1.EnvVar{
|
||||||
|
|
||||||
|
{
|
||||||
|
Name: envVarName1,
|
||||||
|
Value: "namenode",
|
||||||
|
},
|
||||||
|
{
|
||||||
|
Name: envVarName2,
|
||||||
|
Value: "cluster=\"test-cluster1\"\nrack=\"rack-22\"\nzone=\"us-est-coast\"",
|
||||||
|
},
|
||||||
|
{
|
||||||
|
Name: envVarName3,
|
||||||
|
Value: "build=\"two\"\nbuilder=\"john-doe\"",
|
||||||
|
},
|
||||||
|
{
|
||||||
|
Name: envVarName4,
|
||||||
|
Value: "serviceaccount",
|
||||||
|
},
|
||||||
|
})
|
||||||
|
|
||||||
|
assert.ElementsMatch(t, pod.Spec.Containers[0].Env, []corev1.EnvVar{
|
||||||
|
|
||||||
|
{
|
||||||
|
Name: envVarName1,
|
||||||
|
Value: "namenode",
|
||||||
|
},
|
||||||
|
{
|
||||||
|
Name: envVarName2,
|
||||||
|
Value: "cluster=\"test-cluster1\"\nrack=\"rack-22\"\nzone=\"us-est-coast\"",
|
||||||
|
},
|
||||||
|
{
|
||||||
|
Name: envVarName3,
|
||||||
|
Value: "build=\"two\"\nbuilder=\"john-doe\"",
|
||||||
|
},
|
||||||
|
{
|
||||||
|
Name: envVarName4,
|
||||||
|
Value: "serviceaccount",
|
||||||
|
},
|
||||||
|
})
|
||||||
|
}
|
||||||
|
|
||||||
// TestPopulatePodWithInitContainersUsingEnvFrom populates the environment of a pod with four containers (two init containers, two containers) using ".envFrom".
|
// TestPopulatePodWithInitContainersUsingEnvFrom populates the environment of a pod with four containers (two init containers, two containers) using ".envFrom".
|
||||||
// Then, it checks that the resulting environment for each container contains the expected environment variables.
|
// Then, it checks that the resulting environment for each container contains the expected environment variables.
|
||||||
func TestPopulatePodWithInitContainersUsingEnvFrom(t *testing.T) {
|
func TestPopulatePodWithInitContainersUsingEnvFrom(t *testing.T) {
|
||||||
|
|||||||
Reference in New Issue
Block a user